复选框无法在混合现实工具箱V2中正常工作

时间:2019-07-10 13:40:49

标签: c# unity3d hololens windows-mixed-reality

由于您无法将函数绑定到状态,因此当前在新工具包中无法使用复选框。

GitHub上有一个开发提交,但尚不可用,因此我需要一个脚本来解决该问题,而无需更改工具包。

应该能够轻松设置启动状态,并在状态更改时调用函数-您目前尚不能。

1 个答案:

答案 0 :(得分:1)

找到了一个无需更改工具包即可使用的解决方案,并且应该在较新的版本上使用。

using UnityEngine;
using Microsoft.MixedReality.Toolkit.UI;
using UnityEngine.Events;

[RequireComponent(typeof(Interactable))]
public class CheckBoxInteractableSwitch : MonoBehaviour
{

    public bool startChecked = true;

    public UnityEvent OnCheck;
    public UnityEvent OnUncheck;

    private Interactable interactable;
    private int state = 1;

    void Start()
    {
        interactable = GetComponent<Interactable>();

        if (OnCheck == null)
            OnCheck = new UnityEvent();
        if (OnUncheck == null)
            OnUncheck = new UnityEvent();

        OnCheck.AddListener(Checked);
        OnUncheck.AddListener(UnChecked);

        //works with 2 dimensions only
        if (startChecked)
        {
            if (interactable.GetDimensionIndex() == 0) interactable.IncreaseDimension();
        }
        else
        {
            if (interactable.GetDimensionIndex() == 1) interactable.IncreaseDimension();
        }

    }

    void Update()
    {
        if (interactable == null) return;

        //state check
        if (state != interactable.GetDimensionIndex())
        {
            state = interactable.GetDimensionIndex();
            if (state == 0) OnUncheck.Invoke();
            if(state == 1) OnCheck.Invoke();
        }
    }

    private void Checked()
    {

    }

    private void UnChecked()
    {

    }
}

仅适用于复选框(二维),可以设置复选框的默认状态,还可以订阅状态更改的状态。