【发布时间】:2017-06-11 03:03:44
【问题描述】:
当我在场景中选择一个项目时,它会调用 AddItem() 方法,该方法会将项目添加到列表中并从场景中销毁游戏对象,但是当我尝试访问列表中的游戏对象时,出现错误。
“MissingReferenceException:'GameObject' 类型的对象已被销毁,但您仍在尝试访问它。”
public class Inventory : MonoBehaviour
{
public List<GameObject> itemsGOInInventory = new List<GameObject>();
public void AddItem(GameObject itemToBeAdded)
{
itemsGOInInventory.Add(itemToBeAdded);
Destroy(itemToBeAdded);
}
public void FindItem(string name)
{
foreach (GameObject item in itemsGOInInventory)
{
if (item.GetComponent<Item>().itemName == "pistol")
{
Instantiate(item.GetComponent<Item>().itemObject, this.transform);
}
}
}
}
【问题讨论】:
-
"此方法会将项目添加到列表并从场景中销毁游戏对象,但是当我尝试访问列表中的游戏对象时会出现此错误".. .这回答了你的问题......你正试图访问一个被破坏的对象。当您销毁并尝试访问它时,您期望会发生什么?
-
Destroy() 相当于一个碎纸机。你不能把东西放进去然后保存它。这是一个吃蛋糕/吃它的问题。
标签: c# unity3d gameobject