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

유니티5 독학하기 그41번째 걸음-더 나은 페이지 이동 방법

by 인터넷떠돌이 2018. 5. 23.
반응형

안녕하세요?


오랫만에 유니티5를 공부를 하였고, 그 내용에 대해서 포스팅을 하고자 합니다. 일단 이전에는 메인 메뉴와 옵션을 이동시키는 것을 하였는데, 이번 시간에는 반대로 옵션 페이지에서 어떻게 해서 메인 메뉴 페이지로 돌아오는 것 먼저 실습해 보고, 이제는 옵션이나 이런 페이지를 시작하자 마자 활성화 시키고 안 시키는 것을 아예 결정할 수 있도록 만드는 것 까지 실습해 보고 그 내용을 포스팅 하고자 합니다.



먼저 UI Root아래에 있는 Buttons의 자식 오브젝트인 Play라는 게임 오브젝트를 선택해서 Ctrl + D를 누르도록 합니다.



그리고 나서 복사된 게임 오브젝트를 UI Root의 Options 오브젝트 아래로 이동을 시키도록 합니다.



그리고 나서 다음에는 Main을 비활성화 시키고, Options를 활성화 시키도록 합니다. 위 사진에는 잘 안 보일 수도 있지만, 실제로 유니티5 상에서는 Main이라는 오브젝트는 회색으로 바뀐것을 볼 수 있으며, Options 게임 오브젝트는 검은색으로 바뀐것을 볼 수 있습니다.



이름부터 Confirm이라는 것으로 바꾸도록 하고, 위치를 {0,-295,0}으로 지정을 한 다음에 사이즈를 520 X 130 으로 지정을 하도록 합니다.



그리고 Confirm으로 이름을 바꾼 게임 오브젝트에 UI Play Tween을 추가하고 나서, 위 스크린샷처럼 설정을 하도록 해 봅니다. 여기서 핵심이라면 UIRoot의 Options항목에 있는 Tween을 지정해서, Play Direction을 Reverse로 해서, 역방향으로 진행이 되도록 한다는 것입니다. 그리고 나서 When finished에서는 Disable After Reverse라고 해서, 역방향으로 한 다음에 Tween을 종료한다고 지정하는 것 입니다.




그리고 나서 Confirm에 또 다른 한개의 UI Play Tween을 추가하도록 해서, 이전에 사라지도록 만들었는 Tween을 이번에도 역방향으로 진행이 되도록 하도록 하고, 이미 Tween이 disabled되어 있을 것이니, If target is disabled를 도로 사용가능하도록 만든 다음에 실행하라는 것으로 바꾸도록 합니다.



그래서 Options항목을 도로 비활성화 시키고, 다음에 Main을 활성화 시키도록 합니다.



그리고 나서 다음에는 Label에 있는 text를 Confirm으로 바꾸어서 준비를 마치도록 합니다.



이렇게 해서 Confirm버튼을 누르면 도로 메인 메뉴로 돌아오는 것을 확인할 수 있었습니다. 이번에는 씬 초기화라고 해서, 지금처럼 유니티5의 카메라 밖으로 보내었다가 다시 돌아오게 하는 것이었습니다. 그런데 그렇게 하지 않고, 화면을 활성화/비활성화 시키는 것으로 작업을 하려고 합니다.



그리고 나서 다시 UIRoot의 Main을 비활성화 시키고, UIRoot의 Options를 활성화 시키도록 합니다. 그리고 나서 {2000,0,0}으로 되어 있던 위치를 {0,0,0}으로 만들도록 합니다.




이번에는 Main과 Options를 동시에 선택 하도록 합니다.



그리고 나서 새로운 컴포넌트를 추가하는데, 추가하는 것은 새로운 스크립트입니다.



Initialization.cs라고 해서 스크립트 파일을 만들어 놓는데, 언어는 C#으로 놓도록 합니다. 그리고 나서 프로그램을 작성 하도록 합니다.



먼저 위 스크린샷처럼 코딩을 하는데, 우선 Vector3라는 것이 3차원 포지션을 의미하는 듯 합니다. 일단 광역 변수로 선언을 한 것으로 보이는 것이 하나 있는데, public Vector3 position = Vector3.zero; 라는 문장은 아마 position이라는 변수를 선언하면서, 이 변수는 3차원 좌표이고, 처음 시작할 때는 {0,0,0}이라고 하는 듯 합니다.


그리고 start() 함수에 들어간 의미는 다음과 같은 것으로 생각이 됩니다.

transform.localPosition = position; 즉, position이라는 변수가 첫 자리가 된다는 의미가 되는 듯 합니다. 그런데 Vector3.zero라는 구문의 의미는 아직도 잘은 모르겠지만, 아래의 내용을 보시면, {0,0,0}이 아니라 아마 공백이라고 해도 될듯 합니다.



UIRoot의 Options항목에 있는 Initialization항목을 위 스크린샷에 나와 있는 것처럼 {2000,0,0}으로 바꾸도록 합니다. 이렇게 하면 시작하자 마자 Options는 저런 위치로 가게 됩니다.



그리고 나서, 위 스크린샷처럼 MenuManager.cs라고 이전에 작성한 적이 있었는 스크립트를 수정하도록 합니다. 먼저 위 스크린샷을 보시면 나오는 스크립트에서 다음의 구절은 게임 오브젝트라는 '배열'을 만든다고 합니다.


public GameObject[] A;

이렇게 하면 게임 오브젝트라는 변수 A를 만들라는 뜻이 됩니다.

그리고 이후에 밑에 나오는 foreach()라는 함수는 아직 제가 잘 모르겠습니다만, 아마 GameObject B in A 라는 구절은 아마 A라는 게임 오브젝트 변수에 들어간 변수 B에 대한 이야기로 생각이 됩니다.



일단 UIRoot에 있는 인스펙터 뷰를 보니까, 위 스크린샷처럼 전에 없는 것이 추가된 것을 볼 수 있었습니다.



그리고 나서 책에서는 알기 어려웠는데, 일단 계층뷰에 있는 게임 오브젝트를 끌고와서 다른데가 아니라, 바로 이름위에 놓으면 추가가 됩니다. UIRoot의 Options를 드레그 앤 드롭으로 Disable At Awake에 놓으면 아래처럼 바뀝니다.



그렇게 해서 추가된 것을 확인할 수 있었습니다.



이렇게 해서 씬 초기화까지 성공을 했다는 생각이 듭니다. 일단 여기까지는 어떻게 유니티  NGUI 게임 프로젝트라는 책의 챕터3 일부를 실행하는 데 성공했습니다. 하지만 아직 많이 남아 있으니, 이를 계속해서 더 해보기는 해봐야 겠다는 생각이 듭니다. 그리고 나서는 잠시 중단이 된 yukku run의 제작도 다시 들어가도록 하겠습니다.

반응형