커스텀 에디터에서 오브젝트의 에디팅에 다양한 확장성을 부여하기 위해
현재 유니티에서 사용하고 있는 컴포넌트 시스템을 유사하게 구현하였다.
유니티 에디터와 거의 유사한 오브젝트 커스터마이징을 수행하기 위해서는 오브젝트와 컴포넌트를 분리시키고, 이에 대한 에디팅 방식을 각각 구현해야 하였다.
대략적인 에디팅 사이클은 다음과 같았다.
이를 충족하기 위해 다음과 같이 클래스를 작성하였다.
모든 에디팅 가능한 개체에 붙어있는 인터페이스이다.
프로퍼티
함수
오브젝트는 그 오브젝트가 소유하고 있는 전체 컴포넌트들의 리스트를 갖고 있다.
또한 해당 오브젝트들이 실제로 작동할 수 있도록 모노비헤이비어 함수들 또한 갖고 있다.
컴포넌트 스크립트의 모노비헤이비어 함수는 오브젝트에서 실행된다.
컴포넌트 UI는 UI 매니저에서 각각의 컴포넌트에 대한 UI Prefab을 갖고 있다가
사용자가 오브젝트를 Select
할 시 오브젝트가 갖고 있는 컴포넌트들에 대한 프리팹을 생성하고, 해당 컴포넌트와 연동시킨다.
오브젝트 매니저에서 각각의 오브젝트와 컴포넌트에 대한 데이터들을 오브젝트 ID를 키로 하는 딕셔너리에 저장해두고, 이를 저장 및 불러오기하여 사용한다.