targetObject | 要处理的对象。 |
指示记录对预制件实例所做的修改。
请注意,要让预制件实例记录更改,推荐的方法是使用 SerializedProperty 和 SerializedObject。这样可以让实例记录更改并自动包含撤消系统中的更改。
在对预制件的实例进行修改后调用此方法,以记录该实例的这些更改。如果不调用此方法,对实例所做的更改就会丢失。请注意,如果您不使用 SerializedProperty/SerializedObject,那么无论您是否调用此方法,对对象所做的更改都不会记录在撤消系统中。
另请参阅:SerializedObject SerializedProperty。
using UnityEngine; using UnityEditor; using UnityEditor.SceneManagement; using UnityEngine.SceneManagement;
// 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. public class Example : MonoBehaviour { [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(SceneManager.GetActiveScene()); } }