土鍋で雑多煮

UnityでXR・ゲーム開発をしています。学んだことや備忘録、趣味の記録などを書いていきます。

MENU

【Unity】UI Toolkitでランタイムに値を反映する

はじめに

どうも、土鍋です。

UI Toolkitでランタイム処理に向けてイベントの登録や値変更通知の方法を調べました。

コールバックを設定する

UI要素のマウス押下のイベントのコールバックを設定するには以下のようにできます。

VisualElement myElement = new VisualElement();

myElement.RegisterCallback<MouseDownEvent>()

値の変更を購読する

オブジェクトの位置が変わったらUIのText変更して、
Textを変更してもオブジェクトの位置が移動するようなコードを書きました。

RegisterValueChangedCallback()を使用することで変更された値を流し込むことができます。

public class UITest2 : MonoBehaviour
{
    [SerializeField] private GameObject moveObject;
    
    private Vector3Field Vector3Field;
    
    void Start()
    {
        Vector3Field = GetComponent<UIDocument>().rootVisualElement.Q<Vector3Field>("test-vector3");
        
        Vector3Field.RegisterValueChangedCallback(x => moveObject.transform.position = x.newValue);
    }

    void Update()
    {
        Vector3Field.value = moveObject.transform.position;
    }
}

参考

docs.unity.cn

light11.hatenadiary.com