본문 바로가기
카테고리 없음

유니티5 독학하기 그 27번째 걸음-chapter7의 마지막

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

안녕하세요?


지난번 포스팅에서는 객체라는 것에 대해서 이야기를 하면서, 메모리에 공간을 할당하고, 다른 스크립트에 있던 클래스를 이용하는 것에 대해서 포스팅을 하였습니다. 이번 포스팅에서는 다른 스크립트에 있는 메서드를 어떻게 사용을 하며, 사용자 정의 생성자와 오버로드에 대해서 포스팅을 하고자 합니다.



예제로 나온 코딩이 장황하기는 하지만 중요한 것은 얼마 없습니다. 우선 ClassNameA.cs에 있는 코드는 메서드를 정의하는 곳인데, 아래의 코드와 같이 간단하게 정리가 가능합니다.





위 그림에서 알 수 있듯이 ClassNameA에서는 IsMarriedWith라는 메서드를 지정하는 것 이외에 역할은 없습니다. 그리고 위에서 파라미터-메서드의 ()안에 들어가는 변수인데, 여기에 '클래스이름1번 변수이름1번'이렇게 입력하면, 먼저 파라미터의 형식은 '클래스'라는 형식의 변수가 된다는 것입니다. 이게 왜 중요하냐하면, 아래의 경우처럼 다른 스크립트에서 메서드 이름을 쓸 때 들어가는 파라미터에 제약이 생기기 때문입니다.



위 그림에서 볼 수 있듯이, 먼저 변수이름2번과 변수이름3번이 클래스이름1번이라는 형식의 '클래스'라는 선언을 했습니다. 그리고 나서 아래와 같은 형식으로 클래스 이름1번에 있는 '메서드이름'이라는 이름의 메서드를 클래스이름2번이라는 스크립트에서 사용할 수 있었습니다.


변수이름2번.메서드이름(파라미터)


여기서 변수이름2번 뒤에다가 닷 문법으로 . 점을 하나 찍는 것으로, 메서드이름이라는 메서드를 사용할 수 있게 되는 것입니다. 그리고 앞에서 설명했다 시피 ( ) 안은 파라미터라는 변수인데, 이미 ClassNameA.cs에서 이 파라미터를 아래와 같은 형식으로 이미 선언을 했습니다.


클래스이름1번 변수이름1번


그래서 파라미터로 클래스형식의 변수가 ClassNameB.cs에서 선언이 되어야 하며, 메서드이름 이란 메서드에서 이 클래스 형식의 변수가 와야 합니다. 그래서 위에 올라가 있는 예시에서 변수이름3번이 파라미터로서 메서드이름의 () 안에 들어가 있는 것을 볼 수 있습니다.


복잡해 보이지만, 간닪바니다. 일단 메서드가 public으로 선언이 되어 있으며, '닷 문법'으로 불러올 수 있게 된느 것입니다. 물론 파라미터도 미리 지정해둔 데이터 형식으로 입력해야 하며, 클래스도 크게 보면 데이터 형식이므로 위의 예시처럼 메서드의 파라미터로 사용이 가능하다고 합니다.




이제 사용자 정의 생성자와 오버로드라는 것으로 들어가야 하는데, 의외로 말하고자 하는 내용은 간단합니다. 일단 이전 유니티5 독학하기 포스팅을 보셨으면, 지난번 포스팅에서 다른 클래스의 형식을 빌려서 상당히 길이가 긴 문장으로 객체 하나에 데이터를 일일히 입력하는 것을 볼 수 있었습니다.


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


그런데 지난번 포스팅에서 올라온 코드에 다음과 같은 코드만 추가하면 일일히 입력할 필요도 없기 간단하게 코드의 길이를 줄일 수 있는 기술이라고 합니다.



위 코드를 ClassNameA.cs에 추가하게 되면, ClassNameB.cs에서는 다음과 같이 입력하게 되는 것으로 간단하게 바뀌어 집니다.



원래는 5줄에 걸쳐서 타이핑을 해야만 하는 내용이 1줄안에 다 들어갈 정도로 줄어드는 것을 볼 수 있습니다. 이처럼 같은 이름의 메소드가 파라미터나 형식이나 갯수가 다를 때, 선택적으로 입력할 수 있는 것을 의미합니다. 이게 왜 중요하나 하면 아래와 같이 이름은 같은 ClassNameA()지만, 둘의 파라미터가 다른 경우를 만들었기 때문입니다.


ClassNameA();

ClassNameA(string pFamilyName, string pFirstName, int pAge, bool pHouse);


여기서 일반적인 항목에 들어가는 변수와 혼선을 피하기 위해서, 생성자의 파라미터 이름 앞에서는 소문자 p를 붙여서 이름을 짓습니다. 이처럼 사용자 정의 생성자와 오버로드를 한 세트로 쓰면서, 코드의 기능은 그대로 유지를 하면서 길이는 줄어드는 효과를 줄 수 있습니다.


다음번 chapter8부터는 본격적으로 게임을 만드는 단계에 들어가는데, 아마 포스팅을 올리는데 시간이 조금은 더 걸릴 듯 합니다. 그래도 간단한 결과물을 만들 때 까지 계속해서 독학을 하도록 해 보겠습니다. 


반응형