MRTK V2.1-第一次调用时Toggle并未将尺寸设置为1

时间:2019-11-27 10:08:10

标签: unity3d hololens mrtk

我已更新到MRTK v2.1,现在我正在为previous post中的切换而苦苦挣扎。不要误会我的意思,链接文章中的问题已修复!但是现在我遇到了另一个问题。

会发生什么:
我的场景中有一个设置面板,附加了组件DebugContent.cs。每次打开它时,OnEnable都会根据SetToggleState()的第三个参数触发并设置切换状态。因此,可以说第三个参数始终为true→DiagnosticsSystem.ShowProfilerdebugProvider.enabledspeechInputHandler.enabled是true!

在MRTK v2.0上我没有问题,但是现在在v2.1上,我的切换没有在第一时间切换。 我必须第二次打开面板,才能切换切换

//OnEnable in DebugContent.cs
private void OnEnable()
{
    // Set Profiler, Log viewer, Speech Input
    Utils.SetToggleState(profilerTgl, profilerTxt, DiagnosticsSystem.ShowProfiler);
    Utils.SetToggleState(logViewerTgl, logViewTxt, debugProvider.enabled);
    Utils.SetToggleState(speechInputTgl, speechInputTxt, speechInputHandler.enabled);
}

//SetToggleState in Utils.cs
public static void SetToggleState(Interactable comp, TextMesh tm, bool isOn)
{
    Debug.Log("Util >> SetToggleState >> Set toggle → " + comp.gameObject.name +" to → " + isOn + " >> Comp is enable → " + comp.enabled + " and has dimension → " + comp.CurrentDimension);
    if (isOn)
    {
        comp.CurrentDimension = 1;
        tm.text = "On";
    }
    else
    {
        comp.CurrentDimension = 0;
        tm.text = "Off";
    }
    Debug.Log("Util >> SetToggleState >> Toggle set to dimension → " + comp.CurrentDimension);
}

更多信息
奇怪的是,当我第一次打开面板时,切换开关的文本显示为On,但是切换开关没有被切换。仅在第二次打开切换开关时才打开面板: enter image description here
我的Debug.Log的输出也很有趣,因为当前维每次都是0:
第一次:
Util >> SetToggleState >> Set toggle → Debug_Tgl to → True >> Comp is enabled → True and has dimension → 0
Util >> SetToggleState >> Toggle set to dimension → 1
第二次:
Util >> SetToggleState >> Set toggle → Debug_Tgl to → True >> Comp is enabled → True and has dimension → 0
Util >> SetToggleState >> Toggle set to dimension → 1

我正在使用CurrentDimension,因为SetDimensionIndex已被弃用。
我在github上创建了bug report

1 个答案:

答案 0 :(得分:1)

请在 github 页面上查看响应。解决方法是,在Utils.SetToggleState之前调用OnEnableStart. DebugContent中的Interactable.Awake,这会引起问题。