Version: 2019.1

PrefabUtility.ApplyObjectOverride

Switch to Manual
public static void ApplyObjectOverride (Object instanceComponentOrGameObject, string assetPath, InteractionMode action);

Parameters

instanceComponentOrGameObjectThe object on the Prefab instance to apply.
assetPathThe path of the Prefab Asset to apply to.
actionThe interaction mode for this action.

Description

Applies all overridden properties on a Prefab instance component or GameObject to the Prefab Asset at the given asset path.

This method allows you to apply modified property values to an existing Prefab. It mirrors the functionality in the editor, described in the user manual here. To use this method, you must first modify one or more property values on an existing Prefab instance.

If you pass a GameObject as the object parameter, only the overrides on the GameObject itself are applied (such as layer, tag, and static flags); not its components or child GameObjects. If you pass a Component as the object parameter, only the overrides on that Component are applied. To apply all overrides of a Prefab, you can use PrefabUtility.ApplyPrefabInstance.

Modified property values on a Prefab instance are a type of Instance Override. The act of applying the modified property values to the Prefab means the modifed values become part of the Prefab Asset, and are no longer overrides.

When applying modified property values to a Prefab Asset, you must supply the asset path as a parameter. This is because there are some situations where there are multiple possible targets to apply the change to. For example, if the property values have been modified on a GameObject that is part of a nested Prefab, you may have the choice of applying the change to the inner nested Prefab Asset, or to the outer root Prefab Asset. Therefore, by specifying the asset path, you make it clear to Unity which Prefab Asset the change must be applied to.

You can read more in the user manual about the choice of apply targets.

See Also: PrefabUtility.ApplyAddedComponent, PrefabUtility.ApplyAddedGameObject, PrefabUtility.ApplyPropertyOverride, PrefabUtility.ApplyRemovedComponent, PrefabUtility.ApplyPrefabInstance.

Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961