diff --git a/Assets/Scenes/main.unity b/Assets/Scenes/main.unity index ed7488d..ae8b05e 100644 --- a/Assets/Scenes/main.unity +++ b/Assets/Scenes/main.unity @@ -213,6 +213,7 @@ GameObject: - component: {fileID: 37271318} - component: {fileID: 37271317} - component: {fileID: 37271316} + - component: {fileID: 37271320} m_Layer: 0 m_Name: Bandage m_TagString: Bandage @@ -306,6 +307,29 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &37271320 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 37271315} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cbf0e86605f7b485f8ff25c5810d30c0, type: 3} + m_Name: + m_EditorClassIdentifier: + IsDraggable: 1 + SnapTarget: {fileID: 0} + OnDragStartEvent: + m_PersistentCalls: + m_Calls: [] + OnDragEndEvent: + m_PersistentCalls: + m_Calls: [] + OnSnappedEvent: + m_PersistentCalls: + m_Calls: [] --- !u!1 &96184418 GameObject: m_ObjectHideFlags: 0 @@ -318,6 +342,7 @@ GameObject: - component: {fileID: 96184421} - component: {fileID: 96184420} - component: {fileID: 96184419} + - component: {fileID: 96184423} m_Layer: 0 m_Name: Splint m_TagString: Splint @@ -411,6 +436,29 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &96184423 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 96184418} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cbf0e86605f7b485f8ff25c5810d30c0, type: 3} + m_Name: + m_EditorClassIdentifier: + IsDraggable: 1 + SnapTarget: {fileID: 0} + OnDragStartEvent: + m_PersistentCalls: + m_Calls: [] + OnDragEndEvent: + m_PersistentCalls: + m_Calls: [] + OnSnappedEvent: + m_PersistentCalls: + m_Calls: [] --- !u!1 &153434359 GameObject: m_ObjectHideFlags: 0 @@ -550,7 +598,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &188350343 RectTransform: m_ObjectHideFlags: 0 @@ -652,6 +700,82 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 188350342} m_CullTransparentMesh: 1 +--- !u!1 &200058300 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 200058301} + - component: {fileID: 200058303} + - component: {fileID: 200058302} + m_Layer: 0 + m_Name: ExperimentPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &200058301 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 200058300} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 617526393} + m_Father: {fileID: 1642393469} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.00016403, y: 0.0000095367} + m_SizeDelta: {x: 2094.7, y: 1080} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &200058302 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 200058300} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &200058303 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 200058300} + m_CullTransparentMesh: 1 --- !u!1 &227678438 GameObject: m_ObjectHideFlags: 0 @@ -2174,6 +2298,126 @@ SphereCollider: serializedVersion: 3 m_Radius: 0.15 m_Center: {x: 0, y: 0, z: 0} +--- !u!1 &617526392 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 617526393} + - component: {fileID: 617526396} + - component: {fileID: 617526395} + - component: {fileID: 617526394} + m_Layer: 0 + m_Name: BtnBack + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &617526393 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 617526392} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 200058301} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 788.9999, y: 410.9999} + m_SizeDelta: {x: 101, y: 101} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &617526394 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 617526392} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 617526395} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &617526395 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 617526392} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 768da18ab8d354e999b2d5839b6ff918, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &617526396 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 617526392} + m_CullTransparentMesh: 1 --- !u!1 &672149916 GameObject: m_ObjectHideFlags: 0 @@ -2186,6 +2430,7 @@ GameObject: - component: {fileID: 672149919} - component: {fileID: 672149918} - component: {fileID: 672149917} + - component: {fileID: 672149921} m_Layer: 0 m_Name: Shoe m_TagString: Shoe @@ -2279,6 +2524,29 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &672149921 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 672149916} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cbf0e86605f7b485f8ff25c5810d30c0, type: 3} + m_Name: + m_EditorClassIdentifier: + IsDraggable: 1 + SnapTarget: {fileID: 0} + OnDragStartEvent: + m_PersistentCalls: + m_Calls: [] + OnDragEndEvent: + m_PersistentCalls: + m_Calls: [] + OnSnappedEvent: + m_PersistentCalls: + m_Calls: [] --- !u!1 &717077354 GameObject: m_ObjectHideFlags: 0 @@ -4137,6 +4405,126 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1285985825} m_CullTransparentMesh: 1 +--- !u!1 &1329058527 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1329058528} + - component: {fileID: 1329058531} + - component: {fileID: 1329058530} + - component: {fileID: 1329058529} + m_Layer: 0 + m_Name: BtnBack + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1329058528 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1329058527} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1813870030} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 788.9999, y: 410.9999} + m_SizeDelta: {x: 101, y: 101} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1329058529 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1329058527} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1329058530} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &1329058530 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1329058527} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 768da18ab8d354e999b2d5839b6ff918, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1329058531 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1329058527} + m_CullTransparentMesh: 1 --- !u!1 &1364120476 GameObject: m_ObjectHideFlags: 0 @@ -5215,7 +5603,7 @@ MonoBehaviour: m_ScaleFactor: 1 m_ReferenceResolution: {x: 1920, y: 1080} m_ScreenMatchMode: 0 - m_MatchWidthOrHeight: 0.5 + m_MatchWidthOrHeight: 1 m_PhysicalUnit: 3 m_FallbackScreenDPI: 96 m_DefaultSpriteDPI: 96 @@ -5266,6 +5654,7 @@ RectTransform: - {fileID: 818830065} - {fileID: 1812357847} - {fileID: 1813870030} + - {fileID: 200058301} - {fileID: 188350343} - {fileID: 1037678402} - {fileID: 1819847501} @@ -5283,7 +5672,7 @@ MonoBehaviour: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1642393464} - m_Enabled: 0 + m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 11edd93e0776546a3b8545535d7dd5e1, type: 3} m_Name: @@ -5544,9 +5933,10 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 1679262202} + - component: {fileID: 1679262203} m_Layer: 0 m_Name: Ground - m_TagString: Untagged + m_TagString: Ground m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 @@ -5568,6 +5958,27 @@ Transform: - {fileID: 1836867098} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1679262203 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1679262201} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1699839558 GameObject: m_ObjectHideFlags: 0 @@ -6087,12 +6498,13 @@ RectTransform: m_Children: - {fileID: 1913973801} - {fileID: 1015007395} + - {fileID: 1329058528} m_Father: {fileID: 1642393469} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 2005.4, y: 1034.1} + m_AnchoredPosition: {x: 0.00016403, y: 0.0000095367} + m_SizeDelta: {x: 2094.7, y: 1080} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1813870031 MonoBehaviour: @@ -6225,7 +6637,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &1819847501 RectTransform: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/UI/PageController.cs b/Assets/Scripts/UI/PageController.cs index 020e867..50a2313 100644 --- a/Assets/Scripts/UI/PageController.cs +++ b/Assets/Scripts/UI/PageController.cs @@ -1,10 +1,6 @@ using UnityEngine; using UnityEngine.UI; -/// -/// 管理首页 -> 模式选择页 -> 固定方式选择页 -> 实验界面 的切换。 -/// 挂在 Canvas 上,与 UIManager 协同工作。 -/// public class PageController : MonoBehaviour { [Header("=== 三个主页面 ===")] @@ -12,6 +8,10 @@ public class PageController : MonoBehaviour [SerializeField] private GameObject _modeSelectPanel; [SerializeField] private GameObject _fixationPanel; + [Header("=== 实验页面 ===")] + [SerializeField] private GameObject _experimentPanel; + [SerializeField] private Button _btnExperimentBack; + [Header("=== 实验内 UI(由 UIManager 管理)===")] [SerializeField] private UIManager _uiManager; @@ -32,14 +32,13 @@ public class PageController : MonoBehaviour [Header("=== 模式说明文案 ===")] [SerializeField] [TextArea(2, 4)] private string _practiceModeDesc = - "● 模拟练习模式:不限时长,可反复练习。系统不评分,帮助您熟悉实验流程和操作步骤。"; + "模拟练习模式:不限时长,可反复练习。系统不评分,帮助您熟悉实验流程和操作步骤。"; [SerializeField] [TextArea(2, 4)] private string _examModeDesc = - "● 考核评估模式:限定时间,完成后系统自动评分,并提供详细反馈报告。"; + "考核评估模式:限定时间,完成后系统自动评分,并提供详细反馈报告。"; [Header("=== 编辑器预览(仅 Editor 模式有效)===")] [SerializeField] private EditorPreviewPage _editorPreview = EditorPreviewPage.None; - // Page 枚举改为 public,Inspector 中可通过 _editorPreview 切换 public enum Page { Home, ModeSelect, Fixation, Experiment } public enum EditorPreviewPage { None, Home, ModeSelect, Fixation, Experiment } @@ -62,6 +61,9 @@ public class PageController : MonoBehaviour if (_btnLimbFixation != null) _btnLimbFixation.onClick.AddListener(() => OnFixationSelected(FixationMethod.LimbFixation)); if (_btnSplintFixation != null) _btnSplintFixation.onClick.AddListener(() => OnFixationSelected(FixationMethod.SplintFixation)); + // 绑定实验页面按钮 + if (_btnExperimentBack != null) _btnExperimentBack.onClick.AddListener(OnExperimentBackClicked); + // 初始化模式说明文字 if (_modeDescText != null) { @@ -73,15 +75,10 @@ public class PageController : MonoBehaviour } #if UNITY_EDITOR - /// - /// 在 Inspector 中修改 _editorPreview 下拉框时,立即切换 Scene View 中显示的页面, - /// 方便编辑不同页面的 UI 布局。仅在非运行状态下生效。 - /// private void OnValidate() { if (Application.isPlaying) return; - // 延迟一帧执行,避免在序列化过程中修改场景导致警告 UnityEditor.EditorApplication.delayCall += () => { if (this == null) return; @@ -90,7 +87,6 @@ public class PageController : MonoBehaviour switch (_editorPreview) { case EditorPreviewPage.None: - // 不做任何切换,保留当前状态 break; case EditorPreviewPage.Home: ShowPageEditMode(Page.Home); @@ -106,7 +102,6 @@ public class PageController : MonoBehaviour break; } - // 切换完成后重置为 None,避免与后续操作冲突 _editorPreview = EditorPreviewPage.None; }; } @@ -116,6 +111,7 @@ public class PageController : MonoBehaviour if (_homePagePanel != null) _homePagePanel.SetActive(page == Page.Home); if (_modeSelectPanel != null) _modeSelectPanel.SetActive(page == Page.ModeSelect); if (_fixationPanel != null) _fixationPanel.SetActive(page == Page.Fixation); + if (_experimentPanel != null) _experimentPanel.SetActive(page == Page.Experiment); if (_uiManager != null) _uiManager.enabled = (page == Page.Experiment); @@ -126,14 +122,14 @@ public class PageController : MonoBehaviour #region 页面切换 - private void ShowPage(Page page) + private void ShowPage(Page page) { _currentPage = page; if (_homePagePanel != null) _homePagePanel.SetActive(page == Page.Home); if (_modeSelectPanel != null) _modeSelectPanel.SetActive(page == Page.ModeSelect); if (_fixationPanel != null) _fixationPanel.SetActive(page == Page.Fixation); - if (_btnFixationBack != null) _btnFixationBack.gameObject.SetActive(page == Page.Fixation); + if (_experimentPanel != null) _experimentPanel.SetActive(page == Page.Experiment); if (_uiManager != null) _uiManager.enabled = (page == Page.Experiment); @@ -168,8 +164,8 @@ public class PageController : MonoBehaviour if (_modeDescText != null) { _modeDescText.text = mode == ExperimentMode.Learn - ? _practiceModeDesc + "\n\n✓ 当前已选择「模拟练习模式」" - : _examModeDesc + "\n\n✓ 当前已选择「考核评估模式」"; + ? _practiceModeDesc + "\n\n 当前已选择「模拟练习模式」" + : _examModeDesc + "\n\n 当前已选择「考核评估模式」"; } ShowPage(Page.Fixation); @@ -185,6 +181,11 @@ public class PageController : MonoBehaviour ShowPage(Page.ModeSelect); } + private void OnExperimentBackClicked() + { + ShowPage(Page.Fixation); + } + private void OnFixationSelected(FixationMethod method) { var gm = GameManager.Instance; @@ -211,6 +212,5 @@ public class PageController : MonoBehaviour ShowPage(Page.Home); } - #endregion }