Version: 2023.1
言語: 日本語
UXML 要素 Box
UXML 要素 ColorField

UXML 要素 Button

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

Create a Button

You can create a Button with UI Builder, UXML, or C#. The following C# example creates a Button with a label:

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

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

Button の textbackground-image プロパティを使って、ユーザーに追加情報を提供することができます。また、ボタンの階層に Label や Image などのサブ要素を追加し、それらの要素の外観や動作をより細かく制御したい場合は、ユーザーに追加情報を提供することができます。

一般的には、以下のような場合にサブ要素を使用します。

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

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

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

The following UXML example creates a Button:

[!code-xml[(External/Resources/editor_resources/Assets/Editor Default Resources/UIPackageResources/Snippets/UXML/ButtonSnippet.uxml)]

The following C# example illustrates some of the customizable functionalities of the Button:

[!code-cs[(Modules/UIElementsSamplesEditor/Snippets/ButtonSnippet.cs#sample)]

To try this example live in Unity, go to Window > UI Toolkit > Samples.

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

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

継承された UXML 属性

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

名前 説明
binding-path string バインドされるべきターゲットプロパティのパス。
display-tooltip-when-elided boolean true の場合、ツールチップは省略されたテキストの完全なバージョンを表示し、以前にツールチップが提供されていた場合は、それをオーバーライドします。
enable-rich-text boolean false の場合、リッチテキストタグは解析されません。
focusable boolean 要素がフォーカス可能である場合は true。
parse-escape-sequences boolean Specifies whether escape sequences are displayed as is or if they are replaced by the character they represent.
tabindex int フォーカスリング内でフォーカス可能なものをソートするために使用される整数。0 以上であることが必要です。
text string The text to be displayed.

Changing this value will implicitly invoke the INotifyValueChanged_1.value setter, which will raise a ChangeEvent_1 of type string.

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

名前 説明
content-container string 子要素はそれに追加されますが、通常は要素自体と同じです。
name string この VisualElement の名前。

このプロパティを使用して、特定の要素を対象とする USS セレクターを記述します。要素には一意の名前を付けるのが標準的です。
picking-mode UIElements.PickingMode mouseEvents または IPanel.Pick クエリの間にこの要素を選択 (ピック) できるかどうかを決定します。
style string この要素のスタイルオブジェクトへの参照。

C# でこのオブジェクトに書き込まれた USS ファイルまたはインラインスタイルから計算されたデータが含まれます。
toolbar 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 要素の全てのインスタンスに加えます。このクラスに適用されるスタイルは、ビジュアルツリーでスタイルシートの横または下に位置するすべてのボタンに影響します。
ussClassName .unity-text-element この型の要素の USS クラス名。
disabledUssClassName .unity-disabled ローカルで無効にされた要素の USS クラス名。

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

その他の参考資料

UXML 要素 Box
UXML 要素 ColorField