prefabRoot | 用于查找所有应解包的开放场景中预制体实例的预制体资产的根游戏对象。 |
unpackMode | 是解包最外层的根还是完全解包。 |
action | 用于此操作的交互模式。 |
解包所有给定预制体资产根游戏对象在所有开放场景中的实例,以便所有实例都替换为预制体资产的内容,同时保留所有重写值。
预制体实例不会在关闭的场景中解包。此函数使用 PrefabUtility.FindAllInstancesOfPrefab 来确定要解包哪些实例,并对每个实例调用 PrefabUtility.UnpackPrefabInstance。
如果给定对象不是预制体资产的根游戏对象,解包会引发 ArgumentException。
using UnityEditor; using UnityEngine;
public class Example { public static void UnpackAllInstancesOfPrefab(string prefabPath) { var prefabAssetRoot = AssetDatabase.LoadMainAssetAtPath(prefabPath) as GameObject; if (prefabAssetRoot != null) { PrefabUtility.UnpackAllInstancesOfPrefab(prefabAssetRoot, PrefabUnpackMode.OutermostRoot, InteractionMode.UserAction); } } }