Unity:销毁属于预制件的游戏对象

时间:2021-07-28 08:08:53

标签: unity3d destroy gameobject prefab

控制台向我显示此错误:

Cannot destroy GameObject that is part of a prefab instance. UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)

我很困惑。日志不会说明涉及哪个预制件或游戏对象。 你能帮我吗?

非常感谢您的回答!

2 个答案:

答案 0 :(得分:0)

很多时候,当您编辑预制件时,您会注意到其中一些可能是蓝色的,而另一些则没有颜色。蓝色表示它们保持对项目中原始预制件的引用,并且它们不是副本,因此对它们所做的任何更改都将对原始预制件本身进行,因此副本(克隆)来自的原始预制件由。

为避免这种情况,您需要 unpack 预制件,以便您操作副本而不是原始引用。

该错误可能是由于您正在销毁一些未解压的预制件,因此无法被运行时 GameObject.Destroy 销毁,即从场景中销毁克隆副本。

答案 1 :(得分:0)

看起来您试图破坏未实例化到场景中的部分预制件。如果您需要修改编辑器脚本中的某些预制件,请参阅 PrefabUtility,但请注意,此类只能从 UnityEditor 访问。

否则请仔细检查您的代码,也许您在预制实例化后使用了错误的对象引用。