Unity 2020.3.31
错误信息:OperationException: Destroying a GameObject inside a Prefab instance is not allowed.
错误分析:操作Prefab时,进行删除对象,需要Unpack Prefab或者打开Prefab进行操作。
解决方案:
private static bool UnpackPrefab(GameObject prefab)
{
if (!PrefabUtility.IsPartOfPrefabInstance(prefab.transform))
{
return false;
}
PrefabUtility.UnpackPrefabInstance(prefab, PrefabUnpackMode.OutermostRoot, InteractionMode.AutomatedAction);
return true;
}
private static void DestroyInPrefab(string prefabPath)
{
var rootObj = PrefabUtility.LoadPrefabContents(prefabPath);
// Destroy child objects or components on rootObj
PrefabUtility.SaveAsPrefabAsset(rootObj, prefabPath);
PrefabUtility.UnloadPrefabContents(rootObj);
}
本文介绍了Unity开发中遇到的错误:在Prefab实例中删除对象是不允许的。解决方法包括使用UnpackPrefabInstance函数解除Prefab关联,然后进行删除操作。提供的代码示例展示了如何正确地在Prefab中销毁对象的步骤。
1173

被折叠的 条评论
为什么被折叠?



