• Home
  • About
    • KKsDev photo

      KKsDev

      게임 프로그래머를 목표로 Unity, C#을 공부하고 있습니다.

    • Learn More
    • Email
    • Github
    • Steam
  • Posts
    • All Posts
    • All Tags
  • Projects

내일배움캠프 44일차 TIL

01 Aug 2023

Reading time ~1 minute

오늘 배운 내용

  1. Unity Scriptable Object

  2. MonoBehaviour를 상속하지 않는 클래스를 인스펙터 창에 띄우는 방법 , 클래스 직렬화

nbcbanner



Unity Scriptable Object

데이터를 저장하고 관리하기 위한 스크립트로 씬에 직접 배치되지 않고 리소스로서 사용된다.

주로 게임 설정 및 관리, 데이터 저장, 에디터 확장 에서 활용된다.


스크립터블 오브젝트 스크립트를 선언하면 유니티에서 해당 스크립터블 오브젝트 스크립트를 Create할 수 있다.

이것을 이용해서 같은 스크립터블 오브젝트를 가진 오브젝트들이 같은 데이터를 공유하게 된다.


이를 통해서 데이터의 중복을 방지하고 유지보수성을 높일 수 있고 메모리 관리에도 유리하다

MonoBehaviour를 상속하지 않는 클래스를 인스펙터 창에 띄우는 방법 , 클래스 직렬화

유니티에서 보통 클래스를 생성하면 Monobehaviour를 상속하게 된다.


MonoBehaviour를 상속한 클래스들의 특징은? Unity 게임 오브젝트의 컴포넌트로 동작하게 된다.

이를 통해서 해당 클래스는 Unity 엔전과 상호 작용할 수 있다.


그런데 만약 상호작용할 필요가 없는 그냥 데이터를 가지는 클래스들이라면?

굳이 상속할 필요가없게된다. 이러한 경우 그냥 일반적인 C# 클래스로 정의하게 되는데

이 경우에 [SerializeField]를 선언해도 인스펙터 창에서 볼 수 없게된다.


MonoBehaviour를 상속한 클래스는 Unity엔진에 의해서 자동으로 직렬화(Serializable)됩니다.

이는 Unity가 해당 객체의 상태를 관리하고 인스펙터 창에서 수정할 수 있게 하기 위함입니다.

하지만 일반 클래스는 자동으로 직렬화가 되지 않기 때문에 인스펙터 창에서 볼 수 없는 것이고,

일반 클래스에 [Serializable]를 붙혀준다면 인스펙터 창에서 C# 클래스도 볼 수 있게된다.



nbcthumbnail



TIL내일배움캠프스파르타 Share Tweet +1