fix: resolve Next/Previous step and UI skipping bugs
This commit is contained in:
@@ -105,7 +105,7 @@ public class UIManager : MonoBehaviour
|
||||
var btn = btnFS.GetComponent<Button>();
|
||||
if (btn != null)
|
||||
{
|
||||
btn.onClick.AddListener(ToggleFullScreen);
|
||||
btn.onClick.RemoveListener(ToggleFullScreen); btn.onClick.AddListener(ToggleFullScreen);
|
||||
Debug.Log("UIManager: Navbar/FullScreen 绑定成功 -> ToggleFullScreen");
|
||||
}
|
||||
}
|
||||
@@ -118,7 +118,7 @@ public class UIManager : MonoBehaviour
|
||||
var btn = btnPrev.GetComponent<Button>();
|
||||
if (btn != null)
|
||||
{
|
||||
btn.onClick.AddListener(OnPreviousClicked);
|
||||
btn.onClick.RemoveListener(OnPreviousClicked); btn.onClick.AddListener(OnPreviousClicked);
|
||||
Debug.Log("UIManager: Navbar/Previous 绑定成功 -> OnPreviousClicked");
|
||||
}
|
||||
}
|
||||
@@ -131,7 +131,7 @@ public class UIManager : MonoBehaviour
|
||||
var btn = btnNext.GetComponent<Button>();
|
||||
if (btn != null)
|
||||
{
|
||||
btn.onClick.AddListener(OnNextClicked);
|
||||
btn.onClick.RemoveListener(OnNextClicked); btn.onClick.AddListener(OnNextClicked);
|
||||
Debug.Log("UIManager: Navbar/Next 绑定成功 -> OnNextClicked");
|
||||
}
|
||||
}
|
||||
@@ -144,7 +144,7 @@ public class UIManager : MonoBehaviour
|
||||
var btn = btnMode.GetComponent<Button>();
|
||||
if (btn != null)
|
||||
{
|
||||
btn.onClick.AddListener(OnSwitchModeClicked);
|
||||
btn.onClick.RemoveListener(OnSwitchModeClicked); btn.onClick.AddListener(OnSwitchModeClicked);
|
||||
Debug.Log("UIManager: Navbar/PracticeMode 绑定成功 -> OnSwitchModeClicked");
|
||||
}
|
||||
}
|
||||
@@ -157,7 +157,7 @@ public class UIManager : MonoBehaviour
|
||||
var btn = btnBack.GetComponent<Button>();
|
||||
if (btn != null)
|
||||
{
|
||||
btn.onClick.AddListener(OnReturnClicked);
|
||||
btn.onClick.RemoveListener(OnReturnClicked); btn.onClick.AddListener(OnReturnClicked);
|
||||
Debug.Log("UIManager: Navbar/BtnBack 绑定成功 -> OnReturnClicked");
|
||||
}
|
||||
}
|
||||
@@ -186,11 +186,11 @@ public class UIManager : MonoBehaviour
|
||||
|
||||
private void BindButtons()
|
||||
{
|
||||
if (_btnFullScreen != null) { _btnFullScreen.onClick.AddListener(ToggleFullScreen); Debug.Log("UIManager: _btnFullScreen 绑定成功"); }
|
||||
if (_btnPrevious != null) { _btnPrevious.onClick.AddListener(OnPreviousClicked); Debug.Log("UIManager: _btnPrevious 绑定成功"); }
|
||||
if (_btnNext != null) { _btnNext.onClick.AddListener(OnNextClicked); Debug.Log("UIManager: _btnNext 绑定成功"); }
|
||||
if (_btnSwitchMode != null) { _btnSwitchMode.onClick.AddListener(OnSwitchModeClicked); Debug.Log("UIManager: _btnSwitchMode 绑定成功"); }
|
||||
if (_btnReturn != null) { _btnReturn.onClick.AddListener(OnReturnClicked); Debug.Log("UIManager: _btnReturn 绑定成功"); }
|
||||
if (_btnFullScreen != null) { _btnFullScreen.onClick.RemoveListener(ToggleFullScreen); _btnFullScreen.onClick.AddListener(ToggleFullScreen); Debug.Log("UIManager: _btnFullScreen 绑定成功"); }
|
||||
if (_btnPrevious != null) { _btnPrevious.onClick.RemoveListener(OnPreviousClicked); _btnPrevious.onClick.AddListener(OnPreviousClicked); Debug.Log("UIManager: _btnPrevious 绑定成功"); }
|
||||
if (_btnNext != null) { _btnNext.onClick.RemoveListener(OnNextClicked); _btnNext.onClick.AddListener(OnNextClicked); Debug.Log("UIManager: _btnNext 绑定成功"); }
|
||||
if (_btnSwitchMode != null) { _btnSwitchMode.onClick.RemoveListener(OnSwitchModeClicked); _btnSwitchMode.onClick.AddListener(OnSwitchModeClicked); Debug.Log("UIManager: _btnSwitchMode 绑定成功"); }
|
||||
if (_btnReturn != null) { _btnReturn.onClick.RemoveListener(OnReturnClicked); _btnReturn.onClick.AddListener(OnReturnClicked); Debug.Log("UIManager: _btnReturn 绑定成功"); }
|
||||
|
||||
// 注意: _btnLimbFixation/_btnSplintFixation 不再在这里绑定 SwitchFixation,
|
||||
// 固定方式选择由 PageController 的 OnFixationSelected 统一处理,避免双重触发污染 StepManager 状态。
|
||||
@@ -247,12 +247,12 @@ public class UIManager : MonoBehaviour
|
||||
private void UpdateNavigationButtons()
|
||||
{
|
||||
if (_stepManager == null) return;
|
||||
if (_btnPrevious != null) _btnPrevious.interactable = _stepManager.CurrentStepIndex > 0;
|
||||
|
||||
if (_btnPrevious != null) _btnPrevious.interactable = true;
|
||||
if (_btnNext != null)
|
||||
{
|
||||
var label = _btnNext.GetComponentInChildren<Text>();
|
||||
bool isLast = _stepManager.CurrentStepIndex >= _stepManager.TotalSteps - 1;
|
||||
if (label != null) label.text = isLast ? "完成" : "下一步";
|
||||
if (label != null) label.text = "下一步";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -299,15 +299,15 @@ public class UIManager : MonoBehaviour
|
||||
Debug.Log($"UIManager: [ToggleFullScreen] 全屏 = {Screen.fullScreen}");
|
||||
}
|
||||
|
||||
private void OnPreviousClicked()
|
||||
{
|
||||
Debug.Log("UIManager: [OnPreviousClicked] -> 上一步");
|
||||
_stepManager?.PreviousStep();
|
||||
}
|
||||
|
||||
private void OnNextClicked()
|
||||
{
|
||||
Debug.Log("UIManager: [OnNextClicked] -> 下一步");
|
||||
Debug.LogError("====== UIManager: 点击了【下一步】按钮! ======");
|
||||
if (_stepManager == null)
|
||||
{
|
||||
_stepManager = FindObjectOfType<StepManager>();
|
||||
Debug.LogError($"====== UIManager: 重新寻找 StepManager 结果: {_stepManager != null} ======");
|
||||
}
|
||||
|
||||
if (_stepManager != null && _stepManager.Mode == ExperimentMode.Exam)
|
||||
{
|
||||
var step = _stepManager.GetCurrentStep();
|
||||
@@ -317,6 +317,13 @@ public class UIManager : MonoBehaviour
|
||||
_stepManager?.NextStep();
|
||||
}
|
||||
|
||||
private void OnPreviousClicked()
|
||||
{
|
||||
Debug.LogError("====== UIManager: 点击了【上一步】按钮! ======");
|
||||
if (_stepManager == null) _stepManager = FindObjectOfType<StepManager>();
|
||||
_stepManager?.PreviousStep();
|
||||
}
|
||||
|
||||
private void OnSwitchModeClicked()
|
||||
{
|
||||
if (_stepManager == null) return;
|
||||
|
||||
Reference in New Issue
Block a user