UI기초 with Button
1. UI추가
추가하는 방법
하이카리창에는 캔버스와 버튼 텍스트객체가 부모-자식관계로 추가된다.
캔버스 화면 안에는 버튼객체가 있음(왼쪽아래).
버튼 객체 안에는 텍스트객체가 들어가 있는 모습.
참고로 씬을 2D모드로 하면 보기 편하다.
2. Rect Transform
UI를 배치할 때 한가지 문제점이 있다.
바로 기기에 따라 화면크기가 제각각 이라는 것이다.
모니터만 봐도 큰 모니터가 있고 작은 모니터가 있고 스마트폰은 또 새로로 길다.
그래서 UI를 배치할 때는 절대좌표로 배치하는 것이 아니고 화면 비율로써 배치를 한다.
그럴 때 사용하는 것이 Rect Transform이다.
버튼UI를 클릭하면 인스펙터 창에 Rect Transform 컴포넌트가 있는데 빨간색 동그라미 부분을 클릭하면 Anchor Presets이 나오고 이것을 활용하여 UI를 배치하면 화면 비율로써 배치할 수 있다.
그리고 사용할 때는 Alt+Shift를 눌러서 사용을 하는데
Alt는 앵커의 위치를 변경시키는 기능이고
Shift는 객체의 중심을 변경시키는 기능이다.
그래서 Alt+ Shift를 같이 사용하는 것이 좋다.
3. Button Event
버튼을 클릭하면 이벤트가 발생하게 만들 수 있다.
+버튼을 누르면 버튼의 기능을 추가할 수 있는데
None(Object)부분은 상호작용할 객체를 넣어주면 되고
No Function은 상호작용할 객체가 가지고 있는 함수를 호출한다.
즉, 버튼을 통해 객체를 조작할 수 있게된다.
예를들어, 공격버튼을 구현하고 싶으면 버튼을 누르는 순간 플레이어 객체가 가지고 있는 공격이라는 함수를 호출시키면 되는 것이다.
주의할점은 버튼으로 호출 되는 함수는 반드시 public으로 선언되어야 한다.
4. 버튼과 InputManger
마우스로 버튼을 눌렀는데 버튼과 겹쳐 있는 오브젝트에게 레이캐스팅이 전달되는 문제가 발생될 수 있다.
이러한 문제를 해결하기 위해서는 아래와 같은 코드를 넣어주면 된다.
using UnityEngine.EventSystems;
if (EventSystem.current.IsPointerOverGameObject())
return;