Version: 2023.2
언어: 한국어
ListView 없이 리스트에 바인딩
커스텀 컨트롤을 커스텀 데이터 타입에 바인딩

커스텀 컨트롤 바인딩

버전:2021.3+

이 예제에서는 커스텀 컨트롤을 네이티브 Unity 타입에 바인딩하는 방법을 보여 줍니다.

개요 예시

이 예제에서는 2D 이미지를 표시하는 커스텀 컨트롤을 만듭니다.새 에셋 타입에 대해 커스텀 에디터에서 커스텀 컨트롤을 사용하고 새 타입의 에셋에 있는 필드에 커스텀 컨트롤을 바인딩합니다.

예시를 통해 생성되는 완전한 파일은 이 GitHub 저장소에서 찾을 수 있습니다.

선행 조건

이 가이드는 Unity 에디터, UI 툴킷, C# 스크립팅에 익숙한 개발자용입니다.시작하기 전에 먼저 다음을 숙지하십시오.

직렬화된 오브젝트 생성

Texture2D가 포함된 직렬화된 오브젝트를 생성합니다.

  1. 임의의 템플릿을 사용하여 Unity 프로젝트를 생성합니다.
  2. 프로젝트(Project) 창에서 파일을 저장할 폴더 이름을 ’bind-custom-control’로 지정합니다.
  3. TextureAsset.cs라는 이름의 C# 스크립트를 생성하고 그 내용을 다음과 같이 바꿉니다.

[!code-cs]

커스텀 컨트롤 생성 및 스타일 지정

C#을 사용해 2D 텍스처 에셋에 대한 레퍼런스를 나타내는 커스텀 컨트롤을 생성하여 USS로 스타일을 지정합니다.

  1. 해당 폴더에 Editor라는 이름의 폴더를 만듭니다.
  2. Editor 폴더에 TexturePreviewElement.cs라는 이름의 C# 스크립트를 생성합니다.
  3. TexturePreviewElement.cs의 콘텐츠를 다음으로 바꿉니다.

[!code-cs]

  1. Editor 폴더에 Resources라는 이름의 폴더를 만듭니다.
  2. Resources 폴더에 texture_preview_element.uss라는 이름의 StyleSheet를 생성하고 콘텐츠를 다음으로 바꿉니다.

[!code-css]

인스펙터 UI 만들기

인스펙터 UI를 만들고 커스텀 컨트롤을 해당 Texture2D 오브젝트에 바인딩합니다.

  1. Editor 폴더에서 TextureAssetEditor.cs라는 이름의 C# 스크립트를 생성하고 해당 콘텐츠를 다음과 같이 바꿉니다.

[!code-cs]

UXML을 사용한 바인딩 설정

TexturePreviewElement를 사용하여 UXML 파일을 생성하고 binding-path 프로퍼티를 texture로 설정합니다.이렇게 하면 TexturePreviewElement가 TextureAsset.texture에 바인딩됩니다.

  1. Editor 폴더에 texture_asset_editor.uxml이라는 이름의 UI 문서를 생성하고 해당 콘텐츠를 다음과 같이 바꿉니다.

[!code-xml]

  1. 프로젝트 창에서 TextureAssetEditor.cs를 선택합니다.
  2. texture_asset_editor.uxml을 인스펙터의 Visual Tree로 드래그합니다.

바인딩 테스트

  1. 메뉴에서 Assets > Create > UIToolkitExamples > TextureAsset을 선택합니다.그러면 TextureAsset 인스턴스가 생성됩니다.
  2. 새 TextureAsset 오브젝트를 선택합니다.인스펙터에서 해당 텍스처 프리뷰 요소를 볼 수 있습니다.필드에 텍스처 에셋 레퍼런스를 넣으면 해당 필드 위에서 프리뷰를 볼 수 있습니다.UI의 텍스처 프리뷰 요소에서 에셋 레퍼런스를 변경하면 TextureAsset.texture가 변경됩니다.

추가 리소스

ListView 없이 리스트에 바인딩
커스텀 컨트롤을 커스텀 데이터 타입에 바인딩