我正在循环搜索列表中的特定对象,然后将其存储在全局变量中。但是当我尝试获取它时,它总是为空并且游戏崩溃。
SpecialItem pickedItem; // (global variable)
void OnGUI()
{
for loop (all objects) // Idictionary<SpecialItem, string>
{
pickedItem = Instantiate(myItem) as SpecialItem;
Debug.Log("this->" + pickedItem.name.ToString()); // ERROR
}
}
Unity错误是:MissingReferenceException:类型的对象 'SpecialItem'已被销毁,但您仍在尝试访问 它
我认为这是因为foreach所以我用正常的循环替换它
有人能解释我为什么会这样吗?还有什么可以解决的?我最初的想法是使用对象本身,但似乎我不能这样,我试着复制。
答案 0 :(得分:1)
您确定该对象的类型是SpecialItem吗?
如果无法将对象强制转换为该类型,则“as”关键字将返回null。
Instantiate(myItem)的签名是什么?
答案 1 :(得分:1)
问题不在我提交给stackoverflow本身的代码中。
我有一个物理对象,我附加了SpecialItem脚本。当我选择它到库存时,我正在使用Destroy(gameObject)。
出于某种奇怪的原因,我仍然能够访问其中一些变量,如'Texture','ammount'或'slots'。但是一旦我试图访问'name',它就会崩溃,因为该对象已经被破坏了。
所以我已经取代了:
销毁(游戏物体);
代表
gameObject.SetActive(假);
并且错误消失了。