如何通过编码在Unity3D编辑器模式下更改预制件

时间:2015-09-01 06:25:25

标签: unity3d editor

我正在写一个MenuItem来对一系列预制件进行一些修改。我想要做的是在下面:

  1. 逐个实例化预制件
  2. 将修改应用于实例
  3. 使用PrefabUtility.ReplacePrefab
  4. 将实例保存到预制件中

    一段代码就是这样的:

    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);
    

    问题是targetPrefabnull

    并且层次结构中的代码生成的预制件实例称为xxxxx(Clone),这与我将预制件拖入层次结构时的实例不同,后者可以使用上述方法修改预制。

    所以任何人都可以提供帮助吗?

    Edit1:我的问题与此问题相同:Instantiate Prefab but not linked to the prefab,但解决方案不是我想要的

1 个答案:

答案 0 :(得分:0)

最后,我找到了解决方案:

GameObject sequenceObject = PrefabUtility.InstantiatePrefab(Resources.Load("Cinematic/" + sequenceName)) as GameObject;

这就是我想要的。