UI 캔버스는 아래와 같이 화면에 표시되는 hp게이지 바 or 버튼UI 등 여러가지 형태의 UI를 표현 할 수 있게 해주는 기능이다.
사용하기 전에 2D버튼을 누른 후 사용하자.
캔버스를 Hierarchy에 등록하면 여러가지 형태의 UI를 등록 할 수 있게 해준다. 버튼, 이미지 등등..
Canvas에서 Render Mode 중 overlay는 말 그대로 덮어씌우는 기능이다.
전체화면에 캔버스를 덮어씌워 버튼 등의 위치를 조절 할 수 있게 해준다.
Render Mode 중 Screen Space - Camera는 특정 카메라를 파라미터로 받아
특정 카메라의 움직임에 따라 버튼이라든지 UI의 모습 등을 변화 시킬 때 사용한다.
Render Mode 중 worl Space는 어디에서나 캔버스를 만들 수 있게 Rect Transform을 수정 가능하게 해준다.
Pixel Perfect는 렌더링 될 때 가장 가까운 픽셀로 조정하는 역할을 한다. 즉, 화면에 맞게 픽셀을 조절해주는 기능이 항상 체크하는게 좋다.
Graphic Raycaster : 한마디로 캔버스 반대편으로 광선을 쏴서 무시할건 무시하게..무시 하지 말아야 할건 안 무시하게 해주는 기능. 뭘 블럭(block)할 것인가를 정할 수 도 있고..그게 2D인지 3D인지도 정할 수 있다. 웬만하면 하는컴포넌트에 추가하는걸 추천.
Canvas Group : 캔버스가 가지고 있는 자식 요소들의 투명도와 불투명도를 정할 수 있다.
Alpha가 1이면 불투명이라 보이고 0이면 안 보인다.(0과1사이의 값을 갖는다.)
Interactable은 상호작용. 이게 false면 아무리 버튼을 눌러도 응답하지 않는다. false로 두면 색깔조차 약간 불투명하게 변한다. Blocks Raycasts는 말그대로 광선을 무시.
This does not apply to Physics.Raycast. <<이 표현이 중요하겠다. 즉 Blocks Raycasts는 Ray에는 영향을 주지 않으므로 Collider에 영향도 주지 않는다. 꼭 체크하자.
Canvas Scaler는 유니티의 설명에 따르면 캔버스UI요소들의 전반적인 Scale과 Pixel의 밀도를 컨트롤 하기 위해 사용된다고 한다.
웬만하면 건들지 말자.
Canvas Renderer 는 전체적인 랜더링 담당부분. 만질 필요없다.
자세한건 http://unity3d.com/learn/tutorials/modules/beginner/ui/ui-canvas
조이스틱 이미지가 움직이는 문제
아래 그림과 같이 조이스틱을 여러번 이동하다 멈추면 모서리로 조이스틱 이미지가 움직임.
파란점을 기준으로 처음에는 우상귀에 있다가 좌하귀(파랑색 점)로 이동
해결 방법
Canvas에 Canvas Scaler 컴포넌트를 추가한다. 최상위 계층 canvas에 추가해야됨을 명심하자.
그후에 Ui Scale Mode를 Scale With Screen Size로 하자. 그러면 움직이지 않을 것이다.
Joystick Image Movement Problem
I click on the Joystick , and then release it to stop moving at left corner.
I solve the problem.
1st. Adding a Canvas Scaler Component in Canvas.
2nd. changing the Ui Scale Mode from constant pixel size to Scale With Screen Size.
3rd. The End LOL
==================================================
Preserve Aspect에 체크하면 원본사진에 최대한 가깝게 유니티에 표현된다.
Image Type을 Filled로 바꾸고 Fil Amount를 조절하면 옆의 화면과 같이 조절이 된다.
이건 HP,MP 등 플레이어의 체력상태 등을 나타낼 때 어떤 효과로 나타낼지 게임의 컨셉에 맞게 정하면 될듯 하다.
Hierarchy에서 Text를 클릭한 후 메뉴에 있는 Component -? UI -> Effect ->Shadow로 들어가서 Effect Distance를 조절하면 음영을 나타내서 글자가 더 멋지게 된다.