MRTK V2.1 - Toggle 不会在第一次调用时将维度设置为 1
MRTK V2.1 - Toggle does not set dimension to 1 at first call
我已更新到 MRTK v2.1,现在我正在为 的切换而苦苦挣扎。不要误会我的意思,链接 post 中的问题已解决!但现在我遇到了不同的问题。
会发生什么:
我的场景中有一个设置面板,组件 DebugContent.cs
附加到它。每次我打开它时,OnEnable
都会根据 SetToggleState()
的第三个参数触发并设置我的切换状态。因此,假设第三个参数始终为真 → DiagnosticsSystem.ShowProfiler
、debugProvider.enabled
和 speechInputHandler.enabled
为真!
在 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
请参阅 github 页面上的回复。作为解决方法,在 OnEnable
和 Start. DebugContent
中调用 Utils.SetToggleState
OnEnable 在 Interactable.Awake
之前被调用,这使得问题
我已更新到 MRTK v2.1,现在我正在为
会发生什么:
我的场景中有一个设置面板,组件 DebugContent.cs
附加到它。每次我打开它时,OnEnable
都会根据 SetToggleState()
的第三个参数触发并设置我的切换状态。因此,假设第三个参数始终为真 → DiagnosticsSystem.ShowProfiler
、debugProvider.enabled
和 speechInputHandler.enabled
为真!
在 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.
请参阅 github 页面上的回复。作为解决方法,在 OnEnable
和 Start. DebugContent
中调用 Utils.SetToggleState
OnEnable 在 Interactable.Awake
之前被调用,这使得问题