Unity 사용자 매뉴얼: UI 툴킷과 리스트 바인딩

이 문서는 Unity에서 UI 툴킷을 사용하여 리스트를 바인딩하는 방법에 대해 설명합니다. 리스트를 효율적으로 처리하기 위해 ListView 컨트롤을 이용하는 방법을 배울 것입니다.

개요

이 가이드는 GameSwitch 객체의 리스트를 생성하고 이 리스트를 UI에 바인딩하는 방법을 단계별로 안내합니다. 최종 결과물은 GitHub 저장소에서 확인할 수 있습니다.

전제 조건

  • Unity 에디터 사용에 익숙한 개발자
  • UI 툴킷 및 C# 스크립팅에 대한 이해

시작하기

  1. 새 Unity 프로젝트 생성
  2. 임의의 템플릿으로 프로젝트를 시작합니다.
  3. 프로젝트 창에서 'bind-to-list'라는 폴더를 만듭니다.
  4. C# 스크립트 생성
  5. GameSwitch.cs라는 이름의 C# 스크립트를 생성하고 다음 내용을 추가합니다.

```csharp using System;

[Serializable] public struct GameSwitch { public string name; public bool enabled; } ```

  1. UI 문서 생성
  2. Game_switch.uxml이라는 이름의 UI 문서를 생성하고 다음 내용을 추가합니다.

xml <UXML xmlns="UnityEngine.UIElements" xmlns:ue="UnityEditor.UIElements"> <Box style="flex-direction: row;"> <Toggle binding-path="enabled" /> <TextField binding-path="name" readonly="true" style="flex-grow:1;"/> </Box> </UXML>

  1. GameSwitchListAsset 스크립트 작성
  2. GameSwitchListAsset.cs라는 이름의 C# 스크립트를 만들고 다음 내용을 추가합니다.

```csharp using System.Collections.Generic; using UnityEngine;

namespace UIToolkitExamples { [CreateAssetMenu(menuName = "UIToolkitExamples/GameSwitchList")] public class GameSwitchListAsset : ScriptableObject { public List switches;

       public void Reset()
       {
           switches = new()
           {
               new() { name = "Use Local Server", enabled = false },
               new() { name = "Show Debug Menu", enabled = false },
               new() { name = "Show FPS Counter", enabled = true },
           };
       }

       public bool IsSwitchEnabled(string switchName) => switches.Find(s => s.name == switchName).enabled;
   }

} ```

커스텀 에디터 생성

  1. 커스텀 에디터 스크립트 작성
  2. Editor라는 이름의 폴더를 생성합니다.
  3. GameSwitchListEditor.cs라는 이름의 C# 스크립트를 생성하고 다음 내용을 추가합니다.

```csharp using UnityEditor; using UnityEngine; using UnityEngine.UIElements;

namespace UIToolkitExamples { [CustomEditor(typeof(GameSwitchListAsset))] public class GameSwitchListEditor : Editor { [SerializeField] VisualTreeAsset m_ItemAsset;

       [SerializeField]
       VisualTreeAsset m_EditorAsset;

       public override VisualElement CreateInspectorGUI()
       {
           var root = m_EditorAsset.CloneTree();
           var listView = root.Q<ListView>();
           listView.makeItem = m_ItemAsset.CloneTree;
           return root;
       }
   }

} ```

  1. UI 문서 추가
  2. game_switch_list_editor.uxml라는 이름의 UI 문서를 생성하고 다음 내용을 추가합니다.

xml <UXML xmlns="UnityEngine.UIElements" xmlns:ue="UnityEditor.UIElements"> <ListView virtualization-method="DynamicHeight" reorder-mode="Animated" binding-path="switches" show-add-remove-footer="true" show-border="true" show-foldout-header="true" header-title="Switches"/> </UXML>

  1. 바인딩 확인
  2. 프로젝트 창에서 GameSwitchListEditor.cs를 선택하고 game_switch.uxml을 인스펙터의 Item Asset으로 드래그합니다.
  3. game_switch_list_editor.uxml을 인스펙터의 Editor Asset으로 드래그합니다.

바인딩 테스트

  1. 새 에셋 생성
  2. 메뉴에서 Assets > Create > UIToolkitExamples > GameSwitchList를 선택합니다.
  3. 생성된 New Game Switch List Asset을 프로젝트 창에서 선택합니다.
  4. 리스트 조작
  5. 인스펙터에서 토글 리스트를 조작하며 리스트 항목의 순서를 변경하고, 항목을 추가/제거할 수 있습니다.

추가 리소스

주제 설명
SerializedObject 데이터 바인딩 Unity에서 데이터 바인딩의 기본 개념을 설명합니다.
바인딩 가능한 요소 UI 툴킷에서 바인딩이 가능한 다양한 요소들을 소개합니다.
바인딩 데이터 타입 전환 서로 다른 데이터 타입 간의 바인딩 방법을 다룹니다.
구현 세부 정보 바인딩 구현에 필요한 상세 기술들을 설명합니다.

Unity는 강력한 비주얼 시스템과 스크립트를 통해 다양한 UI 요소를 쉽게 관리할 수 있는 환경을 제공하므로, 개발자들은 이러한 도구들을 활용하여 자신의 프로젝트에 적합한 솔루션을 만들 수 있습니다.

Read more

Unity 매뉴얼 스크립팅 API 해설

이 문서는 Unity의 매뉴얼 스크립팅 API에 대한 간단한 해설과 활용 예제들을 포함하고 있습니다. Unity는 게임 개발 플랫폼으로, 스크립팅 API를 통해 게임의 다양한 기능을 제어하고 수정할 수 있습니다. 버전 Unity 스크립팅 API는 여러 버전으로 제공됩니다. 주의 깊게 선택하여 사용하는 것이 중요합니다. 버전 설명 2023.2 최신 기능 및 버그 수정이 추가됨

By 이재협/실장/시스템개발실/PHYSIA

Unity 매뉴얼 스크립팅 API 설명서 해설

이 문서는 Unity의 매뉴얼 스크립팅 API에 대한 정보를 제공하며, 버전에 따라 다르게 적용되는 내용들을 설명합니다. 본 문서에서는 주요 내용을 간단히 정리하고 활용 가능 예제를 통해 이해를 돕겠습니다. 기본 개념 Unity에서 스크립팅 API는 게임 오브젝트와 그들의 동작을 제어하기 위한 강력한 도구입니다. 이를 통해 게임의 로직, 물리 엔진, 애니메이션 및 사용자 인터페이스를

By 이재협/실장/시스템개발실/PHYSIA

Unity 스크립팅 API 가이드

이 문서는 Unity의 스크립팅 API에 대해 설명합니다. Unity는 게임 개발을 위한 인기 있는 엔진으로, 강력한 스크립팅 기능을 제공합니다. 이 가이드는 Unity에서 스크립트를 작성하고 사용하는 방법을 이해하는 데 도움을 드립니다. 목차 * Unity 스크립팅 소개 * 기본 스크립트 생성 * 스크립트 사용 예제 * 응용 프로그램 * 참고 자료 Unity 스크립팅 소개 Unity는 C# 프로그래밍 언어를

By 이재협/실장/시스템개발실/PHYSIA