版本:Unity 6 (6000.0)
语言英语
  • C#

PrefabUtility.UnpackAllInstancesOfPrefab

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法采纳所有投稿,但我们确实会阅读用户提出的每条建议更改,并在适用的情况下进行更新。

关闭

提交失败

由于某种原因,您建议的更改无法提交。请再过几分钟<a>尝试</a>。感谢您花时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public static void UnpackAllInstancesOfPrefab(GameObject prefabRoot, PrefabUnpackMode unpackMode, InteractionMode action);

参数

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); } } }