Version: Unity 6.0 (6000.0)
言語 : 日本語
Box
ColorField

ボタン

ボタン要素を使用して、クリック可能なボタンを UI に作成します。例えば、ユーザーがボタン要素をクリックまたはタップすると、新しいウィンドウが開く、フォームが送信される、サウンドエフェクトが再生される、などのアクションやイベントがトリガーされます。

ボタンの作成

UI Builder、UXML、または C# を使用してボタンを作成できます。以下の C# の例では、ラベル付きのボタンを作成します。

var button = new Button(() => { Debug.Log("Button clicked"); }) { text = "Click me" };

ボタンにアイコンを追加する

プロジェクトに存在するテクスチャ、レンダーテクスチャ、スプライト、ベクター画像アセットなどのアイコンを組み込むことで、ボタンの視覚的な機能を向上させることができます。画像アセットを参照する方法については、アセットを参照してください。

UI Builder でボタンのアイコンを追加するには、次の手順に従います。

  • ボタンの Inspector タブで、アイコン画像のドロップダウンリストから該当するアイコンを選択します。
  • または、Assets ウィンドウから、ボタンの Inspector タブにあるIcon Image フィールドへアイコンをドラッグします。

UXML でボタンのアイコンを追加するには、画像のソースを icon-image 属性に指定します。

<ui:Button name="Button" text="Button text" icon-image="/path/to/image-file.png" />

C# でボタンのアイコンを追加するには、画像ソースを iconImage プロパティに割り当てます。

Button myButton = new Button();
var buttonIconImage = Resources.Load<Texture2D>("image-file");

myButton.text = "Button text";
myButton.iconImage = buttonIconImage;

ボタンのアイコンの位置を変更する

ボタンにアイコンを追加すると、ボタンに以下の 2 つの読み取り専用のサブ要素が追加されます。

  • アイコン画像を定義する Image 要素。
  • ボタンのテキストを定義する TextElement

サブ要素は編集できませんが、ボタン要素の USS flex-direction プロパティを使用してレイアウトを変更できます。デフォルトでは、このアイコンはボタンのテキストの左側に追加されます。

ボタンアイコンの位置を変更するには、以下のようにボタンの flex-direction を調整します。

  • アイコンをボタンテキストの右側にシフトするには、row-reverse に設定します。
  • アイコンをボタンテキストの上に移動させるには、column に設定します。
  • ボタンテキストの下にアイコンを配置するには、column-reverse に設定します。

ボタンのサブ要素を使用する

ボタン要素では、texticonImage、および background-image style プロパティを使用して、ユーザーに追加情報を提供します。他のビジュアル要素と同様に、ボタンの階層にラベルや画像などのサブ要素を追加して、それらの要素の外観や動作をより細かく制御したい場合は、ユーザーに追加情報を提供することもできます。

通常、サブ要素を使用するのは以下のような場合です。

  • カスタマイズ: サブ要素を使用すると、個々の要素の外観と動作を個別にカスタマイズできます。例えば、ラベルにカスタムフォントや色を使用したり、画像に特定のアニメーションを追加したりできます。ボタンに画像要素を追加すると、シーンから要素を直接追加できます。さらに、画像要素はスケールモードと繰り返しモードもサポートしています。
  • 動的コンテンツ: ラベルまたは画像のコンテンツが動的である場合、サブ要素を使用すると、ボタンの他のプロパティに影響を与えずに、各要素のコンテンツを個別に更新することができます。
  • インタラクション: ボタン内の特定の要素に相互作用性を追加する場合、例えばユーザーがラベルだけをクリックして (ボタンの他の要素をクリックしても無視されて) アクションをトリガーできるようにする場合は、サブ要素を使用します。

プロパティは以下の目的で使用します。

  • シンプルなデザイン: ボタンのデザインがシンプルで、カスタマイズや動的コンテンツが必要ない場合は、プロパティの使用をお勧めします。
  • パフォーマンス: UI に多くのボタンがあり、それぞれがサブ要素を使用している場合は、パフォーマンスに悪影響を与える可能性があります。この場合、プロパティを使用してボタンの外観を設定する方が効率的です。
  • 一貫性: UI 全体で一貫性を維持したい場合は、プロパティを使用することで、すべてのボタンの外観と動作に一貫性を持たせることができます。

以下の UXML 例では、ボタンを作成します。

<UXML xmlns="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements">
    <Button text="UXML Button" name="the-uxml-button" />
</UXML>

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

/// <sample>
// Action to perform when button is pressed.
// Toggles the text on all buttons in 'container'.
Action action = () =>
{
    container.Query<Button>().ForEach((button) =>
    {
        button.text = button.text.EndsWith("Button") ? "Button (Clicked)" : "Button";
    });
};

// Get a reference to the Button from UXML and assign it its action.
var uxmlButton = container.Q<Button>("the-uxml-button");
uxmlButton.RegisterCallback<MouseUpEvent>((evt) => action());

// Create a new Button with an action and give it a style class.
var csharpButton = new Button(action) { text = "C# Button" };
csharpButton.AddToClassList("some-styled-button");
container.Add(csharpButton);
/// </sample>

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

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

C# クラス: Button
名前空間: UnityEngine.UIElements
基本クラス: TextElement

メンバー UXML 属性

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

名前 説明
icon-image Object Button 要素内のアイコンを表す Texture、Sprite、VectorImage。

継承された UXML 属性

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

名前 説明
binding-path string バインドするターゲットプロパティのパス。
display-tooltip-when-elided boolean true の場合、ツールチップは省略されたテキストの完全なバージョンを表示し、以前にツールチップが提供されていた場合は、それを上書きします。
emoji-fallback-support boolean テキストのレンダリング時にシステムが絵文字を検索する順序を指定します。この設定を有効にすると、グローバルな絵文字フォールバックリストが最初に検索されて、Unicode 14.0 標準で絵文字として定義されている文字が検索されます。
enable-rich-text boolean false の場合、リッチテキストタグは解析されません。
focusable boolean 要素がフォーカス可能である場合は true。
parse-escape-sequences boolean エスケープシーケンスをそのまま表示するか、それが表す文字に置き換えて表示するかを指定します。
tabindex int フォーカスリング内でフォーカス可能なものをソートするために使用される整数。0 以上の値に設定する必要があります。
text string 表示されるテキスト。

この値を変更すると、暗示的に INotifyValueChanged_1.value セッターが呼び出され、文字列型の ChangeEvent_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-button この型の要素の USS クラス名。

Unity はこの USS クラスを Button 要素のすべてのインスタンスに追加します。このクラスに適用されるスタイルは、ビジュアルツリーでスタイルシートの横または下に位置するすべてのボタンに影響します。
iconUssClassName .unity-button--with-icon アイコンを持つ Button 要素の USS クラス名。

Button 要素のインスタンスの Button.iconImage プロパティに有効な Texture が含まれている場合、Unity はこの USS クラスをそのインスタンスに追加します。このクラスに適用されるスタイルは、ビジュアルツリーでスタイルシートの横または下に位置する、アイコンを持つすべてのボタンに影響します。
ussClassName .unity-text-element この型の要素の USS クラス名。
selectableUssClassName .unity-text-element__selectable 選択可能なテキスト要素の USS クラス名。
disabledUssClassName .unity-disabled ローカルで無効にされた要素の USS クラス名。

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

追加リソース

Box
ColorField