Version: 2022.3

PrefabUtility.UnpackPrefabInstance

切换到手册
public static void UnpackPrefabInstance (GameObject instanceRoot, PrefabUnpackMode unpackMode, InteractionMode action);

参数

instanceRoot 要解压缩的预制件实例的根。
unpackMode 解压缩最外层根,还是完全解压缩。
action 用于此操作的交互模式。

描述

将给定的预制件实例解压,以便将其替换为预制件资源的内容,同时保留所有重载值。

给定对象必须是预制件实例的根。

预制件资源的内容是您在预制件模式下打开它时看到的对象。在 PrefabUnpackMode 为 OutermostRoot 时解压缩,会将预制件实例替换为该内容。在 PrefabUnpackMode 为 Completely 时解压缩,还将解压作为解压缩内容的一部分的任何预制件实例,因此最终的结果只不过是常规的游戏对象,而没有预制件实例。

常规预制件或模型预制件的内容总是在根位置有一个常规游戏对象,所以将其中之一解压缩后,在根位置(预制件实例在前面)就会留下一个常规游戏对象。

预制件变体的内容在根位置有一个基本预制件的实例,所以在 PrefabUnpackMode 为 OutermostRoot 时将预制件变体解压缩将留下一个基本预制件的实例(其中预制件变体实例在基本预制件之前)。

Unpacking throws an ArgumentException if the given object is not the root of a Prefab instance, or if it’s part of a Prefab Asset. This does not include Prefab contents opened in Prefab Mode.

InteractionMode 确定是否应该可以撤销该操作。