Version: Unity 6.0 (6000.0)
言語 : 日本語
TextElement
TemplateContainer

TextField

TextField は、ユーザーがアプリケーションにテキストデータを入力できるようにするものです。テキストの入力と表示が可能です。プレースホルダーテキストを設定して、ユーザーに入力内容のヒントや指示を与えることができます。また、入力したデータが特定の要件を満たしていることを確認するために、検証用の関数を追加することもできます。

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

TextField の作成

TextField は、UI Builder、UXML、C# で作成できます。以下の C# の例では、複数行のテキスト入力を許可する TextField を作成します。

var textField = new TextField();
textField.label = "Enter your text here:";
textField.multiline = true;
textField.maxLength = 140;

プレースホルダーテキストの設定

要素のプレースホルダーテキストを設定できます。フォーカスされているプレースホルダーテキストを非表示にすることもできます。

ノート: 要素に値を設定すると、プレースホルダーテキストは表示されません。UI Builder で値の設定を解除するには、要素の Inspector タブの Value フィールドを右クリックし、Unset を選択します。

C# では、placeholder プロパティと hidePlaceholderOnFocus プロパティを textEdition で使用します。

myElement.textEdition.placeholder = "Enter your value here";
myElement.textEdition.hidePlaceholderOnFocus = true;

プレースホルダーテキストのスタイルを設定するには、.unity-base-text-field__input--placeholder USS セレクターを使用します。

入力テキスト選択のカスタマイズ

入力テキストはデフォルトで選択可能です。selectAllOnMouseUPselectAllOnFocus などの選択に関する動作をカスタマイズできます。

C# では、textSelection を使用して設定します。

myElement.textSelection.selectAllOnMouseUp = false;
myElement.textSelection.selectAllOnFocus = false;

また、--unity-selection-color USS カスタムプロパティを使用して、選択したテキストにスタイルを設定することもできます。例えば、以下の USS は、選択した入力テキストの色を黄色に設定します。

.unity-base-text-field__input {
    --unity-selection-color: yellow;
}

垂直のスクロールバーの有効化

TextField で複数行テキスト入力を有効にすると、テキスト入力フィールドに垂直のスクロールバーを表示できます。

C# の場合、verticalScrollerVisibility プロパティを ScrollerVisibility.Auto または ScrollerVisibility.AlwaysVisible に設定します。

// Set the multiline property to true to enable multiple lines of text
textField.multiline = true;

// Set the vertical scrollbar visibility to AlwaysVisible
textField.verticalScrollerVisibility = ScrollerVisibility.AlwaysVisible;

入力テキストの動作のコントロール

イベント を使用して、入力テキストの動作をコントロールできます。以下の例では、イベントコールバック関数を使用して、テキストフィールドのナビゲーションおよび送信イベントをハンドルします。この例では、それらが TextElement 基本クラスでハンドルされる前に、ナビゲーションイベントTrickleDown フェーズに登録します。

// A callback function that executes submit logic to handle user input submission. 
// It stops the propagation of the event to prevent it from reaching other event handlers.
myField.RegisterCallback<NavigationSubmitEvent>((evt) => {

    // Submit logic
    evt.StopPropagation();
}, TrickleDown.TrickleDown);

// A callback function that executes focus logic to handle navigation between different UI elements. 
// If the navigation direction is up, down, left, or right, it stops the propagation of the event and instructs 
// the focusController to ignore the event.
myField.RegisterCallback<NavigationMoveEvent>((evt) => {

    if (evt.direction == NavigationMoveEvent.Direction.Up || evt.direction == NavigationMoveEvent.Direction.Down || evt.direction == NavigationMoveEvent.Direction.Left || evt.direction == NavigationMoveEvent.Direction.Right)
    {
        // Focus logic
        evt.StopPropagation();
        focusController.IgnoreEvent(evt);
    }

}, TrickleDown.TrickleDown);

以下は UXML で、TextField を作成する例です。

<UXML xmlns="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements">
    <TextField label="UXML Field" name="the-uxml-field" value="It's snowing outside." />
</UXML>

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

/// <sample>
// Get a reference to the field from UXML and append a value to it.
var uxmlField = container.Q<TextField>("the-uxml-field");
uxmlField.value += "..";

// Create a new field, disable it, and give it a style class.
var csharpField = new TextField("C# Field");
csharpField.value = "It's snowing outside...";
csharpField.SetEnabled(false);
csharpField.AddToClassList("some-styled-field");
csharpField.value = uxmlField.value;
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# クラス: TextField
名前空間: UnityEngine.UIElements
基本クラス: TextInputBaseField_1

メンバー UXML 属性

この要素は以下のメンバー属性を持ちます。

名前 説明
multiline boolean テキストフィールドに複数行を許可する場合は true を、そうでない場合は false を設定します。
value string フィールドが現在公開している文字列。

継承された UXML 属性

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

名前 説明
auto-correction boolean タッチスクリーンキーボードの自動修正のオン/オフを設定します。
binding-path string バインドするターゲットプロパティのパス。
emoji-fallback-support boolean テキストのレンダリング時にシステムが絵文字を検索する順序を指定します。この設定を有効にすると、グローバルな絵文字フォールバックリストが最初に検索されて、Unicode 14.0 標準で絵文字として定義されている文字が検索されます。
focusable boolean 要素がフォーカス可能である場合は true。
hide-mobile-input boolean モバイル入力フィールドの表示/非表示。
is-delayed boolean true に設定すると、ユーザーが Enter キーを押すか、テキストフィールドのフォーカスが失われるまで、value プロパティは更新されません。
keyboard-type TouchScreenKeyboardType 使用されるモバイルキーボードのタイプ。
label string フィールドの横に表示されるラベルを表す文字列。
max-length int フィールドの最大文字数。
select-all-on-focus boolean フォーカスを受けるときに要素のコンテンツを選択するかどうかを制御します。
select-all-on-mouse-up boolean 初めてマウスアップされたときに要素のコンテンツを選択するかどうかを制御します。
tabindex int フォーカスリング内でフォーカス可能なものをソートするために使用される整数。0 以上の値に設定する必要があります。
value string フィールドに関連付けられた値。
vertical-scroller-visibility UIElements.ScrollerVisibility TextInputBaseField_1 の垂直スクロールバーの可視性を制御するオプション。

この要素は 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-text-field この型の要素の USS クラス名。
labelUssClassName .unity-text-field__label この型の要素のラベルの USS クラス名。
inputUssClassName .unity-text-field__input この型の要素の入力要素の USS クラス名。
ussClassName .unity-base-text-field この型の要素の USS クラス名。
labelUssClassName .unity-base-text-field__label この型の要素のラベルの USS クラス名。
inputUssClassName .unity-base-text-field__input この型の要素の入力要素の USS クラス名。
singleLineInputUssClassName .unity-base-text-field__input--single-line この型の要素の 1 行入力要素の USS クラス名。
multilineInputUssClassName .unity-base-text-field__input--multiline この型の要素の複数行入力要素の USS クラス名。
placeholderUssClassName .unity-base-text-field__input--placeholder プレースホルダーテキストが表示されている場合の、入力要素の 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 インスペクター要素で整列されている要素の USS クラス名。
disabledUssClassName .unity-disabled ローカルで無効にされた要素の USS クラス名。

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

USS のカスタムプロパティ

以下の表は、USS の TextField 要素にのみ利用可能なカスタムプロパティの説明です。

プロパティ タイプ 説明
--unity-cursor-color string テキストのキャレットのカラーコード。
--unity-selection-color string 選択中テキストのカラーコード。

追加リソース

TextElement
TemplateContainer