查看: 998|回复: 0
打印 上一主题 下一主题

[其他] Unity场景内预设体一键Apply

[复制链接]
may    

8830

主题

81

听众

7万

积分

首席设计师

Rank: 8Rank: 8

纳金币
52336
精华
343

最佳新人 热心会员 灌水之王 活跃会员 突出贡献 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2018-12-31 19:14:10 |只看该作者 |倒序浏览

来自: PlayerA

一个场景下可能包含多个预设体,当美术修改预设体后,可能因为忘记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);
            }
        }
    }


分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-27 08:21 , Processed in 0.086281 second(s), 29 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部