我有一个类将包含多个包含各种游戏对象的列表。这些列表将由开发中的JSON脚本填充。
现在,我正在尝试访问1个列表中的1个元素。我已经把我的课程填满了:
public class ShopManager : MonoBehaviour
{
public List<GameObject> primaryWeapons = new List<GameObject>();
public List<GameObject> PrimaryWeapons
{
get { return primaryWeapons; }
}
public GameObject gameObj1, gameObj2;
// Use this for initialization
void Start ()
{
FillList();
}
public void FillList()
{
primaryWeapons.Add(gameObj1);
primaryWeapons.Add(gameObj2);
}
}
在我的第二堂课中,我正试图访问我在列表中放置的一个游戏对象。这就是我到目前为止:
ShopManager primary;
public GameObject temp;
public List<GameObject> tmpList;
void Awake()
{
primary = new ShopManager();
primary.FillList();
tmpList= new List<GameObject>();
}
// Use this for initialization
void Start()
{
for (int i = 0; i < primary.PrimaryWeapons.Count; i++)
{
tmpList.Add(primary.PrimaryWeapons[i]);
}
Debug.Log(primary.PrimaryWeapons.Count);
}
public void SelectWeapon1()
{
temp = primary.PrimaryWeapons.Where(obj => obj.gameObject.name == "DoorParts_1").SingleOrDefault();
}
}
在我的商店经理课程列表中,我自己手动设置对象,所以我知道它们的名称。但是,虽然我可以正确返回计数,但我无法访问此命名对象。
当我运行代码时,我得到一个指向以下行的空引用:
temp = primary.PrimaryWeapons.Where(obj => obj.gameObject.name == "DoorParts_1").SingleOrDefault();
另外我甚至创建了另一个列表,其中包含将ShopManager
类中的List属性中的内容传递给此临时值的想法。但是,此列表填充了2个空位置。
我仍然没有100%使用这样的属性。特别是列表。有人可以告诉我这是错的吗?
答案 0 :(得分:0)
您没有在ShopManager中初始化对象。 替换这个:
public GameObject gameObj1, gameObj2;
有了这个:
public GameObject gameObj1 = new GameObject(), gameObj2 = new GameObject();
答案 1 :(得分:0)
检查GameObject
初始化。特别是gameObject
字段。
primary.PrimaryWeapons.Where(obj => obj.gameObject.name == "DoorParts_1").SingleOrDefault();
在几个条件下可能会因空引用而失败:
primary
为空primary.PrimaryWeapons
为空obj.gameObject
为空您的代码中包含前两个内容。因此,请检查GameObject.gameObject
字段的初始化方式。