제목이 다소 요란하죠? 그만큼 이 에셋을 사용하면 유니티 개발자들은 "나 코드좀 짠다!" 라는 말을 할 수 있습니다. 왜냐고요? 이 에셋은 Scriptable Object를 효율적으로 사용할 수 있게 아키텍쳐를 제공해주기 때문입니다! SOAP는 에셋이기 때문에 다른 Asset에서 참조할 수 있고 런타임 및 에디터에서 접근할 수 있습니다. SO를 사용하면 뭐가 좋냐고요?! 리소스 관리, 메모리 관리, 유니티에서 권장하는 Enter Play Mode까지 가능하다고요!!! 유니티 답답한 에디터 실행으로부터 해방! #Enter Play Mode Settings 움짤을 보시면 차이가 느껴지십니까? 좌측 움짤의 경우 컴파일 시간이 굉장히 긴 데 반면에, 우측 움짤은 에디터 플레이 시작 버튼을 누름과 동시에 바로 플..
CreateAssetMenu란? CreateAssetMenu는 특정 스크립트에서 새로운 어셋을 생성할 수 있는 메뉴 옵션을 제공해줍니다. 이를 통해 사용자가 유니티 에디터의 메뉴를 통해 쉽게 새로운 인스턴스를 만들 수 있게 됩니다. CreateAssetMenu 어트리뷰트(attribute)는 클래스 선언 바로 위에 위치해야 합니다. 예시 [CreateAssetMenu(fileName = "MonsterData", menuName = "MonsterScriptable/CreateMonsterData", order = int.MaxValue)] public class MonsterData: ScriptableObject { [SerializeField] private int hp; public int HP ..
ScriptableObject란 ScriptableObject는 클래스 인스턴스와는 별도로 대량의 데이터를 저장하는 데 사용할 수 있는 데이터 컨테이너입니다. ScriptableObject를 쓰는 이유는 다음과 같습니다. 기존 클래스는 내부 변수 하나 당 4Byte가 듭니다(변수에 따라 다름) . 총 4개의 변수가 사용된다 가정할 때, 4X4 = 16Byte가 메모리에 사용되게 됩니다. 만약 좀비라는 몬스터 프리팹이 1000마리를 일반클래스의 변수로 구현했다면 16 X 1000 = 16000Byte(16KB)가 메모리에 사용되게 됩니다. 16KB는 큰 값은 아니지만, 추후 변수가 추가됨에 따라 점점 메모리 소모량이 많아질 것입니다. 하지만, 스크립터블 오브젝트를 사용하면 좀비를 몇 백마리 사용하든 메모리..