编辑器扩展入门《二》

编辑器扩展入门《二》

前言:
  • 在上一篇文章中,我们感受到了编辑器的魅力,也知道了编辑器扩展的一些用法,在顶部菜单栏添加一个菜单按钮,unity还提供了选中对象的api,所以接下来我们再扩展下我们的这个功能,使得它能够批量的保存我们的预设体。或者以后也可以扩展成对预设体统一的一些别的操作。
怎么做?
  • 我们知道上一篇中已经实现可点击菜单按钮的事件,并且获取到了选中的游戏物体,接下来就需要在这些游戏物体里面判断是不是预设体,是的话就替换保存。

  • PrefabUtility

    • PrefabUtility.GetPrefabType(go); //判断是不是预设的实例,由此来判断是不是预设
      PrefabUtility.GetPrefabParent(go); //获取到预设
      PrefabUtility.FindPrefabRoot(go);//预设的根节点,用于替换
      PrefabUtility.ReplacePrefab(oldPrefab, prefab);//替换保存
    *   完整代码
    
      *  
       ``` 
        [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了~

你可能感兴趣的:(编辑器扩展入门《二》)