【发布时间】:2015-09-02 10:44:04
【问题描述】:
我正在写一个MenuItem 来对一系列预制件进行一些修改。我想做的是如下:
- 一个一个实例化预制件
- 将修改应用到实例
- 使用
PrefabUtility.ReplacePrefab将实例保存到预制件
一段代码是这样的:
GameObject sequenceObject = Instantiate(Resources.Load("Cinematic/"+sequenceName)) as GameObject;
Object targetPrefab = PrefabUtility.GetPrefabParent(sequenceObject);
// do some change to the sequenceObject
PrefabUtility.ReplacePrefab(sequenceObject, targetPrefab, ReplacePrefabOptions.ConnectToPrefab);
问题是targetPrefab 是null
并且Hierarchy中代码生成的prefab的实例称为xxxxx(Clone),这与我将prefab拖入Hierarchy时不同,后者可以使用上述方法修改prefab。
所以有人可以帮忙吗?
Edit1:我的问题和这个问题一样:Instantiate Prefab but not linked to the prefab,但解决方案不是我想要的
【问题讨论】:
-
您的 Prefab 是否位于 Resources 文件夹下?否则,您必须使用 AssetDatabase 类加载它。
-
@JeanLuc 是的,它在 Resources 文件夹下,并且在我点击我写的
MenuItem后,它的克隆实例已经出现在层次结构中 -
@JeanLuc 也许你可以检查我的编辑,我的问题和他一样
-
哦,如果您想修改原始预制件,您不应该使用 Instantiate。
-
@JeanLuc 那我应该用什么?