target | 标记为脏的对象。 |
将target
对象标记为脏。
当您想修改对象而不创建撤消条目,但仍确保更改被注册且不会丢失时,可以使用SetDirty。如果对象是场景的一部分,则场景被标记为脏。如果对象可能是预制实例的一部分,则您还需要调用PrefabUtility.RecordPrefabInstancePropertyModifications以确保创建预制覆盖。
如果您确实想要支持撤消,则不应调用SetDirty,而应在更改对象之前使用Undo.RecordObject,因为这将同时将对象标记为脏(或对象所属的场景,如果它是场景的一部分)并在编辑器中提供撤消条目。如果对象可能是预制实例的一部分,您也应该仍然调用PrefabUtility.RecordPrefabInstancePropertyModifications。
对于ScriptableObject,如果您想注册更改并支持撤消,则同时调用SetDirty和Undo.RecordObject。
当您创建用于操作对象的编辑器 UI(例如自定义编辑器以修改组件或资源上的序列化属性)时,如果可能,您应该使用SerializedProperty系统,使用SerializedObject.FindProperty、SerializedObject.Update、EditorGUILayout.PropertyField和SerializedObject.ApplyModifiedProperties。这将自动将对象标记为脏,创建撤消条目,并确保在相关情况下创建预制覆盖。
其他资源:GetDirtyCount、IsDirty。