오늘 배운 내용
-
Unity Scriptable Object
-
MonoBehaviour
를 상속하지 않는 클래스를 인스펙터 창에 띄우는 방법 , 클래스 직렬화
Unity Scriptable Object
데이터를 저장하고 관리하기 위한 스크립트로 씬에 직접 배치되지 않고 리소스로서 사용된다.
주로 게임 설정 및 관리, 데이터 저장, 에디터 확장 에서 활용된다.
스크립터블 오브젝트 스크립트를 선언하면 유니티에서 해당 스크립터블 오브젝트 스크립트를 Create할 수 있다.
이것을 이용해서 같은 스크립터블 오브젝트를 가진 오브젝트들이 같은 데이터를 공유하게 된다.
이를 통해서 데이터의 중복을 방지하고 유지보수성을 높일 수 있고 메모리 관리에도 유리하다
MonoBehaviour
를 상속하지 않는 클래스를 인스펙터 창에 띄우는 방법 , 클래스 직렬화
유니티에서 보통 클래스를 생성하면 Monobehaviour를 상속하게 된다.
MonoBehaviour를 상속한 클래스들의 특징은? Unity 게임 오브젝트의 컴포넌트로 동작하게 된다.
이를 통해서 해당 클래스는 Unity 엔전과 상호 작용할 수 있다.
그런데 만약 상호작용할 필요가 없는 그냥 데이터를 가지는 클래스들이라면?
굳이 상속할 필요가없게된다. 이러한 경우 그냥 일반적인 C# 클래스로 정의하게 되는데
이 경우에 [SerializeField]를 선언해도 인스펙터 창에서 볼 수 없게된다.
MonoBehaviour를 상속한 클래스는 Unity엔진에 의해서 자동으로 직렬화(Serializable)
됩니다.
이는 Unity가 해당 객체의 상태를 관리하고 인스펙터 창에서 수정할 수 있게 하기 위함입니다.
하지만 일반 클래스는 자동으로 직렬화가 되지 않기 때문에 인스펙터 창에서 볼 수 없는 것이고,
일반 클래스에 [Serializable]를 붙혀준다면 인스펙터 창에서 C# 클래스도 볼 수 있게된다.