5.ボタンの追加およびピースの位置のリセット
前のチュートリアルでは、ポーン コンポーネントにハンド インタラクション アクターを追加し、チェス盤にマニピュレーター コンポーネントを追加して、両方を対話型にしました。 このセクションでは、引き続き Mixed Reality ツールキットの UX Tools プラグインを使用して、ブループリントの新しい関数とアクター参照を使用してチェス アプリを作成します。 このセクションの完了までに、デバイスまたはエミュレーターに Mixed Reality アプリをパッケージ化してデプロイする準備が整います。
目標
- 対話型ボタンの追加
- ピースの位置をリセットする関数を作成する
- 押されたときに関数をトリガーするボタンをフックする
Reset 関数の作成
最初のタスクは、チェスのピースをシーンの元の位置にリセットする関数のブループリントを作成することです。
WhiteKing を開き、[My Blueprint](マイ ブループリント) の [Functions](関数) セクションの横にある [+] アイコンをクリックして、「Reset Location」という名前を付けます。
SetActorRelativeTransform ノードを作成するには、ブループリント グリッドの Reset Location から実行をドラッグしてリリースします。
- この関数では、アクターの親に対して相対的に変換 (位置、回転、スケール) を設定します。 この関数を使用すると、ボードが元の位置から移動した場合でもボード上のキングの位置がリセットされます。
イベント グラフ内で右クリックし、 [変換の作成] を選択し、 [場所] を X =-26、Y = 4、Z = 0 に変更します。
- SetActorRelativeTransform の [新しい相対変換] ピンに [戻り値] を接続します。
メイン ウィンドウに戻る前に、プロジェクトをコンパイルして保存します。
ボタンを追加する
関数が正しくセットアップされたので、次のタスクでは、タッチしたときにオフにするボタンを作成します。
- [Add New](新規追加) > [Blueprint Class](ブループリント クラス) をクリックし、[All Classes](すべてのクラス) セクションを展開して、UxtPressableButtonActor を見つけます。
- これに ResetButton という名前を付け、ダブルクリックしてブループリントを開きます。
- [コンポーネント] パネルで [ResetButton(self)] が選択されていることを確認します。 [詳細] パネルで、 [ボタン] セクションに移動します。 既定の [Button Label](ボタン ラベル) を「リセット」に変更し、 [Button Icon Brush](ボタン アイコンのブラシ) セクションを展開し、 [Open Icon Brush Editor](Icon Brush Editor を開く) ボタンをクリックします。
アイコン ブラシ エディターが開き、ボタンの新しいアイコンを選択できます。
ボタンの構成のために調整できる設定は、他にも多くあります。 UXT Pressable Button コンポーネントの詳細については、ドキュメントをご覧ください。
- [コンポーネント] パネルで [ButtonComponent (Inherited)](ButtonComponent (継承)) をクリックし、 [詳細] パネルを下にスクロールして [イベント] セクションを表示します。
- [On Button Pressed](ボタンが押されたとき) の横にある緑色の + のボタンをクリックして、ボタンが押されたときに呼び出されるイベントをイベント グラフに追加します。
ここから、レベルの WhiteKing アクターへの参照が必要な WhiteKing の Reset Location 関数を呼び出す必要があります。
- [My Blueprint](マイ ブループリント) パネルの [変数] セクションに移動し、 []+ ボタンをクリックして、変数に WhiteKing という名前を付けます。
- [Details](詳細) パネルで、 [Variable Type](変数の種類) の横にあるドロップダウンを選択し、WhiteKing を検索して、 [Object Reference](オブジェクト参照) を選択します。
- [Instance Editable](インスタンスの編集可能) の横にあるチェック ボックスをオンにすると、変数をメイン レベルから設定できるようになります。
- WhiteKing 変数を [My Blueprint](マイ ブループリント) > [Variables](変数) から Reset Button イベント グラフにドラッグし、[WhiteKing の取得] を選択します。
関数の起動
あとは、ボタンが押されたときに Reset 関数を正式に起動するだけです。
- WhiteKing の出力ピンをドラッグしてリリースし、新しいノードを配置します。 Reset Location 関数を選択します。 最後に、 [On Button Pressed](ボタンが押されたとき) から出力実行ピンを [Reset Location] の入力実行ピンにドラッグします。 ResetButton ブループリントの [Compile](コンパイル) と [Save](保存) の後、メイン ウィンドウに戻ります。
- ResetButton をビューポートにドラッグし、その位置を X = 50、 Y = -25、Z = 10 に設定します。 回転を Z = 180 に設定します。 [Default](既定) で、WhiteKing 変数の値を WhiteKing に設定します。
アプリを実行し、チェスのピースを新しい場所に移動し、先ほどの HoloLens 2 スタイル ボタンを押すと、リセット ロジックが動作するのを確認できます。
これで、対話可能なチェスの駒とボードを備えた Mixed Reality アプリと、駒の位置をリセットする、完全に機能するボタンが完成しました。 ここまでで完成したアプリは GitHub リポジトリにあります。 このチュートリアルをさらに進めて、リセット ボタンを押したらボード全体がリセットされるように、チェスの残りの駒を設定してみてください。
このチュートリアルの最後のセクションに進む準備ができました。そこでは、アプリをパッケージ化してデバイスまたはエミュレーターにデプロイする方法について説明します。
重要
アプリケーションをデバイスまたはエミュレーターにデプロイする前のこの時点で、推奨される Unreal パフォーマンス設定 を使用してプロジェクトを更新する必要があります。