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

本文关键字:属性 list 元素 访问 单独 | 更新日期: 2023-09-27 18:07:00

我有一个类,它将包含包含各种游戏对象的多个列表。这些列表将在进一步的开发中由JSON脚本填充。

现在,我试图访问一个列表中的一个元素。我已经这样填写了我的班级:

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();

}

}

在shop manager类的列表中,我自己手动设置对象,因此我知道它们的名称。但是,虽然我可以获得正确返回的计数,但我无法访问此命名对象。

当我运行代码时,我得到一个指向下面一行的空引用:

 temp = primary.PrimaryWeapons.Where(obj => obj.gameObject.name == "DoorParts_1").SingleOrDefault();

此外,我甚至创建了另一个列表,将ShopManager类中的list属性的内容传递给这个临时列表。然而,这个列表填充了2个空位置。

我仍然不是100%使用这样的属性。尤其是用列表。有人能告诉我我到底做错了什么吗?

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

您没有在ShopManager中初始化对象。替换:

public GameObject gameObj1, gameObj2;
与这个:

public GameObject gameObj1 = new GameObject(), gameObj2 = new GameObject();

检查GameObject初始化。特别是gameObject领域。

primary.PrimaryWeapons.Where(obj => obj.gameObject.name == "DoorParts_1").SingleOrDefault();在null引用的情况下可能会失败:

  • primary为null
  • primary.PrimaryWeapons为null
  • obj.gameObject为null

前两个在代码中包含。因此,检查GameObject.gameObject字段是如何初始化的。

相关文章: