UI Canvas

Unity3D/UI 2019. 5. 23. 13:53
반응형

https://unity3d.com/kr/learn/tutorials/topics/user-interface-ui/ui-canvas?playlist=17111

 

UI Canvas - Unity

Unity is the ultimate game development platform. Use Unity to build high-quality 3D and 2D games, deploy them across mobile, desktop, VR/AR, consoles or the Web, and connect with loyal and enthusiastic players and customers.

unity3d.com

https://docs.unity3d.com/kr/current/Manual/UICanvas.html

 

캔버스(Canvas) - Unity 매뉴얼

모든 UI 요소는 Canvas 안에 위치해야 합니다. 캔버스는 Canvas 컴포넌트가 있는 게임 오브젝트이며 모든 UI 요소는 반드시 어떤 캔버스의 자식이어야 합니다.

docs.unity3d.com


[optimization tips for Unity UI]

https://unity3d.com/kr/learn/tutorials/topics/best-practices/guide-optimizing-unity-ui

 

A guide to optimizing Unity UI - Unity

Unity is the ultimate game development platform. Use Unity to build high-quality 3D and 2D games, deploy them across mobile, desktop, VR/AR, consoles or the Web, and connect with loyal and enthusiastic players and customers.

unity3d.com

https://create.unity3d.com/Unity-UI-optimization-tips

 

