编辑器扩展入门《二》
前言:
- 在上一篇文章中,我们感受到了编辑器的魅力,也知道了编辑器扩展的一些用法,在顶部菜单栏添加一个菜单按钮,unity还提供了选中对象的api,所以接下来我们再扩展下我们的这个功能,使得它能够批量的保存我们的预设体。或者以后也可以扩展成对预设体统一的一些别的操作。
怎么做?
-
我们知道上一篇中已经实现可点击菜单按钮的事件,并且获取到了选中的游戏物体,接下来就需要在这些游戏物体里面判断是不是预设体,是的话就替换保存。
-
PrefabUtility.GetPrefabType(go); //判断是不是预设的实例,由此来判断是不是预设 PrefabUtility.GetPrefabParent(go); //获取到预设 PrefabUtility.FindPrefabRoot(go);//预设的根节点,用于替换 PrefabUtility.ReplacePrefab(oldPrefab, prefab);//替换保存</pre>
* 完整代码 * ``` [MenuItem("Tools/test", true)] private static bool Test() { foreach (GameObject go in Selection.gameObjects ) { var type = PrefabUtility.GetPrefabType(go); if(type == PrefabType.PrefabInstance) { var goPrefab = PrefabUtility.GetPrefabParent(go); if(goPrefab != null) { var preRoot = PrefabUtility.FindPrefabRoot(go); PrefabUtility.ReplacePrefab(preRoot, goPrefab); } } } } ```
总结:
- 这算是看到的编辑器扩展的用处了吧,这个功能可以接着扩展的,如果你想对预设做更多的批量操作,就可以类似的做法去实现,现在就可以对选中的预设进行apply了~
网友评论