이번엔 1편에 이어 Morphai 프로젝트에서 사용하는 menu UI를 자동화해보려고 한다.
거두절미하고 바로 시작하자.
Menu UI는 다음처럼 생겼다.
보시다시피 총 4개의 버튼이 있다.
- Respawn: 클릭 시 리스폰 지점으로 순간이동.
- Exit: 클릭 시 게임에서 나감.
- Info: 클릭 시 info UI가 켜짐.
- Return: 클릭 시 menu UI가 꺼짐.
여기서 공통적으로, 버튼을 누를 때는 같은 클릭 사운드가 플레이 될 것이고, 1편과 같이 UI가 켜져있는 동안에는 ControllerInteractors를 비활성화하여 UI 외의 다른 것들과 상호작용하지 못하게 한다.
A. menu UI 자동화
사실 1편과 거의 똑같지만 버튼만 많은 것이니 이번엔 빨리빨리 넘기겠다.
확실이 1편보다는 변수들이 많다.
이번에도 button이 클릭 될 때 AddLister를 통해 특정 함수가 호출되도록 했다. 모든 버튼들은 공통적으로 onClick시 클릭 사운드가 플레이되도록 했다.
menuUI 같은 경우 infoUI와 다르게 게임이 시작될 때 켜져있으면 안되기 때문에 Hide를 했고, 메뉴 버튼이 눌려야만 Show되도록 했다.
이것도 1편과 같다. Show될 때는 controllerInteractors를 끄고, Hide될 때는 킨다.
모든 버튼에 공통적으로 플레이되는 오디오를 플레이하는 함수 인 PlayClickAudio.
리스폰 버튼에는 Respawn함수를, 나가기 버튼에는 Exit함수를, 정보 버튼에는 Info함수를, 그리고 UI를 닫는 버튼에는 Return함수를 AddListener로 호출시킨다.
B. menu UI 를 활성화하기
infoUI와는 다르게 menuUI에 parent를 추가했다.
MenuDetect는 menuUI를 키는 특정 버튼이 눌렸는지 감지한다.
menuUI와 menuUI의 자동화 스크립트를 받고, Update 함수에서 *특정 버튼이 눌렸는지 체크한다.
즉, menuUI가 꺼져있는 상태에서 특정 버튼을 누르면 menuUI를 킨다.
*위 스크립트에서 특정 버튼은 SecondaryThumbstick으로, 오른쪽 조이스틱을 눌렀을 때를 뜻한다.
C. menu UI 자동화 완성
menuUI 자동화하기 전
정말 굉장한 노가다였다는 것을 알수 있다.
menuUI 자동화한 후menuUI의 parent에 부착 굉장히 간략화 된 것을 볼 수 있다!
함수나 작동에 대해 더 자세히 알고 싶으면 1편을 보면 된다.
'Unity > Dev' 카테고리의 다른 글
[Unity] 물 속에서 grab하면 물 구체가 잡히는 interaction 구현하기 (2) (0) | 2023.01.20 |
---|---|
[Unity] Light Probe로 자연스러운 빛과 실시간 그림자 연출하기 (1) | 2023.01.18 |
[Unity] UI Scripting Automation (1) (0) | 2023.01.17 |
[Unity] 물 속에서 grab하면 물 구체가 잡히는 interaction 구현하기 (1) (0) | 2023.01.16 |
[Unity] Player Grab Interaction with Oculus Integration SDK (0) | 2023.01.16 |