初心者がちょっと躓いて解決したメモです
MRTKのToolboxから追加できるボタンに色々変更を加えたいときは[ButtonConfigHelper]クラスを使うと便利
やる事
スクリプトでまずモジュールをインポート
using Microsoft.MixedReality.Toolkit.UI;
変数を定義して
private ButtonConfigHelper _buttonMRTK;
Start()やAwake()でコンポーネントを取得
_buttonMRTK = GetComponent<ButtonConfigHelper>();
delegateでボタンを押したときの関数を割り当てるには
ButtonConfigHelperクラスにある[OnClick.AddListener(関数名)]を使う
UnityEngine.UIのボタンとの違いは、1文字目が大文字になってる事
(UnityEngine.UIのボタンはonClick.AddListener(関数名))でdelegate出来る
_buttonMRTK.OnClick.AddListener(OnClick);
アイコン直下のテキストを動的に変更するには
ButtonConfigHelperのMainLabelTextに変更を加える
_buttonMRTK.MainLabelText = "String"
アイコンを動的に変更するには
マイクのON/OFF状態を示す_isActive変数
パネルにマイクの入力ON/OFFを切り替えるボタンを設置してる。
ON/OFFになってるのかわかりやすくするために、クリックしたらアイコンが切り替わるようにする
まずアイコンを表示するために、Button Config Helperコンポーネントを確認する
すると、Icon Setにアイコンのリストがまとまったもの(IconSet)が紐づけられている
(IconSet)をインスペクターで確認すると、4種類のアイコン型があるのが確認できる
Quad, Sprite, Fontそして Charの型が存在する
今回自分の画像はQuadなので、SetQuadIconByName関数を用いてアイコン画像を指定します
Sprite, Font, CharならSetQuadIconByNameのQuadをそれぞれの型に変えます。
SetQuadIconByName関数にはアイコン名前を入力します
以下のコードでは_isActive変数にマイクがON/OFFになってるかを判定し、ONなら
OFFなら赤いナナメ線の入ったものをアイコンとして表示します
_buttonMRTK.SetQuadIconByName(_isActive ? "EnableMicrophone" : "DisableMicrophone");