해결된 질문
작성
·
216
답변 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으로 한꺼번에 제어)
우와 너무 감사합니다. 알려주신 것 참고해서 수정하니 잘 작동되네요. 늘 감사합니다!