앞의 강의에 이어, 이번에는 참조 타입 변수의 사용 방법을 보여드리기 위한 예제를 만들어 보겠습니다.

먼저, 새 씬(Scene)을 생성하고, 이 안에 ‘큐브’ 게임 오브젝트를 추가하겠습니다. 

그런 다음 빈 게임 오브젝트를 추가로 하나 더 만들겠습니다.

이렇게 만든 빈 게임오브젝트의 이름을 ‘SampleCode’라고 하겠습니다.

이제 상단의 Assets 메뉴를 이용하여 C# 스크립트 파일을 만들겠습니다.

다음으로 이름을 ‘SampleScript’라고 변경한 뒤, 드래그 앤 드롭으로 이 스크립트 파일을 위의 SampleCode 라는 이름의 게임 오브젝트에 추가하겠습니다. 

이 때 큐브(Cube)가 아니라 SampleCode 라는 게임 오브젝트로 드래그 한다는 점을 잊지 마시기 바랍니다.

이제 이 SampleScript 라는 스크립트를 통해 참조 타입 변수를 다루는 방법을 보여드리겠습니다.

먼저 SampleScript 를 더블클릭해서 비주얼 스튜디오를 열겠습니다.

이제 Start() 함수 안에서, ‘GameObject’ 타입의 네 개의 변수를 선언하고 ‘Find’ 메서드를 사용하여 현재 씬에 있는 ‘큐브(Cube)’라는 게임 오브젝트를 찾아 이 네 개의 변수에 할당하겠습니다. 

이렇게 하면, ‘monster’, ‘thisMon’, ‘yourMon’, ‘tempMon’이라는 네 개의 변수들이 모두 ‘Cube’라는 이름의 게임 오브젝트를 참조하게 됩니다.

이제 ‘monster’ 변수를 사용하여 큐브 오브젝트의 이름을 ‘Orc’로 변경해보겠습니다.

앞에서 작성한 4개의 명령문 아래에 다음의 코드를 작성해 넣습니다.

이처럼 ‘monster.name = “Orc”;’와 같이 작성하면, 큐브 오브젝트의 이름이 기존의 ‘Cube’에서 ‘Orc’로 바뀌게 됩니다. 

그런데 이러한 이름 변경은 다른 모든 변수들(thisMon, yourMon, tempMon)에도 영향을 미칩니다, 왜냐하면 이 변수들은 모두 같은 오브젝트를 참조하고 있기 때문입니다.

이제 테스트해 보겠습니다.

먼저 비주얼 스튜디오 상단의 저장하기 아이콘을 눌러 스크립트 파일의 변경된 내용을 저장합니다.

이제 유니티 에디터로 돌아가서 상단의 플레이 버튼을 눌러 게임을 실행하겠습니다.

그리고 나서 하이어라키 뷰를 살펴 보면 게임이 실행되는 동안 큐브의 이름이 ‘Orc’로 변경된 것을 확인할 수 있습니다.

이제 이러한 변경이 다른 변수들에 어떤 영향을 미쳤는지 살펴 보겠습니다. 콘솔 창에 thisMon, yourMon, tempMon 이 가리키는 대상의 이름을 표시할 수 있도록 다음과 같이 print 명령어들을 추가로 작성해 보겠습니다.

파일을 저장하고, 다시 유니티로 돌아와서 상단의 플레이버튼을 눌러 게임을 실행시키겠습니다. 그러면 콘솔 창에 thisMon, yourMon, tempMon 이 가리키는 대상의 이름이 표시되는 것을 확인할 수 있습니다.

보시다시피 모두 ‘Orc’입니다. 

이는 참조 타입 변수의 특징으로, 여러 변수가 같은 오브젝트를 참조할 경우, 한 변수를 통한 참조 대상의 변경이 모든 다른 변수에도 영향을 미치게 됩니다.

다시 말해, 참조 타입 변수는 메모리 상의 데이터 주소를 참조하기 때문에, 해당 주소에 있는 데이터가 변경되면 이를 참조하는 모든 변수들에 그 변경이 반영되는 것입니다.

강의 포스트 모두 보기