본문 바로가기

유니티/UI System

(8)
[UGUI] Layout Element - Unity Auto Layout 성능이 악랄하다는 Unity Auto Layout을 개조시키기 위해 공부중입니다. 레이아웃의 요소의 최소(minimum), 기본(preferred) 또는 유연한 크기(flexible)를 재정의하려는 경우 'Layout Element' 컴포넌트를 게임오브젝트에 추가하여 이를 수행할 수 있습니다. 레이아웃 컨트롤러는 다음 순서로 레이아웃 요소에 너비 또는 높이를 할당합니다. - 먼저 레이아웃 컨트롤러는 최소 크기 속성(Min Width, Min Height)를 할당합니다. - 사용 가능한 공간이 충분하면 레이아웃 컨트롤러는 선호하는 크기 속성(Preferred Width, Preferred Height)을 할당합니다. - 사용 가능한 추가 공간이 있는 경우 레이아웃 컨트롤러는 유연한 크기 속성(Flexibl..
[UGUI] Unity Auto Layout, 유니티 UI 레이아웃 시스템 성능이 악랄하다는 Unity Auto Layout을 개조시키기 위해 공부중입니다. -> 성능이 악랄한 이유: 레이아웃 요소 변경시마다 자식에 있던 모든 레이아웃 엘리먼트가 부모로 GetComponent를 호출하며 Layoutgroup 컴포넌트를 탐색하며 리빌딩 과정을 진행함 Rect Transform 레이아웃 시스템은 다양한 유형의 레이아웃을 처리할 수 있게 유연하며 요소를 자유롭게 배치할 수도 있습니다. 그러나 때로는 좀 더 구조화된 형태가 필요할 수 있습니다. 자동 레이아웃 시스템은 수평 그룹, 수직 그룹 또는 그리드와 같은 중첩된 레이아웃 그룹에 요소를 배치하는 방법을 제공합니다. 또한 포함된 콘텐츠에 따라 요소의 크기를 자동으로 조정할 수 있습니다. 예를 들어 버튼의 텍스트 내용에 약간의 패딩을 ..
[UIToolkit]UXML 템플릿 작성 - 1 UXML 템플릿은 사용자 인터페이스의 논리적 구조를 정의하는 XML 마크업을 사용하여 작성된 텍스트 파일입니다. 다음 코드 예제에서는 사용자에게 선택을 요청하는 간단한 패널을 정의하는 방법을 보여줍니다. 파일의 첫 번째 줄은 XML 선언입니다. 선언은 선택 사항입니다. 선언이 포함된 경우 첫 번째 줄에 있어야 하며 그 앞에 다른 내용이나 공백이 있으면 안됩니다. version속성은 필수 항목입니다. encoding속성은 선택 사항입니다. encoding이 포함된 경우 파일의 문자 인코딩을 선언해야 합니다. 다음 줄은 문서의 루트, 을 정의합니다. 요소에는 네임스페이스 접두사 정의에 대한 속성과 스키마 정의 파일의 위치가 포함됩니다. 이러한 속성은 특별한 순서 없이 지정할 수 있습니다. UI Toolkit..
[UIToolkit]UXML을 사용한 UI 구조 Unity UXML(Extensible Markup Language)파일은 사용자 인터페이스의 구조를 정의하는 텍스트 파일입니다. UXML형식은 HTML, XAML, XML에서 영감을 받았습니다. 이전에 이러한 형식으로 작업한 적이 있다면 UXML과의 유사점을 찾을 수 있습니다. 그러나 UXML 형식에는 Unity를 사용하는 효율적인 방법을 제공하기 위해 약간의 차이점이 있습니다. 이 섹션에서는 Unity가 지원하는 UXML 형식에 대해 설명하고 UXML 템플릿 작성, 로드 및 정의에 대한 세부 정보를 제공합니다. 또한 새 요소를 정의하는 방법과 UQuery를 사용하는 방법에 대한 정보가 포함되어 있습니다. UXML을 사용하면 기술 수준이 낮은 사용자가 Unity 내에서 사용자 인터페이스를 쉽게 구축할 ..
[UIToolkit]레이아웃 엔진 UI Toolkit에는 레이아웃 및 스타일 속성을 기반으로 시각적 요소를 배치하는 레이아웃 엔진이 포함되어 있습니다. 레이아웃 엔진은 HTML/CSS 레이아웃 시스템인 Flexbox의 하위 집합을 구현하는 Yoga의 레이아웃 원칙을 사용합니다. Yoga Layout | A cross-platform layout engine Why You May Consider Yoga PERFORMANCE Yoga was built to be fast and performance will always be one of Yoga's primary goals. For a layout engine to be able to power any range of applications, it needs to be fast and n..
[UIToolkit]Visual Tree ※반복되는 단어는 줄여서 표현하겠습니다! 줄여서 표현할 단어 뒤에 괄호로 어떻게 표현할지 표시한 후, 그 다음부터는 해당 단어를 줄여서 표현하고 있습니다. UI툴킷의 가장 기본적인 구성 요소는 visual element입니다. visual element는 부모-자식 관계를 가진 계층 구조의 트리로 정렬됩니다. 위 다이어그램은 계층 트리의 단순화된 예와 UI Toolkit의 렌더링된 결과를 표시합니다. Visual Element(VE) VisualElement클래스는 Visual Tree에서 모든 노드에 대한 base입니다. Visual Tree에서의 모든 노드는 VE를 기반으로 설계되었습니다. VE기본 클래스에는 스타일, 레이아웃, 데이터 및 이벤트 핸들러와 같은 모든 컨트롤에 대한 공통 속성이 포함되어..
[UIToolkit]UI Toolkit 개요 (사진 출처: 유나이트 서울 2020 - UI 통합 솔루션 UI Toolkit 살펴보기) UI Toolkit은 기존의 UI 시스템의 단점을 보완하기 위해 제작된 UI 시스템으로 레이아웃(UXML), 스타일(USS), 로직(C#)을 분리하여 UI를 설계할 수 있는 시스템입니다. 주로 기존의 IMGUI를 대체하기 위해 사용하는 것 같습니다. 기존 유니티의 UI 시스템보다는 웹 프론트 개발과 가까운 방식으로 설계되어 있습니다. UI Toolkit은 에디터 확장과 런타임을 모두 지원하고 있으며, 필요할 때에만 업데이트 되기 때문에 성능적으로도 유리함을 가지고 있습니다. 기존 IMGUI와의 호환성을 고려하여 'IMGUIContainer'를 이용해 IMGUI에서 사용하던 요소들을 UI Toolkit에서도 사용할 수..
유니티 넷플릭스 스타일UI - ScrollrectEx 응용 유니티를 이용한 프로젝트에서 화면의 크기보다 많은 공간을 필요로 하는 콘텐츠를 만들 때가 있다. 이럴때 주로 Scrollrect UI를 이용하여 페이지를 넘기며 정보를 확인할 수 있게 구성한다. 그 대표적인 예로 넷플릭스가 있는데, 넷플릭스는 스크롤을 위, 아래로 내리면서 콘텐츠가 담긴 그룹들을 선택할 수 있고, 해당 그룹에서 좌,우로 스크롤하면서 그 그룹에 속한 콘텐츠들을 확인하고 선택할 수 있다. ​ 하지만 유니티에서 기본적으로 제공하는 Scrollrect UI를 이용하면 넷플릭스와 같은 UI를 구현할 수가 없다. 기본적으로 마우스에서 발생하는 이벤트는 캔버스에서 가장 위에있는 오브젝트가 독차지하기 때문이다. 즉, 부모 오브젝트가 상하로 스크롤 가능하게 설정되었고, 그 안에 있는 자식 오브젝트가 좌우..