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

유니티5 독학하기 그 10번째 걸음-드디어 찾아낸 해결책과, 이어지는 실습

by 인터넷떠돌이 2017. 5. 31.
반응형

안녕하세요?


우연히 인터넷상에서 물어보니, 지난번 유니티5에 발생한 에러에 대한 해결책이 나왔길래, 이 문제를 해결하고, 이어서 인터넷상에 있는 이미지를 유니티에 가져오는 작업을 하고자 합니다. 우선 해결책에 대한 것을 네이버 유니티 카페에서 찾을 수 있었습니다.



이전 유니티 버젼에서 사용하던 명령어가 바뀌어서 생기는 현상이라고 하면서, 이를 개선하기 위해서는 에러가 난 스크립트를 일일히 수정해야 한다고 합니다.



위 스크린샷에서 붉은색 밑줄을 친 곳은 원래는 collider라는 항목이 있었습니다. 이걸 모두 GetComponent<Collider>()라는 것으로 바꾸기만 하는 것으로 에러를 수정할 수 있었는데, 그것을 몰라서 이렇게 헤메고 있었습니다.



이제서야 NGUI에서 제대로 된 화면이 나오는 것을 볼 수 있었으며, NGUI메뉴도 제대로 부활을 하였습니다. 이것으로 첫 한숨을 돌리면서, 다음 실습으로 갈 수 있었습니다. 이 문제가 발생한 이유가 무엇인고 하니, 기존의 NGUI에 있던 스크립트에 쓰인 명령어가 유니티5가 버젼업을 하면서 쓸 수 없게 되었다고 합니다. 그래서 하는 수 없이 스크립트를 수정해 주면, 에러로 인해서 안 보이던 NGUI가 도로 부활한다는 것입니다.



이제 Project윈도우에 생성한 source폴더에서 C# script를 생성한 다음, 이름을 TestCoroutine이라고 지정을 합니다. 그리고 코딩을 위에서 일어난 예시처럼 하도록 합니다. 지지난번 포스팅에선 여기서 에러가 생겨서 유니티5의 독학이 차질을 빚었습니다.



하지만 이번에 또 유니티5의 콘솔창을 보자 에러가 떴습니다. 이번 에러는 TitlePlay라는 스크립트에서 발생한 것이라고 합니다.



하는 수 없이 FacebookAndroid.init (); 를 삭제하도록 하였습니다. 이게 Prime31에서 지원을 한다고는 하는데, 제 경우에는 아직 어떻게 처리를 하지 않아서 인지 계속 유니티5에서 에러가 일어나는 원인으로 자리 잡혀 있습니다.



일단 TestCoroutine.cs를 작성한 다음에, 유니티5의 플레이 버튼을 눌러서 콘솔창을 확인해 보면, 위 스크린샷과 같은 결과를 얻을 수 있었습니다. 이것으로 하나 알 수 있는 것이 Coroutine이라는 것이 지정해둔 작업을 차례대로 수행한다는 것을 알 수 있었습니다.



이제 다음 단계는 홈페이지에 있는 이미지를 어떻게 게임으로 가지고 오는 것을 실습해 볼 차례입니다. 우선 http://180.70.94.180/test.png 를 먼저 불러 보았습니다. 책과는 저자가 다른 이미지를 올려 놓았습니다만, 일단 실습에는 지장이 없을 것이라고 생각이 됩니다.



먼저 TestCoroutine을 다음과 같이 코딩을 하도록 고칩니다. 위 스크린샷에서 제일 먼저 게임의 화면인 씬(Scene)이 시작을 하면 StartCoroutine이라는 명령어를 써서 코루틴을 시작하도록 합니다. 제가 여기까지 해보니 코루틴은 다음과 같은 구조를 지니고 있는 것이 보였습니다.


StartCoroutine ( 변수 () );


IEnumerator 변수 () { 실행할 내용 }


물론 이게 맞다고는 지금의 제 레벨에서는 무어라 말을 못하겠습니다. 그렇지만 일단 본 결과 위와 같다는 생각을 하게 되었습니다.



이어서 위와 같이 코딩을 이어나갔습니다. 내용이 정의되지 않은 임의의 메서드인 Test()의 내용은 void Test()로 정의하기로 하였습니다. 그리고 나서 void OnGUI라고 해서, 프레임이 업데이트 될 때마다 호출이 되는 메서드라고 합니다. 제가 이해하기로는 OnGUI안에 들어간 내용은, 게임에서 설정한 프레임이 변할 때 마다 호출이 되는 명령이라고 생각이 됩니다.


그리고 OnGUI안에 들어가 있는 if 구문에 대해서 저는 잘 모르겠지만, 나중에 일을 다 끝내고 나서 들은 생각인데, 다음과 같은 구문으로 작동되는 것이 아닌가 하는 생각이 듭니다.


if ( 조건문 ) 

  true일 경우;

  false일 경우;


물론 저도 저게 맞는지 여부는 잘 모르겠습니다. 하지만 일단 보았는 것으로는 저럴 확율이 있어 보입니다. 아무튼 TestCoroutine.cs를 코딩하고 나서, 실행을 시켜보려고 했지만, 에러가 떴습니다.



알고 봤더니, 위와 같이 ; 기호를 쓰지 않아서 발생한 오류로 보입니다. 그래서 이번에는 문장이 끝난다는 신호를 제대로 보낸 다음 유니티5의 플레이 버튼을 눌러 보았습니다.



이제 제대로 실행이 되는 것을 볼 수 있었습니다. 이것으로 챕터6의 절반 가량을 끝내는데 성공했다는 생각이 듭니다. 이제 남은 절반은.... 빠르게 실습이 가능할지는 정말 미지수 입니다. 

반응형