Unity

 More resources Squeezing Unity: Tips for raising performance (section on Unity UI starts at 23:38). Best practices: Optimizing Unity UI Unity UI Docs UI Profiler Tutorials(tutorials in section “Live Training: Shop UI with Runtime Scroll Lists” are interme

create.unity3d.com

 

 

 

캔버스는 UI 엘리먼트 그룹의 랜더링을 관리하는 컴포넌트 
모든 UI 엘리먼트는 캔버스의 자식 
한 씬에서 캔버스를 2개 이상 가질수 있다.
하지만 UI엘리먼트를 사용하려면 사용할수 있는 캔버스가 최소 1개여야 한다.

UI엘리먼트가 새로 생성되었는데 캔버스가 없다면 캔버스가 새로 생성되며 
새로운 UI엘리먼트가 해당 캔버스에 자식으로 첨부 된다.

각 캔버스에는 다양한 랜더 모드가 있다.
랜더모드는 [Render Mode] 팝업 메뉴로 설정할수 있다.
[Scene Space]-[Overlay]는 가장 흔한 랜더모드 이다.
캔버스의 기본 랜더 모드다.

[Scene Space]-[Overlay]를 선택하면 UI는 씬을 오버레이 한다.
또한 모든 UI엘리먼트는 해당 씬에서 랜더링 되는 다른 모든것 위에 오게 된다.
이모드에서 캔버스는 자동으로 스크린을 채우고 스크린 설정이 변하면 자동으로 크기를 조정한다.

캔버스는 UI 엘리먼트 그룹의 랜더링을 관리하는 컴포넌트  
모든 UI 엘리먼트는 캔버스의 자식  
한 씬에서 캔버스를 2개 이상 가질수 있다. 
하지만 UI엘리먼트를 사용하려면 사용할수 있는 캔버스가 최소 1개여야 한다. 

UI엘리먼트가 새로 생성되었는데 캔버스가 없다면 캔버스가 새로 생성되며  
새로운 UI엘리먼트가 해당 캔버스에 자식으로 첨부 된다. 

각 캔버스에는 다양한 랜더 모드가 있다. 
랜더모드는 [Render Mode] 팝업 메뉴로 설정할수 있다. 
[Scene Space]-[Overlay]는 가장 흔한 랜더모드 이다. 
캔버스의 기본 랜더 모드다. 

[Scene Space]-[Overlay]를 선택하면 UI는 씬을 오버레이 한다. 
또한 모든 UI엘리먼트는 해당 씬에서 랜더링 되는 다른 모든것 위에 오게 된다. 
이모드에서 캔버스는 자동으로 스크린을 채우고 스크린 설정이 변하면 자동으로 크기를 조정한다.
[Screen Space]-[Overlay]모드에서 캔버스는 [Rect Transform]를 드라이브 한다는 점에 유의 하자
그리고 전체 [Rect Transform]컴포넌트를 편집할수 없다.
캔버스는 [Rect Transform]의 모든 값을 설정해 자동으로 스크린을 채우기 때문이다.
이 랜더 모드에는 [Pixel Perfect]옵션이 있다.
랜더링 될때 가장 가까운 픽셀로 조정된다.
그러면 UI엘리먼트의 모양이 선명해지는 경우도 있다.

Rect Transform의 더많은 정보 : https://unity3d.com/kr/learn/tutorials/modules/beginner/ui/rect-transform

[Screen Space]-[Camera]는 [Screen Space]-[Overlay]와 매우 유사 하다
하지만 씬의 특정 카메라가 랜더링 한다는 점이 다르다
이를 통해 카메라 지정 설정을 스크린 공간 UI에 적용할수 있다.
가장 흔한 예는 원근 카메라를 이용해 UI에 깊이의 느낌을 부여 하는것이다.
이 모드에서 캔버스는 카메라의 뷰포인트를 자동으로 채우며 카메라의 뷰포인트 설정이 변하면 자동으로 크기를 조정한다.
이 랜더링 모드에서는 [Rect Transform]도 캔버스에 의해 전체적으로 드라이브 되고 있다.
이 랜더모드에는 [Screen Space]-[Overlay]와 똑같이 작동하는 [Pixel Perfect]를 비롯한 여러 옵션들이 있다.
[Render Camera]는 랜더링 하는 카메라를 설정한다.
이것이 없다면 캔버스 컴포넌트는 [Screen Space]-[Overlay]를 이용해 이 캔버스를 랜더링 한다.
[Screen Space]-[Camera]를 선택하고 카메라를 캔버스 컴포넌트에 할당하면 UI 엘리먼트는 카메라 프러스텀으로 이동해 크기가 재조정된다.
이를 통해 UI를 씬뷰의 게임오브젝트에 맞추어 랜더링 할수 있다.
씬속UI엘리먼트의 랜더링 위치를 제어 하려면 [Plane Distance]를 이용해 캔버스와 카메라의 거리를 조절한다.
캔버스와 UI엘리먼트는 카메라 앞의 위치에 따라 프러스텀에 맞게 자동으로 크기가 조정된다.
[Plane Distance]는 랜더링 카메라의 랜더링 되는 클리핑 플레인의 범위내에 있어야 한다.
[Screen Space]-[Camera]를 사용할때는 씬의 어떤 카메라로도 캔버스를 랜더링 할수 있다.
씬을 랜더링 하는 다른 카메라로부터 캔버스와 컨텐츠를 고립 시키려면 카메라의 클리어 플래그, 컬링마스크와 depth속성을 이용한다.

카메라에 대한 더 많은 정보 : https://unity3d.com/kr/learn/tutorials/topics/graphics/cameras

[Render Mode World Space]는 씬 볼륨의 앨리먼트를 랜더링 한다.
이 UI엘리먼트는 씬 속의 정적인 오브젝트 말풍선 같은 이동 오브젝트 또는 씬속 게임 오브젝트를 따르는 플레이어 태그일수도 있다.
우선 [World Space]모드의 캔버스는 더는 [Rect Transform]을 드라이브 하지 않으며 월드 스페이스의 어디에서도 캔버스를 설정할수 있다느 점에 유의 해야 한다.씬 
씬 속에 캔버스가 2개이상 존재 할수 있다는 점을 이해 하면, 월드 스페이스 UI엘리먼트에 필요한 만큼 새로운 월드 스페이스 캔버스를 생성하는 것도 이상하지 않다.

[Event Camera]는 이벤트 수신과 어떤 카메라를 이용해 UI 엘리먼트 클릭같은 이벤트를 감지 할것인지 결정하는데 필요하다.
대부분의 경우 스크린 스페이스 월드의 선택으로 이 이벤트 카메라가 신을 랜더링 하는 카메라가 된다.

[Receives Events]는 (2019버전에는 없음) 이캔버스의 UI앨리먼트가 클릭, 호버등의 이벤트를 수신할것인지를 표시 한다.
이 캔버스의 자식인 모든 UI앨리먼트에서 이벤트를 무시하려면 이 속성을 비활성화 해야 한다.
[Sorting Order]와 [Order in Layer]는 씬의 다른 랜더러와 비교해 캔버스의 랜더 순서를 관리 한다.
[Sorting Order]와 [Order in Layer]는 캔버스 컴포넌트에서 노출되며 캔버스의 [Screen Space-Camera]나 [World Space]설정에 이용할수 있다.

Sorting Order와 Order in Layer의 더 많은 정보 : https://unity3d.com/kr/learn/tutorials/topics/2d-game-creation/sorting-layers

캔버스의 UI 앨리먼트는 톱다운 방식으로 랜더링되어 첫 아이템들이 뒤에서 랜더링 되고 아래 아이템들은 나중에 랜더링 되어 상단에 나타난다.
UI 엘리먼트의 랜더링 순서를 변경하려면 계층에서 순서를 바꾸면 된다.

 

 

[View Frustum]

https://www.youtube.com/watch?v=GqEP79loyQE

 

반응형

'Unity3D > UI' 카테고리의 다른 글

Unity UI에 관한 최고의 최적화 팁  (0) 2019.05.29
UI RectTransform  (0) 2019.05.24
: