版本: Unity 6 (6000.0)
语言英语
  • C#

EditorUtility.SetDirty

建议修改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法采纳所有提交,但我们确实会阅读用户提出的每一项修改建议,并在适用情况下进行更新。

关闭

提交失败

由于某些原因,您的修改建议无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public static void SetDirty(Object target);

参数

target 标记为脏的对象。

描述

target对象标记为脏。

当您想修改对象而不创建撤消条目,但仍确保更改被注册且不会丢失时,可以使用SetDirty。如果对象是场景的一部分,则场景被标记为脏。如果对象可能是预制实例的一部分,则您还需要调用PrefabUtility.RecordPrefabInstancePropertyModifications以确保创建预制覆盖。

如果您确实想要支持撤消,则不应调用SetDirty,而应在更改对象之前使用Undo.RecordObject,因为这将同时将对象标记为脏(或对象所属的场景,如果它是场景的一部分)并在编辑器中提供撤消条目。如果对象可能是预制实例的一部分,您也应该仍然调用PrefabUtility.RecordPrefabInstancePropertyModifications

对于ScriptableObject,如果您想注册更改并支持撤消,则同时调用SetDirtyUndo.RecordObject

当您创建用于操作对象的编辑器 UI(例如自定义编辑器以修改组件或资源上的序列化属性)时,如果可能,您应该使用SerializedProperty系统,使用SerializedObject.FindPropertySerializedObject.UpdateEditorGUILayout.PropertyFieldSerializedObject.ApplyModifiedProperties。这将自动将对象标记为脏,创建撤消条目,并确保在相关情况下创建预制覆盖。

其他资源:GetDirtyCountIsDirty