본문 바로가기
유니티5 독학 & 게임 제작

유니티5 독학하기 그 26번째 걸음-객체에 대한 대략적인 설명과 사용법

by 인터넷떠돌이 2017. 8. 19.
반응형

안녕하세요?


이번 포스팅에서는 [유니티5.X와 함께하는 C#첫걸음]이라는 책을 읽고서, chapter7에 해당하는 내용을 알기 쉽도록 정리를 해서 올리고자 합니다. 그럼 먼저 무엇부터 설명해야 하느냐 하면, '객체의 인스턴스화'라는 것을 설명해야 겠습니다. 본격적으로 들어가기 전에 제가 이해하고 정리한 것을 바탕으로 포스팅을 하다보니 사실과 틀린것이 있을 것이라 생각이 듭니다. 그런 오류에 대해서는 댓글로 알려 주시면 감사 하겠습니다.




먼저 위 그림은 클래스의 인스턴스화라고 하는 것을 보여주고 있습니다. 스크립트상에서 클래스라고 'public class 클래스이름'이라고 선언을 하는데, 이건 스크립트상에서 '선언'만 한 것이지, 실제로 이 상태로는 아무런 작업도 하지 않는다고 합니다. 그래서 메모리에 실제로 클래스를 할당한다고 해야 할까요? 정확히는 메모리에 할당할 단위(객체)로 쪼갠다고 해야 할듯 합니다.



그런데 '객체'라는 것으로 일종의 '분신'같은 것을 만든 다음에, 이 객체 하나하나 메모리에 공간을 할당해 주는 일이 남아 있으며, 이렇게 실제 메모리의 공간에 할당을 시키는 것을 두고서 '객체의 인스턴스화'라고 한다고 합니다. 무언가 복잡하지만, 뭐라고 해야 할까요? 스크립트를 유니티5에서 한개 작성해 놓으면, 메모리에 여러번 복제해서 공간을 배정할 수 있다고 보면 될듯 합니다.




아직까지는 이게 왜 중요한지 모르겠지만, 일단 클래스라는 것도 데이터 형식으로 선언을 할 수 있다는 것을 먼저 언급해 둡니다. 그래서 한 스크립트의 클래스를 다른 클래스에서 선언해서 쓸 수 있습니다. 우선 메모리에 객체를 할당시켜서 일을 하게 만들기 위해서는 아래의 형식을 스크립트 상에서 선언하면 됩니다.


new 임의의이름( );


그런데 이런 형식으로 메모리에 공간을 할당하면, 한가지 문제가 생깁니다. new 뒤에 선언한 임의의이름을 스크립트상에서 타이핑을 한다고 해도, C#상에서는 접근을 할 수 없다고 합니다. 그래서 이런 문제 때문에 아래의 문장처럼 변수를 선언해서 메모리에 할당된 공간에 접근할 수 있게 한다고 합니다.


임의의이름 변수 = new 임의의이름 ( );


이런식으로 선언을 하면, 변수.메서드 ( ) 같은 형식을 써서 객체라는 이름으로 메모리에 할당된 공간에 접근할 수 있는 것입니다. 그래서 이런 형식으로 어떻게 실전에서 사용을 하는가 하는 의문이 드실 건데요, [유니티5.X와 함께하는 C#첫걸음]이라는 책에서는 아래의 예시와 같은 것을 제시하고 있었습니다. 우선 유니티에서 스크립트 이름과 클래스 이름이 같아야 하니, 첫번째 스크립트는 ClassNameA라고 지정을 하고, 두번째 스크립트는 ClassNameB라고 지정을 해서 아래와 같이 코딩을 합니다.






먼저 ClassNameA.cs라는 스크립트에서 데이터의 형식을 지정하고, ClassNameB.cs에서 familyName,firstName, age, house라는 항목에 들어갈 내용을 일일히 지정했습니다. 일단 ClassNameA.cs만 보자면, string이라고 문자열 변수는 " "를 지정해서 빈칸으로 두었으며, int라는 정수는 0으로 지정을 했습니다. 이렇게 ClassNameA.cs에서 전체적인 포멧만을 구성하면, ClassNameB.cs와는 어떤 관계인지 아래의 그림에서 알 수 있습니다.


위 그림에서 볼 수 있듯이 ClassNameB.cs에서 변수이름(memberOne, memberTwo, memberThree)을 이용해서 new ClassNameA ( );를 타이핑해서 메모리상에서 공간을 확보합니다. 그런데 위 그림에서 보실 수 있는 것처럼, ClassNameA의 이름으로 메모리상에서 공간을 '여러번 확보'할 수 있는 것입니다. 즉, 자기 스크립트상에서 존재하지 않는 클래스 안의 형식을 빌려서, 메모리상에 공간을 여러번 확보하고, 거기다가 특정한 데이터를 저장할 수 있다는 것입니다.


이러한 형식이 어디에 쓰이냐 하면, 아마 간단히는 여러명의 캐릭터가 나오는 경우에는 프로필을 저장해야 하는 경우에 사용을 할 수 있으리라 생각이 듭니다. 


이제 책의 chaper7에 남아 있던 다른 스크립트에 있는 메서드를 이용하는 법에 대해서도 올려야 하겠지만, 분량이 너무 길어져서 하는 수 없이 여기서 마치도록 해야 겠습니다. 다음 포스팅에서는 다른 스크립트에 있는 메서드를 어떻게 스크립트 상에서 사용할 수 있는지를 다루도록 하겠습니다.

반응형