이전 강의에 이어, 이번에는 데이터 타입에 대해 알아 보겠습니다.
유니티에서는 C#의 기본 데이터 타입 외에도 유니티 특유의 데이터 타입이 존재합니다. 이러한 데이터 타입은 유니티에서만 사용되며, 게임 개발에 필수적인 요소들을 포함합니다.
GameObject monster;
예를 들어, 유니티의 게임 오브젝트를 변수에 담기 위해서는 ‘GameObject’라는 데이터 타입으로 변수를 선언해야 합니다. 이를 통해 씬에 존재하는 게임 오브젝트를 변수에 할당할 수 있습니다.
다음으로, 유니티의 모든 게임 오브젝트가 가지고 있는 ‘Transform’ 컴포넌트를 변수에 담을 수 있습니다. 이를 위해 ‘Transform’ 데이터 타입을 사용합니다.
Transform myTransform;
또한, 물리 시뮬레이션에 사용되는 ‘Rigidbody’ 컴포넌트도 ‘Rigidbody’ 데이터 타입의 변수에 할당할 수 있습니다.
Rigidbody body;
마찬가지로 충돌 감지에 사용되는 ‘Collider’ 컴포넌트도 ‘Collider’ 데이터 타입으로 할당될 수 있습니다.
Collider myCollider;
유니티 고유의 데이터 타입을 변수에 할당하는 것은 단순히 데이터를 변수 안에 복사해 넣는 것이 아니라, 해당 데이터에 직접 접근할 수 있는 방법을 제공하는 것입니다.
이는 윈도우에서 파일에 대한 바로가기 아이콘을 생성하는 것과 비슷합니다.

조금 깊이 들어가 보자면, 유니티에서 변수에 게임 오브젝트를 할당한다는 것은 해당 오브젝트의 메모리 상 주소를 변수에 저장한다는 의미입니다.
예를 들어, ‘GameObject monster = GameObject.Find(“Monster”);’와 같은 코드는 씬에 존재하는 ‘Monster’라는 이름의 게임 오브젝트를 찾아서 그 메모리 주소를 ‘monster’ 변수에 저장합니다.

이것을 ‘참조한다’고 표현합니다. 여러 개의 변수가 하나의 데이터를 참조할 수 있으며, 이는 하나의 데이터에 대한 메모리 주소를 여러 변수가 공유한다는 것을 의미합니다.
이러한 참조 변수를 사용함으로써, 예를 들어 메모리 주소 3000번에 저장된 ‘Monster’ 데이터를 여러 변수가 가리킬 수 있습니다.

이는 윈도우 바탕화면의 여러 단축 아이콘이 하나의 파일을 가리키는 것과 유사합니다.
위의 예시에서, monster, thisMon, yourMon, tempMon 이라는 4개의 변수들은 모두 같은 메모리 주소를 가리키고 있으며, 이를 통해 하나의 데이터를 여러 방식으로 활용할 수 있습니다.
이 내용에 대해 더 자세한 설명은 이후에 제공될 것입니다. 이러한 유니티의 고유 데이터 타입과 참조 변수의 개념을 이해하면, 유니티에서 C# 프로그래밍을 할 때 많은 도움이 될 것입니다.
더 공부할 자료
스크립터블 오브젝트를 능숙하게 사용하는 능력은 이제 유니티 게임 개발에 필수적으로 요구되고 있습니다.
특히 AI 코딩 시대가 되면서 데이터와 코드를 분리해서 작업하는 방식의 중요성이 더 커졌습니다. 코드를 더 작게, 기능별로 쪼개어 작성해야 관리가 편하기 때문입니다.
"유니티 6 스크립터블 오브젝트: 기초에서 활용까지"는 유니티 입문 단계를 끝내고 좀 더 심화된 지식을 익히고자 하는 프로그래머를 대상으로 쓰여진 책입니다. 책 내용은 다음 링크를 참고하시기 바랍니다.