PrefabUtility.RecordPrefabInstancePropertyModifications

切换到手册
public static void RecordPrefabInstancePropertyModifications (Object targetObject);

参数

targetObject要处理的对象。

描述

指示记录对预制件实例所做的修改。

请注意,要让预制件实例记录更改,推荐的方法是使用 SerializedProperty 和 SerializedObject。这样可以让实例记录更改并自动包含撤消系统中的更改。

在对预制件的实例进行修改后调用此方法,以记录该实例的这些更改。如果不调用此方法,对实例所做的更改就会丢失。请注意,如果您不使用 SerializedProperty/SerializedObject,那么无论您是否调用此方法,对对象所做的更改都不会记录在撤消系统中。

另请参阅:SerializedObject SerializedProperty

// The following Editor script looks for an existing instance of the TheCube prefab, records the property
// modification and marks the scene as dirty so that the user can save the scene afterwards and keep
// the changes.
[MenuItem("TestPrefab/ModifyAndSaveInstance")]
static void ModifyCubeInstanceAndSave()
{
    GameObject cubeInstance = GameObject.Find("TheCube01");
    Undo.RecordObject(cubeInstance.transform, "Change scale");
    cubeInstance.transform.localScale = new Vector3(2, 2, 2);

// Notice that if the call to RecordPrefabInstancePropertyModifications is not present, // all changes to scale will be lost when saving the scene, and reopening the scene // would revert the scale back to its previous value. PrefabUtility.RecordPrefabInstancePropertyModifications(cubeInstance.transform);

// Optional step in order to save the scene changes permanently. EditorSceneManager.SaveScene(EditorSceneManager.GetActiveScene()); }
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961