인프런 커뮤니티 질문&답변

Angela Moon님의 프로필 이미지
Angela Moon

작성한 질문수

따라하면서 배우는 고박사의 유니티 하이퍼캐주얼게임 시리즈 01

추가 구현 - 아이템 활성화 및 획득 처리, 플레이어 이동속도 증가

zigzag에 quit 버튼 추가

해결된 질문

작성

·

216

0

강의를 다 듣고 응용을 해보는 중입니다.
첫 화면에 quit 버튼을 추가하여 클릭 시에 앱이 꺼지도록
설정하고 싶은데 클릭을 하면 바로 게임이 시작되어 버튼 클릭
이벤트가 먹히지를 않네요..
 
나름 생각을 해서 GameController의 Start 메소드 내 while문에 이렇게 작성을 해봤는데 버튼 클릭이 아예 먹히지 않는게 순서가 옳지 않은 듯 하네요. 혹시 조언을 구할 수 있을까요?

답변 1

0

고박사님의 프로필 이미지
고박사
지식공유자

UnityEngine.EventSystems 이름공간에 정의되어 있는

클래스의 메소드 중에 UI를 터치했는지 검사하는 메소드가 있습니다.

UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject()

 

이 값이 true이면 UI를 선택했다는 뜻이기 때문에 GameController 스크립트의

Start 메소드에 마우스 왼쪽 버튼을 눌렀을 때 조건으로 함께 추가를 해줍니다.

그러면 UI가 아닌 다른 곳을 선택했을 때만 게임이 실행됩니다.

 

 

PlayerController의 Update()에서 마우스 왼쪽 버튼이 눌렸을 때 이동방향을 바꾸는 코드가 실행되기 때문에 gameController.IsGameStart != true 이면 실행하지 말라는 코드도 함께 추가해줍니다.

 

여기까지만 작성해도 버튼을 누를 때는 버튼의 이벤트가 실행되고,

버튼이 아닌 곳을 누를 때는 게임이 실행됩니다.

다만 버튼이 아닌 다른 UI를 누를때도 게임이 실행되지 않기 때문에

아래 그림과 같이 시작화면에 나오는 PanelGameStart 오브젝트에

CanvasGroup 컴포넌트를 추가하고, Blocks Raycasts 변수를 비활성화합니다.

(TextTitle, Text.. 등의 UI 하나하나 Raycast를 끄는게 귀찮기 때문에 부모 오브젝트에서 CanvasGroup으로 한꺼번에 제어)

 

 

 

Angela Moon님의 프로필 이미지
Angela Moon
질문자

우와 너무 감사합니다. 알려주신 것 참고해서 수정하니 잘 작동되네요. 늘 감사합니다!

Angela Moon님의 프로필 이미지
Angela Moon

작성한 질문수

질문하기