美文网首页
编辑器扩展入门《二》

编辑器扩展入门《二》

作者: b36f744bdd4d | 来源:发表于2019-07-19 13:04 被阅读0次

    编辑器扩展入门《二》

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

    • PrefabUtility

      • 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了~

    相关文章

      网友评论

          本文标题:编辑器扩展入门《二》

          本文链接:https://www.haomeiwen.com/subject/mcbjlctx.html