本日は MRTK の小ネタ枠です。
MRTKのボタンプレハブをスクリプトからイベントを登録する方法についてです。
MRTKのボタンプレハブ
MRTK には様々なボタンのサンプルが提供されていおり、それらには ButtonConfigHelper コンポーネントが設定されています。
この ButtonConfigHelper コンポーネントを参照してタップ時のイベントの追加・削除やテキストの変更がスクリプトからも行えます。
サンプルコード
スクリプトからボタンにイベントを追加・削除する以下のサンプルスクリプトを作成しました。
・ButtonControl.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Microsoft.MixedReality.Toolkit.UI;
public class ButtonControl : MonoBehaviour
{
[SerializeField]
private ButtonConfigHelper buttonConfigHelper;
<summary>
</summary>
[ContextMenu("AddButtonListener")]
public void AddButtonListener()
{
buttonConfigHelper.OnClick.AddListener(ChangeText);
}
<summary>
</summary>
[ContextMenu("RemoveButtonListener")]
public void RemoveButtonListener()
{
buttonConfigHelper.OnClick.RemoveListener(ChangeText);
}
<summary>
</summary>
private void ChangeText()
{
buttonConfigHelper.MainLabelText = "CurrentTime : " + System.DateTime.Now.ToString();
}
}
適当なオブジェクトにサンプルスクリプトを設定して、ボタンの参照を追加します。
動作確認
シーンを再生して動作を確認します。
デフォルトではタップ時のイベントを設定していないため、ボタンをタップしても何もイベントは発生しません。
サンプルスクリプトのコンテキストメニューから関数を実行してイベントを登録します。
もう一度ボタンをタップしてみると、イベントが発生してボタンの文字列が変わりました。