PrefabUtility.ApplyPropertyOverride

切换到手册
public static void ApplyPropertyOverride (SerializedProperty instanceProperty, string assetPath, InteractionMode action);

参数

instanceProperty表示要应用的属性的 SerializedProperty。
assetPath要应用到的预制件资源的路径。
action此操作的交互模式。

描述

将预制件实例上的单个重载属性应用于给定资源路径上的预制件资源。

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

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

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

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

请注意,可以将默认重载属性应用于此方法,这不像其他应用方法(不会应用默认重载属性)。

如果属性是数组元素,并且由于数组更短而在预制件资源中不存在相应的数组元素,则 ApplyPropertyOverride 将应用整个数组。如果 InteractionMode 设置为 UserAction,Unity 显示一个对话框。在此对话框中,可以选择要继续还是取消。

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