游戏蛮牛学习群(纯技术交流,不闲聊):539178957
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

首页   >   博客   >   PlayerA

Unity场景内预设体一键Apply 热度 2

2018-7-31 16:40
0 个评论 | 阅读 106 | 收藏 | 举报
一个场景下可能包含多个预设体,当美术修改预设体后,可能因为忘记apply提交svn导致很多不必要的麻烦。下面介绍一键apply场景下所有预设体的方法。
[MenuItem("Extend/场景工具/预制体一键Apply")]
    public static void OnekeyApply()
    {
        Scene scene = SceneManager.GetActiveScene();
        foreach (GameObject go in scene.GetRootGameObjects())
        {
            ApplyByRoot(go);
        }
        EditorSceneManager.SaveScene(EditorSceneManager.GetActiveScene());
    }

    private static void ApplyByRoot(GameObject root)
    {
        PrefabType type = PrefabUtility.GetPrefabType(root);
        if (type == PrefabType.PrefabInstance || type == PrefabType.DisconnectedPrefabInstance)
        {
            string path = AssetDatabase.GetAssetPath(PrefabUtility.GetPrefabParent(root));
            //CreateNew(root,path);
            PrefabUtility.ReplacePrefab(root, PrefabUtility.GetPrefabParent(root), ReplacePrefabOptions.ConnectToPrefab);
        }
        else
        {
            for(int i =0;i < root.transform.childCount;i++)
            {
                ApplyByRoot(root.transform.GetChild(i).gameObject);
            }
        }
    }
2 0

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册帐号
返回顶部