Posts 유니티 - Undo
Post
Cancel

유니티 - Undo

Note


  • 필드의 값 변경, 리스트나 딕셔너리의 구성요소 변경 : RecordeObject(컴포넌트, "")

  • 커스텀 에디터에서 대상의 필드를 Undo에 등록하려면, 반드시 해당 필드가 직렬화되어야 한다.


Memo


1. 다른 동작에 Undo 등록

1
2
3
4
5
6
// 이름 변경, 기타 등등 수행하기 직전에 호출
// 주의 : 게임오브젝트의 변경사항은 트랜스폼이 아니라 게임오브젝트를 넣어야 함
Undo.RecordObject(target, "Action");

// 오브젝트 생성 직후에 호출
Undo.RegisterCreatedObjectUndo(targetGameObject, "Create New");


2. Undo를 통해 직접 기능 수행

1
2
3
4
5
6
7
8
// 컴포넌트 추가
Undo.AddComponent<ComponentType>(targetGameObject);

// 오브젝트 파괴 및 Undo 등록
Undo.DestroyObjectImmediate(targetGameObject);

// 부모 변경 및 Undo 등록
Undo.SetTransformParent(targetTransform, parentTransform, "Change Parent");

3. 커스텀 에디터에서 필드 Undo 등록

1
2
3
4
5
// 1. Record Undo
Undo.RecordObject(m, "Change Mesh Name");

// 2. Draw Field
m.meshName = EditorGUILayout.TextField("Mesh Name", m.meshName);


References


This post is licensed under CC BY 4.0 by the author.