Unity 에디터 전용 함수로,
오브젝트가 변경되었음을 에디터에게 명시적으로 알려서 저장 대상에 포함시키는 역할을 한다.
Unity 에디터에서는 Inspector, SerializedProperty 등을 통해 값이 바뀌면 자동으로 수정됨을 감지한다.
하지만 코드로 직접 값을 변경하면 Unity가 저장해야 할 사항을 인식하지 못하는 경우가 있다.
예를 들어 Editor 스크립트에서 값을 수정하거나 코드로 ScriptableObject의 값을 수정할 때
EditorUtility.SetDirty()를 호출해야 한다.
예시
if(GUILayout.Button("레벨 +1"))
{
myData.level++;
EditorUtility.SetDirty(myData);
}
EditorUtility.SetDirty() 함수는 "에셋이 변경되었음" 표시만 하고 바로 디스크에 저장까지 하지 않는다.
실제 저장까지 하려면 다음과 같이 AssetDatabase.SaveAssets()를 호출해야 한다.
EditorUtility.SetDirty(myData);
AssetDatabase.SaveAssets();