Version: Unity 6.0 (6000.0)
言語 : 日本語
DoubleField
EnumField

DropdownField

DropdownField により、リストから値を選択できます。コントロールをクリックすると、複数のオプションを表示するドロワーが開き、いずれか 1 つを選択できます。常にすべての選択肢を表示する場合は、RadioButtonGroup を使用します。

ノート: 要素を Inspector ウィンドウの他のフィールドと揃えるには、.unity-base-field__aligned USS クラスを適用します。詳細については、BaseField を参照してください。

DropdownField の作成

DropdownField は、UI Builder、UXML、または C# で作成できます。

UI Builder

UI Builder で DropdownField のオプションを追加するには、DropdownField の Inspector ペインで、オプションをカンマ区切りで Choices に入力します。

デフォルト値を設定するには、DropdownField の Inspector で、Index 内のオプションに 0 から始まる連続する番号を入力します。

C#

以下の C# の例では、3 つのオプションがある DropdownField を作成します。DropdownField では、デフォルトで最初のオプションが選択されます。

var dropdown = new DropdownField("Options", new List<string> { "Option 1", "Option 2", "Option 3" }, 0);

//Add another option
dropdown.choices.Add("Option 4");

// To return int value instead of string
dropdown.index = 1; // Option 2
dropdown.value = "Option3";
Assert.IsTrue(myDropdown.index == 2);

// Register to the value changed callback
dropdown.RegisterValueChangedCallback(evt => Debug.Log(evt.newValue));

DropdownField のスタイルの変更

USS ファイルのデフォルトの Panel Settings フィールドをオーバーライドして、DropdownField のスタイルを変更できます。

  1. Hierarchy ウィンドウで、UI Document (.uxml) を選択します。
  2. Panel Settings を自身の Panel Settings アセットとして設定します。既存の Panel Settings アセットがない場合は、ダイアログの指示に従って作成してください。
  3. Panel Settings アセットで、テーマスタイルシート (TSS) を割り当てます。
  4. Project ウィンドウで TSS ファイルを選択します。
  5. Style Sheets (スタイルシート) に移動し、Add (+) ボタンを選択します。
  6. スタイルシートUSS ファイルとして設定します。

以下の例では、UXML で DropdownField を作成します。

<UXML xmlns="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements">
    <DropdownField label="UXML Field" name="the-uxml-field" />
</UXML>

以下の C# の例は、DropdownField のカスタマイズ可能な機能の一部を示しています。

/// <sample>
// You can provide the list of choices by code, or by comma separated values in UXML
// <DropdownField .... choices="Option 1,Option 2,Option 3" .... />
var choices = new List<string> { "Option 1", "Option 2", "Option 3" };

// Get a reference to the dropdown field from UXML and assign a value to it.
var uxmlField = container.Q<DropdownField>("the-uxml-field");
uxmlField.choices = choices;
uxmlField.value = choices[0];

// Create a new dropdown with the same choices, disable it, and give it a style class.
var csharpField = new DropdownField("C# Field", choices, 0);
csharpField.SetEnabled(false);
csharpField.AddToClassList("some-styled-field");
container.Add(csharpField);

// Mirror the value of the UXML field into the C# field.
uxmlField.RegisterCallback<ChangeEvent<string>>((evt) =>
{
    csharpField.value = evt.newValue;
});
/// </sample>

この例を Unity でライブ体験するには、Window > UI Toolkit > Samples の順に移動します。

C# の基本クラスと名前空間

C# クラス: DropdownField
名前空間: UnityEngine.UIElements
基本クラス: PopupField_1

継承された UXML 属性

この要素は基本クラスから以下の属性を継承します。

名前 説明
binding-path string バインドするターゲットプロパティのパス。
choices IList ポップアップメニューに表示する選択肢のリスト。
focusable boolean 要素がフォーカス可能である場合は true。
index int ポップアップメニューで現在選択されているインデックス。インデックスを設定すると、::ref::value フィールドが更新され、プロパティ変更通知が送信されます。
label string フィールドの横に表示されるラベルを表す文字列。
tabindex int フォーカスリングでフォーカス可能なものをソートするために使用される整数。0 以上に設定する必要があります。
value int ポップアップメニューで現在選択されている値。

この要素は VisualElement から以下の属性も継承します。

名前 説明
content-container string 子要素が追加されますが、通常は子要素は要素自体と同じです。
data-source Object 継承されたデータソースをオーバーライドするこの VisualElement にデータソースを割り当てます。このデータソースはすべての子に継承されます。
data-source-path string データソースから値へのパス。
data-source-type System.Type この VisualElement に割り当て可能なデータソースの型。

