Version: 2023.2+
ListView を使わなくても、リストにバインドすることができます。そのためには、各要素をシリアル化されたオブジェクトの配列の項目にバインドし、配列のサイズの値を追跡します。配列のサイズは、元に戻す操作やリセットの操作など、特定の状況下で変化する可能性があります。
この例では、ListView を使わないでリストへバインドする方法を紹介します。
この例は、TexturePreviewElements のリストを作成し、そのリストを Texture2D オブジェクトの基礎となるリストにバインドします。
You can find the completed files that this example creates in this GitHub repository.
このガイドは、Unity エディター、UI Toolkit、および C# スクリプトに精通している開発者を対象としています。始める前に、以下をよく理解してください。
リストを含む C# クラスを作成します。このリストがバインディングのターゲットです。
bind-to-list-without-ListView
という名前のフォルダーを作成し、ファイルを保存します。TexturePackAsset.cs
という名の C# スクリプトを作成し、そのコンテンツを以下に置き換えます。2D テクスチャアセットへの参照を表すカスタムコントロールを C# で作成し、USS でスタイルを設定します。
Editor
という名前のフォルダーを作成します。TexturePreviewElement.cs
という C# スクリプトを作成します。TexturePreviewElement.cs
の内容を以下に置き換えます。Resources
という名前のフォルダーを作成します。texture_preview_element.uss
という名の StyleSheet を作成し、そのコンテンツを以下に置き換えます。C# スクリプトでカスタムエディターを作成し、アセットを作成します。
UI の TexturePreviewElements
の数が変わるときにテクスチャリストのサイズを変更するには、SetupList()
メソッドを呼び出し、シリアル化されたリストのエントリを走査します。
各 TexturePreviewElement
をテクスチャのリストにバインドするには、BindProperty()
を TexturePackAsset.textures
のプロパティ名で呼び出します。
TexturePackEditor.cs
という名の C# スクリプトを作成し、そのコンテンツを以下と置き換えます。texture_pack_editor.uxml
という名の UI ドキュメントを作成し、そのコンテンツを以下に置き換えます。TexturePackAsset.textures
オブジェクトのプロパティが変更されます。****ヒント**: いくつかのテクスチャをインポートして、リストの異なるエントリに割り当てるには、この無料の Playground プラグイン を利用してください。