从单独的类访问list属性中的元素。

时间:2015-08-09 15:04:21

标签: c# list properties

我有一个类将包含多个包含各种游戏对象的列表。这些列表将由开发中的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%使用这样的属性。特别是列表。有人可以告诉我这是错的吗?

2 个答案:

答案 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字段的初始化方式。