我已更新到MRTK v2.1,现在我正在为previous post中的切换而苦苦挣扎。不要误会我的意思,链接文章中的问题已修复!但是现在我遇到了另一个问题。
会发生什么:
我的场景中有一个设置面板,附加了组件DebugContent.cs
。每次打开它时,OnEnable
都会根据SetToggleState()
的第三个参数触发并设置切换状态。因此,可以说第三个参数始终为true→DiagnosticsSystem.ShowProfiler
,debugProvider.enabled
和speechInputHandler.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
,但是切换开关没有被切换。仅在第二次打开切换开关时才打开面板:
我的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。
答案 0 :(得分:1)
请在 github 页面上查看响应。解决方法是,在Utils.SetToggleState
之前调用OnEnable
和Start. DebugContent
中的Interactable.Awake
,这会引起问题。