この情報は、設計時に有効なデータソースを指定できない場合に、データソースパスフィールドを補完するヒントとして UI Builder でのみ使用されます。
language-direction UIElements.LanguageDirection 要素のテキストの向きを示します。値は要素の子に伝播されます。

languageDirection を RTL に設定すると、テキストの反転と改行/折り返しの適切な処理による、右から左へ (RTL) の基本サポートが追加されます。ただし、包括的な RTL サポートは提供されません。これには、文字の並べ替えを含むテキストシェーピングと OpenType フォント機能のサポートが必要になるためです。将来のアップデートでは、言語、スクリプト、フォント機能の仕様に対応するための追加の API を含む、包括的な RTL サポートが予定されています。

このプロパティの RTL 機能を拡張するには、Unity Asset Store で入手可能なサードパーティ製のプラグインを探し、ITextElementExperimentalFeatures.renderedText を利用してください。
name string この VisualElement の名前。

このプロパティを使用して、特定の要素を対象とする USS セレクターを記述します。要素には一意の名前を付けるのが標準的です。
picking-mode UIElements.PickingMode mouseEvent または IPanel.Pick クエリの間にこの要素を選択 (ピック) できるかどうかを決定します。
style string VisualElement スタイルの値を設定します。
tooltip string ユーザーが要素をマウスオーバーした後、わずかな時間、情報ボックス内に表示するテキスト。これはエディター UI でのみサポートされます。
usage-hints UIElements.UsageHints VisualElement の意図されている使用パターンの概要を指定するヒント値の組み合わせ。このプロパティは、VisualElement がまだ Panel の一部でない場合にのみ設定できます。Panel の一部になると、このプロパティは事実上読み取り専用となり、変更しようとすると例外がスローされます。適切な UsageHints を指定することで、予想される使用パターンに基づいて、特定の操作をどのように処理するか、または高速化するかについて、システムがより適切な判断を下すようになります。これらのヒントは動作や視覚的な結果には影響せず、パネルとその中の要素の全体的なパフォーマンスにのみ影響することに注意してください。常に適切な UsageHints を指定するように検討することをお勧めしますが、特定の条件下 (例: ターゲットプラットフォームのハードウェア制限) では、一部の UsageHints が内部的に無視される可能性があることに留意してください。
view-data-key string ビューデータの永続性 (ツリーの展開状態、スクロール位置、ズームレベルなど) に使用されます。

このキーは、ビューデータストアからビューデータを保存およびロードするために使用されます。このキーを設定しないと、関連する VisualElement の永続性が無効になります。詳細については、ビューデータの永続性を参照してください。

USS クラス

以下の表は、すべての C# パブリックプロパティ名と、それに関連する USS セレクターのリストです。

C# プロパティ USS セレクター 説明
ussClassName .unity-popup-field この型の要素の USS クラス名。
labelUssClassName .unity-popup-field__label この型の要素のラベルの USS クラス名。
inputUssClassName .unity-popup-field__input この型の要素の入力要素の USS クラス名。
ussClassName .unity-base-popup-field この型の要素の USS クラス名。
textUssClassName .unity-base-popup-field__text この型の要素のテキスト要素の USS クラス名。
arrowUssClassName .unity-base-popup-field__arrow この型の要素の矢印の USS クラス名。
labelUssClassName .unity-base-popup-field__label この型の要素の ラベルの USS クラス名。
inputUssClassName .unity-base-popup-field__input この型の要素の入力要素の USS クラス名。
ussClassName .unity-base-field この型の要素の USS クラス名。
labelUssClassName .unity-base-field__label この型の要素のラベルの USS クラス名。
inputUssClassName .unity-base-field__input この型の要素の入力要素の USS クラス名。
noLabelVariantUssClassName .unity-base-field--no-label ラベルが存在しない場合のこの型の要素のラベルの USS クラス名。
labelDraggerVariantUssClassName .unity-base-field__label--with-dragger この型の要素にドラッガーがアタッチされている場合の、ラベルの USS クラス名。
mixedValueLabelUssClassName .unity-base-field__label--mixed-value 混合値を示す要素の USS クラス名
alignedFieldUssClassName .unity-base-field__aligned Inspector 要素で整列されている要素の USS クラス名
disabledUssClassName .unity-disabled ローカルで無効に設定されている要素の USS クラス名。

Inspector または UI Toolkit Debugger の Matching Selectors セクション を使用して、階層のすべてのレベルで VisualElement のコンポーネントに影響する USS セレクターを確認することもできます。

追加リソース

DoubleField
EnumField