纳金网

标题: Unity场景内预设体一键Apply [打印本页]

作者: may    时间: 2018-12-31 19:14
标题: Unity场景内预设体一键Apply

来自: 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);
            }
        }
    }







欢迎光临 纳金网 (http://rs.narkii.com/club/) Powered by Discuz! X2.5