Флажок не работает, как задумано в Mixed reality toolkit V2 - PullRequest
0 голосов
/ 10 июля 2019

Флажки в настоящее время непригодны для использования в новом наборе инструментов, поскольку вы не можете привязать функции к состояниям.

В GitHub есть коммит для разработки, но он еще не используется, поэтому мне нужен сценарий для обхода без изменения инструментария.

Должен быть в состоянии легко установить начальное состояние и вызывать функции при изменении состояния - что вы в настоящее время не можете.

1 Ответ

1 голос
/ 12 июля 2019

Нашли решение, которое работает без изменения инструментария и должно работать на более новых версиях.

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()
    {

    }
}

Работает только с флажками (2 измерения), вы можете установить состояние по умолчанию для флажка, и выможно подписаться на состояния при изменении состояния.

...