Version: 2021.3

PrefabUtility.ApplyObjectOverride

切换到手册
public static void ApplyObjectOverride (Object instanceComponentOrGameObject, string assetPath, InteractionMode action);

参数

instanceComponentOrGameObject 要应用的预制件实例上的对象。
assetPath 要应用到的预制件资源的路径。
action 此操作的交互模式。

描述

将预制件实例组件或游戏对象上的所有重载属性应用于给定资源路径上的预制件资源。

此方法允许您将修改的属性值应用于现有的预制件。它对应了编辑器中的功能(如此处的用户手册中所述)。要使用此方法,必须首先修改现有预制件实例上的一个或多个属性值。

如果将游戏对象作为对象参数传递,则只在游戏对象本身之上应用重载(例如层、标签和静态标志),而不应用其组件或子游戏对象。如果将组件作为对象参数传递,则仅在该组件上应用重载。若要应用一个预制件的所有重载,可以使用 PrefabUtility.ApplyPrefabInstance

预制件实例上的已修改属性值是一种类型的实例重载。将修改的属性值应用到预制件的行为意味着修改的值成为预制件资源的一部分,并且不再是重载。

将修改的属性值应用于预制件资源时,必须提供资源路径作为参数。这是因为在某些情况下,可能将此更改应用于多个目标。例如,如果属于嵌套预制件的游戏对象中已修改属性值,可选择将更改应用到内部嵌套的预制件资源,还是应用到外部根预制件资源。因此,通过指定资源路径,可让 Unity 明确知晓此更改必须应用于哪个预制件资源。

用户手册中介绍了有关选择应用目标的更多信息。

另请参阅:PrefabUtility.ApplyAddedComponentPrefabUtility.ApplyAddedGameObjectPrefabUtility.ApplyPropertyOverridePrefabUtility.ApplyRemovedComponentPrefabUtility.ApplyPrefabInstance