为什么C#写unity脚本空引用异常?
MyWayLine一个类
public class MyWayLine
{
public Vector3[] WayPoint { get; set; }
}
我写一个myWays = new MyWayLine[transform.childCount];
直接对myWays[i].point赋值会空引用异常
需要:
myw = new MyWayLine();
myw.WayPoint = new Vector3[road.transform.childCount];
myWays[i] = myw;
加一个myw衔接,这样才能对myWays[i].point赋值。为什么啊?
因为你只是创建了一个一定长度的数组,但数组里的元素没有初始化
【以下回答由 GPT 生成】
这个问题出现的原因是因为在创建myWays
数组后,数组中的每个元素都是null
,即引用为空。所以在直接访问myWays[i].WayPoint
时会导致空引用异常。
解决这个问题的方法是,在访问myWays[i].WayPoint
之前,先创建一个MyWayLine
对象并将其赋值给myWays[i]
,然后再为myWays[i].WayPoint
赋值。这样就不会出现空引用异常了。
以下是具体的代码解决方案:
myWays = new MyWayLine[transform.childCount];
for (int i = 0; i < myWays.Length; i++)
{
myWays[i] = new MyWayLine(); // 创建MyWayLine对象,并赋值给myWays[i]
myWays[i].WayPoint = new Vector3[road.transform.childCount]; // 为myWays[i].WayPoint赋值
}
这样,在为myWays[i].WayPoint
赋值之前,先为myWays[i]
创建一个对象,就不会再出现空引用异常了。