今天在写一个批量修改预制体的Editor脚本,在写给一个预制体添加子物体时,出现了Setting the parent of a transform which resides in a Prefab Asset is disabled to prevent data corruption的报错。
具体报错代码简化后如下:
GameObject parentPrefab = AssetDatabase.LoadAssetAtPath<GameObject>("Assets/Editor/Prefabs/parent.prefab");
GameObject childPrefab = AssetDatabase.LoadAssetAtPath<GameObject>("Assets/Editor/Prefabs/child.prefab");
childPrefab.transform.parent = parentPrefab.transform;
PrefabUtility.SavePrefabAsset

在使用Unity编辑器脚本尝试给Prefab添加子物体时,遇到错误'Setting the parent of a transform which resides in a Prefab Asset is disabled to prevent data corruption'。错误原因是不能对未实例化的Prefab进行transform修改。解决方案是先实例化Prefab,然后将子物体添加为父物体的子物体,并使用PrefabUtility.SaveAsPrefabAsset方法保存修改,最后删除实例。该文记录了解决此问题的详细步骤。

1419

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



