从单独的类访问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%使用这样的属性。尤其是用列表。有人能告诉我我到底做错了什么吗?
您没有在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
字段是如何初始化的。