C#写unity脚本空引用异常

为什么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]创建一个对象,就不会再出现空引用异常了。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^