夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

ボタンを複製し複数のオブジェクトを均等にレイアウトする。 HoloLens2アプリのチュートリアルその⑦

Microsoftのドキュメント[Microsoft Docs]ではHoloLens 2の入門チュートリアルが公開されています。

ツールのインストールから詳しく掲載されているためこちらを今回勉強しながらHoloLens 2が手元にないためHoloLens 1stで動かしてみます。

 チュートリアルは以下で公開されています。

docs.microsoft.com

前回の記事はこちら

redhologerbera.hatenablog.com

前回はMRTKで用意されているHoloLens 2用のボタンとUnity側で提供されている基本的なキューブオブジェクトを配置し、ボタンを押すことでキューブのマテリアルが変更するところまで作成しました。

〇MRTK のGridObject Collectionを使用したレイアウトの作成

●1. 親オブジェクトにボタンオブジェクトを親とする

[Hierarchy]ウィンドウ内の空の場所を右クリックし、[Create Empty]を選択します

f:id:Holomoto-Sumire:20200315115703j:plain

新しく作成したオブジェクトを右クリックし、 [Change name] を選択して、適切な名前に変更します。 ここではチュートリアル通り[buttoncollection]と名付けます。

 f:id:Holomoto-Sumire:20200315120041j:plain

[PressableButtonHoloLens2]オブジェクトを選択し、 buttoncollectionオブジェクトの上にドラッグして、buttoncollection オブジェクトの子にします。

f:id:Holomoto-Sumire:20200315120243j:plain

[PressableButtonHoloLens2]オブジェクトを右クリックし、 [Clone] を選択してコピーを作成します。(この作業はショートカットキーの[Ctrl]キー+[D]キーでも行えます。)

この作業を繰り返し5つのボタンを作成します。

f:id:Holomoto-Sumire:20200315121421j:plain

●2. Grid オブジェクトコレクション (スクリプト) コンポーネントを追加して構成する

 複製したボタンはすべて同じ位置に配置されているため重なってしまっています。

 [Transform]を手動で変更することもできますが、多くのオブジェクトを均等に配置するためには計算する必要があるため面倒です。

 MRTKではアタッチされたオブジェクトの子オブジェクトすべてのレイアウトを設定に合わせ配置する[GridObjectCollection]が用意されています。

 [Hierarchy]ウィンドウで[ButtonCollection]オブジェクトを選択した状態で、[Inspector]ウィンドウで[Add component]をクリックし、[GridObjectCollection.cs] を検索して選択します。これにより、[GridObjectCollection] コンポーネントが buttoncollection オブジェクトに追加されます。

f:id:Holomoto-Sumire:20200315121145j:plain

 次のように、[GridObjectCollection]を設定します。

[Num Rows] を1に変更すると、すべてのボタンが1つの行に合わせて調整されます。

f:id:Holomoto-Sumire:20200315121539j:plain

[Cell Width]を0.05 に変更して、ボタンの幅を0.5にします。

f:id:Holomoto-Sumire:20200315121727j:plain

[Update Collection]をクリックすることで設定したレイアウトが反映されます。

f:id:Holomoto-Sumire:20200315122156j:plain

実行します。

 ボタンを押すことでキューブの色が変化します。

 f:id:Holomoto-Sumire:20200315122937g:plain

〇シーンへのテキストの追加

 ここでは[TextMeshPro]を用いてbuttonColectionの下にシンプルなラベルを追加します。

ButtonCollection オブジェクトを右クリックし、[ 3DObject> Text-TextMeshPro ] を選択して、[TextMeshPro]オブジェクトを buttoncollection オブジェクトの子オブジェクトとして作成します。

f:id:Holomoto-Sumire:20200315123713j:plain

そのままでは文字の大きさが大きすぎます。

f:id:Holomoto-Sumire:20200315124523j:plain

フォントサイズを変更します。 [TextMeshPro(Script)]の[FontSixe]を[0.2]に設定します。

f:id:Holomoto-Sumire:20200315124357j:plain

新しく作成された [Text(TMP) ]を選択したまま、[Inspector] ウィンドウで、buttoncollectionの下にラベルが表示されるように、その位置とサイズを変更します。

 ・[RectTransform]のPos Yを-0.0425 に変更します。

f:id:Holomoto-Sumire:20200315124021j:plain

 ・四角形の変換幅である[Width]を0.24 に変更します

 ・四角形の変換の高さを0.024 に変更します。

f:id:Holomoto-Sumire:20200315124221j:plain

これで文字の大きさが丁度良いものになりました。

 次にレイアウトを変更します

 ・[TextMeshPro (script)]のTextを[ButonCollection]に変更する

f:id:Holomoto-Sumire:20200315124817j:plain

 ・[TextMeshPro (script)] のフォントスタイルを太字に変更する。

f:id:Holomoto-Sumire:20200315125456j:plain

 ・[TextMeshPro (script)] の配置を中央ぞろえに変更する

f:id:Holomoto-Sumire:20200315125708j:plain

以上でボタンの配置が完了しました。

f:id:Holomoto-Sumire:20200315125800j:plain