gpt4 book ai didi

c# - List.Count 引发空引用异常

转载 作者:行者123 更新时间:2023-11-30 20:35:38 25 4
gpt4 key购买 nike

我正在 Unity 中创建 2D 宇宙飞船游戏。我有一个名为“Player”的对象,并附有此脚本。在脚本中,我用这个类代表玩家的飞船:

public class Ship : MonoBehaviour 
{
public List<Weapon> weaponsList;

void Start()
{
weaponsList = new List<Weapon>();
weaponsList.Add(new Weapon());
weaponsList.Add(new Weapon());
}
}

这个类(在同一脚本内)代表武器:

public class Weapon
{
//properties here
}

现在,当我尝试使用此代码(来自不同的脚本)引用 Wea​​ponsList 来获取 List.Count 时,它会抛出 NullReferenceException,表示对象引用未设置为对象的实例:

Ship ship = GameObject.Find("Player").GetComponent<Ship>();
if (ship.weaponsList.Count >=2)
{
//do stuff
}

但是我尝试访问的任何其他船舶属性(property)都可以正常工作。有人可以帮忙吗?如果您需要其他上下文或代码,请告诉我,我将进行必要的编辑。

编辑: start 方法对于 Unity 来说是特殊的,并且在脚本初始化时始终默认调用。

最佳答案

要避免此错误将构造函数添加到您的类中

public class Ship : MonoBehaviour 
{
public Ship()
{
weaponsList = new List<Weapon>();
}
public List<Weapon> weaponsList;

void Start()
{
weaponsList = new List<Weapon>();
weaponsList.Add(new Weapon());
weaponsList.Add(new Weapon());
}
}

关于c# - List.Count 引发空引用异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37712092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com