【发布时间】:2017-01-17 14:35:18
【问题描述】:
我想更改与我的对象playerPawn 关联的预制件。我试着用这段代码来做:
int i = 0;
PrefabUtility.DisconnectPrefabInstance(this.playerPawn);
PrefabUtility.ConnectGameObjectToPrefab (this.playerPawn, this.playerPawnPrefabs [i]);
Debug.Log(this.playerPawnPrefabs[i]);
PrefabUtility.ResetToPrefabState(this.playerPawn);
但是,最后一行抛出这个错误:
MissingReferenceException:“GameObject”类型的对象已被 已销毁,但您仍在尝试访问它。你的脚本应该 检查它是否为空,或者您不应该销毁该对象。
Debug.Log() 告诉我 this.playerPawnPrefabs[i] 包含我期待的游戏对象,所以我不明白错误来自哪里。
【问题讨论】:
-
表示游戏对象已被销毁。在每个 PrefabUtility-usage 之间尝试 debug.log:ging this.playerPawn?
-
使用
Debug.Log(this.playerPawn)告诉我游戏对象在调用ConnectGameObjectToPrefab后被销毁。 -
你确定
this.playerPawnPrefabs [i]不为空吗? -
是的,我确定。但是等一下,我正在尝试另一种方法来做到这一点。