unity 动态applyprefab

 static void PrefabApply(GameObject obj)
    {
        PrefabType pType = PrefabUtility.GetPrefabType(obj);
        if (pType != PrefabType.PrefabInstance)
            return;

        //这里必须获取到prefab实例的根节点,否则ReplacePrefab保存不了
        GameObject prefabGo = GetPrefabInstanceParent(obj);
        UnityEngine.Object prefabAsset = null;
        if (prefabGo != null)
        {
            prefabAsset = PrefabUtility.GetPrefabParent(prefabGo);
            if (prefabAsset != null)
            {
                PrefabUtility.ReplacePrefab(prefabGo, prefabAsset, ReplacePrefabOptions.ConnectToPrefab);
            }
        }
        AssetDatabase.SaveAssets();
    }

你可能感兴趣的:(知识)