From f0a6b96da53097ccaa8f907a1a8a6fe24c34f8a4 Mon Sep 17 00:00:00 2001 From: yangbear Date: Wed, 24 Jun 2026 02:33:48 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20MCP=20Unity=20=E5=9C=BA=E6=99=AF?= =?UTF-8?q?=E4=BC=98=E5=8C=96=20=E2=80=94=20=E5=AE=8C=E6=95=B4=E4=BA=A4?= =?UTF-8?q?=E4=BA=92=E4=BD=93=E7=B3=BB=E6=90=AD=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 删除重复 Ground - 创建 [Managers] 空物体,挂载 GameManager + StepManager + ExperimentFlowCoordinator + AudioManager - Main Camera 挂载 InteractionSystem - 伤者 InjectedPerson 下创建 5 个交互子物体 (InjuryVisual/Swelling/Pain/VitalSigns/Neuro) - 创建绑带位置、踝关节、衬垫、夹板位置等空物体 - 道具摆放到位:伤者(2,0.05,5) 施救者(3,0,5) 鞋(2.7,0.15,5.5) 绷带/夹板/急救箱在旁 - InjuryLeg Tag 修正,Ground Tag 修正 - 全部新脚本同步导入 (ExperimentTypes/StepData/ExperimentConfig/StepManager/GameManager/ExperimentFlowCoordinator/InteractionSystem/DraggableObject/HighlightEffect/UIManager/ExamPopup/ScoreDisplay/VideoController/AudioManager/CharacterAnimController/StepAnimationHandler) - 旧脚本 (ExperimentController/ConfigLoader/AnimationController/HUDController/VideoPlayerController/PopupSystem/ModeSelectionUI) 全部兼容修复或 stub - 编译通过,0 错误 - Canvas 挂载 UIManager --- .mcp.json | 3 + Assets/Animations.meta | 8 + Assets/Audio.meta | 8 + Assets/Materials.meta | 8 + Assets/Models.meta | 8 + Assets/Models/Characters.meta | 8 + Assets/Models/Environment.meta | 8 + Assets/Models/Props.meta | 8 + Assets/Prefabs.meta | 8 + Assets/Resources.meta | 8 + Assets/Resources/Data.meta | 8 + .../Data/fracture_fixation_steps.json | 179 + .../Data/fracture_fixation_steps.json.meta | 7 + .../Resources/Data/splint_fixation_steps.json | 135 + .../Data/splint_fixation_steps.json.meta | 7 + Assets/Scenes/Experiment.unity | 3102 +++++++++++++++++ Assets/Scenes/Experiment.unity.meta | 7 + Assets/Scenes/ModeSelection.unity | 1821 ++++++++++ Assets/Scenes/ModeSelection.unity.meta | 7 + Assets/Scenes/SampleScene.unity | 407 --- Assets/Scenes/main.unity | 1396 ++++++++ ...SampleScene.unity.meta => main.unity.meta} | 0 Assets/Screenshots.meta | 8 + .../screenshot-20260623-223456.png | Bin 0 -> 27300 bytes .../screenshot-20260623-223456.png.meta | 127 + .../screenshot-20260623-224726.png | Bin 0 -> 34368 bytes .../screenshot-20260623-224726.png.meta | 127 + .../screenshot-20260624-023017.png | Bin 0 -> 7974 bytes .../screenshot-20260624-023017.png.meta | 127 + .../screenshot-20260624-023329.png | Bin 0 -> 27213 bytes .../screenshot-20260624-023329.png.meta | 127 + Assets/Scripts.meta | 8 + Assets/Scripts/Animation.meta | 8 + .../Scripts/Animation/AnimationController.cs | 3 + .../Animation/AnimationController.cs.meta | 11 + .../Animation/CharacterAnimController.cs | 87 + .../Animation/CharacterAnimController.cs.meta | 11 + .../Scripts/Animation/StepAnimationHandler.cs | 181 + .../Animation/StepAnimationHandler.cs.meta | 11 + Assets/Scripts/Audio.meta | 8 + Assets/Scripts/Audio/AudioManager.cs | 92 + Assets/Scripts/Audio/AudioManager.cs.meta | 11 + Assets/Scripts/Core.meta | 8 + Assets/Scripts/Core/ConfigLoader.cs | 3 + Assets/Scripts/Core/ConfigLoader.cs.meta | 11 + Assets/Scripts/Core/ExperimentController.cs | 3 + .../Scripts/Core/ExperimentController.cs.meta | 11 + .../Scripts/Core/ExperimentFlowCoordinator.cs | 100 + .../Core/ExperimentFlowCoordinator.cs.meta | 11 + Assets/Scripts/Core/ExperimentTypes.cs | 38 + Assets/Scripts/Core/ExperimentTypes.cs.meta | 11 + Assets/Scripts/Core/GameManager.cs | 75 + Assets/Scripts/Core/GameManager.cs.meta | 11 + Assets/Scripts/Core/StepManager.cs | 172 + Assets/Scripts/Core/StepManager.cs.meta | 11 + Assets/Scripts/Data.meta | 8 + Assets/Scripts/Data/ExamQuestionData.cs | 34 + Assets/Scripts/Data/ExamQuestionData.cs.meta | 11 + Assets/Scripts/Data/ExperimentConfig.cs | 38 + Assets/Scripts/Data/ExperimentConfig.cs.meta | 11 + Assets/Scripts/Data/StepData.cs | 63 + Assets/Scripts/Data/StepData.cs.meta | 11 + Assets/Scripts/Interaction.meta | 8 + Assets/Scripts/Interaction/DraggableObject.cs | 54 + .../Interaction/DraggableObject.cs.meta | 11 + Assets/Scripts/Interaction/HighlightEffect.cs | 83 + .../Interaction/HighlightEffect.cs.meta | 11 + .../Scripts/Interaction/InteractionSystem.cs | 168 + .../Interaction/InteractionSystem.cs.meta | 11 + Assets/Scripts/UI.meta | 8 + Assets/Scripts/UI/ExamPopup.cs | 154 + Assets/Scripts/UI/ExamPopup.cs.meta | 11 + Assets/Scripts/UI/HUDController.cs | 6 + Assets/Scripts/UI/HUDController.cs.meta | 11 + Assets/Scripts/UI/MainMenuUI.cs | 38 + Assets/Scripts/UI/MainMenuUI.cs.meta | 11 + Assets/Scripts/UI/ModeSelectionUI.cs | 72 + Assets/Scripts/UI/ModeSelectionUI.cs.meta | 11 + Assets/Scripts/UI/PopupSystem.cs | 3 + Assets/Scripts/UI/PopupSystem.cs.meta | 11 + Assets/Scripts/UI/ScoreDisplay.cs | 109 + Assets/Scripts/UI/ScoreDisplay.cs.meta | 11 + Assets/Scripts/UI/UIManager.cs | 221 ++ Assets/Scripts/UI/UIManager.cs.meta | 11 + Assets/Scripts/UI/VideoController.cs | 83 + Assets/Scripts/UI/VideoController.cs.meta | 11 + Assets/Scripts/UI/VideoPlayerController.cs | 3 + .../Scripts/UI/VideoPlayerController.cs.meta | 11 + Assets/Settings/URP-Balanced.asset | 53 +- Assets/Settings/URP-HighFidelity.asset | 34 +- Assets/Settings/URP-Performant.asset | 53 +- Assets/Textures.meta | 8 + Assets/Textures/UI.meta | 8 + Assets/TutorialInfo.meta | 8 + Assets/TutorialInfo/Icons.meta | 9 + Assets/TutorialInfo/Icons/URP.png | Bin 0 -> 24069 bytes Assets/TutorialInfo/Icons/URP.png.meta | 134 + Assets/TutorialInfo/Layout.wlt | 654 ++++ Assets/TutorialInfo/Layout.wlt.meta | 8 + Assets/TutorialInfo/Scripts.meta | 9 + Assets/TutorialInfo/Scripts/Editor.meta | 9 + .../Scripts/Editor/ReadmeEditor.cs | 242 ++ .../Scripts/Editor/ReadmeEditor.cs.meta | 12 + Assets/TutorialInfo/Scripts/Readme.cs | 16 + Assets/TutorialInfo/Scripts/Readme.cs.meta | 12 + Assets/Video.meta | 8 + Packages/manifest.json | 1 + Packages/packages-lock.json | 26 +- ProjectSettings/EditorBuildSettings.asset | 8 +- ProjectSettings/TagManager.asset | 10 +- README.md | 260 +- 111 files changed, 11023 insertions(+), 440 deletions(-) create mode 100644 .mcp.json create mode 100644 Assets/Animations.meta create mode 100644 Assets/Audio.meta create mode 100644 Assets/Materials.meta create mode 100644 Assets/Models.meta create mode 100644 Assets/Models/Characters.meta create mode 100644 Assets/Models/Environment.meta create mode 100644 Assets/Models/Props.meta create mode 100644 Assets/Prefabs.meta create mode 100644 Assets/Resources.meta create mode 100644 Assets/Resources/Data.meta create mode 100644 Assets/Resources/Data/fracture_fixation_steps.json create mode 100644 Assets/Resources/Data/fracture_fixation_steps.json.meta create mode 100644 Assets/Resources/Data/splint_fixation_steps.json create mode 100644 Assets/Resources/Data/splint_fixation_steps.json.meta create mode 100644 Assets/Scenes/Experiment.unity create mode 100644 Assets/Scenes/Experiment.unity.meta create mode 100644 Assets/Scenes/ModeSelection.unity create mode 100644 Assets/Scenes/ModeSelection.unity.meta delete mode 100644 Assets/Scenes/SampleScene.unity create mode 100644 Assets/Scenes/main.unity rename Assets/Scenes/{SampleScene.unity.meta => main.unity.meta} (100%) create mode 100644 Assets/Screenshots.meta create mode 100644 Assets/Screenshots/screenshot-20260623-223456.png create mode 100644 Assets/Screenshots/screenshot-20260623-223456.png.meta create mode 100644 Assets/Screenshots/screenshot-20260623-224726.png create mode 100644 Assets/Screenshots/screenshot-20260623-224726.png.meta create mode 100644 Assets/Screenshots/screenshot-20260624-023017.png create mode 100644 Assets/Screenshots/screenshot-20260624-023017.png.meta create mode 100644 Assets/Screenshots/screenshot-20260624-023329.png create mode 100644 Assets/Screenshots/screenshot-20260624-023329.png.meta create mode 100644 Assets/Scripts.meta create mode 100644 Assets/Scripts/Animation.meta create mode 100644 Assets/Scripts/Animation/AnimationController.cs create mode 100644 Assets/Scripts/Animation/AnimationController.cs.meta create mode 100644 Assets/Scripts/Animation/CharacterAnimController.cs create mode 100644 Assets/Scripts/Animation/CharacterAnimController.cs.meta create mode 100644 Assets/Scripts/Animation/StepAnimationHandler.cs create mode 100644 Assets/Scripts/Animation/StepAnimationHandler.cs.meta create mode 100644 Assets/Scripts/Audio.meta create mode 100644 Assets/Scripts/Audio/AudioManager.cs create mode 100644 Assets/Scripts/Audio/AudioManager.cs.meta create mode 100644 Assets/Scripts/Core.meta create mode 100644 Assets/Scripts/Core/ConfigLoader.cs create mode 100644 Assets/Scripts/Core/ConfigLoader.cs.meta create mode 100644 Assets/Scripts/Core/ExperimentController.cs create mode 100644 Assets/Scripts/Core/ExperimentController.cs.meta create mode 100644 Assets/Scripts/Core/ExperimentFlowCoordinator.cs create mode 100644 Assets/Scripts/Core/ExperimentFlowCoordinator.cs.meta create mode 100644 Assets/Scripts/Core/ExperimentTypes.cs create mode 100644 Assets/Scripts/Core/ExperimentTypes.cs.meta create mode 100644 Assets/Scripts/Core/GameManager.cs create mode 100644 Assets/Scripts/Core/GameManager.cs.meta create mode 100644 Assets/Scripts/Core/StepManager.cs create mode 100644 Assets/Scripts/Core/StepManager.cs.meta create mode 100644 Assets/Scripts/Data.meta create mode 100644 Assets/Scripts/Data/ExamQuestionData.cs create mode 100644 Assets/Scripts/Data/ExamQuestionData.cs.meta create mode 100644 Assets/Scripts/Data/ExperimentConfig.cs create mode 100644 Assets/Scripts/Data/ExperimentConfig.cs.meta create mode 100644 Assets/Scripts/Data/StepData.cs create mode 100644 Assets/Scripts/Data/StepData.cs.meta create mode 100644 Assets/Scripts/Interaction.meta create mode 100644 Assets/Scripts/Interaction/DraggableObject.cs create mode 100644 Assets/Scripts/Interaction/DraggableObject.cs.meta create mode 100644 Assets/Scripts/Interaction/HighlightEffect.cs create mode 100644 Assets/Scripts/Interaction/HighlightEffect.cs.meta create mode 100644 Assets/Scripts/Interaction/InteractionSystem.cs create mode 100644 Assets/Scripts/Interaction/InteractionSystem.cs.meta create mode 100644 Assets/Scripts/UI.meta create mode 100644 Assets/Scripts/UI/ExamPopup.cs create mode 100644 Assets/Scripts/UI/ExamPopup.cs.meta create mode 100644 Assets/Scripts/UI/HUDController.cs create mode 100644 Assets/Scripts/UI/HUDController.cs.meta create mode 100644 Assets/Scripts/UI/MainMenuUI.cs create mode 100644 Assets/Scripts/UI/MainMenuUI.cs.meta create mode 100644 Assets/Scripts/UI/ModeSelectionUI.cs create mode 100644 Assets/Scripts/UI/ModeSelectionUI.cs.meta create mode 100644 Assets/Scripts/UI/PopupSystem.cs create mode 100644 Assets/Scripts/UI/PopupSystem.cs.meta create mode 100644 Assets/Scripts/UI/ScoreDisplay.cs create mode 100644 Assets/Scripts/UI/ScoreDisplay.cs.meta create mode 100644 Assets/Scripts/UI/UIManager.cs create mode 100644 Assets/Scripts/UI/UIManager.cs.meta create mode 100644 Assets/Scripts/UI/VideoController.cs create mode 100644 Assets/Scripts/UI/VideoController.cs.meta create mode 100644 Assets/Scripts/UI/VideoPlayerController.cs create mode 100644 Assets/Scripts/UI/VideoPlayerController.cs.meta create mode 100644 Assets/Textures.meta create mode 100644 Assets/Textures/UI.meta create mode 100644 Assets/TutorialInfo.meta create mode 100644 Assets/TutorialInfo/Icons.meta create mode 100644 Assets/TutorialInfo/Icons/URP.png create mode 100644 Assets/TutorialInfo/Icons/URP.png.meta create mode 100644 Assets/TutorialInfo/Layout.wlt create mode 100644 Assets/TutorialInfo/Layout.wlt.meta create mode 100644 Assets/TutorialInfo/Scripts.meta create mode 100644 Assets/TutorialInfo/Scripts/Editor.meta create mode 100644 Assets/TutorialInfo/Scripts/Editor/ReadmeEditor.cs create mode 100644 Assets/TutorialInfo/Scripts/Editor/ReadmeEditor.cs.meta create mode 100644 Assets/TutorialInfo/Scripts/Readme.cs create mode 100644 Assets/TutorialInfo/Scripts/Readme.cs.meta create mode 100644 Assets/Video.meta diff --git a/.mcp.json b/.mcp.json new file mode 100644 index 0000000..7001130 --- /dev/null +++ b/.mcp.json @@ -0,0 +1,3 @@ +{ + "mcpServers": {} +} \ No newline at end of file diff --git a/Assets/Animations.meta b/Assets/Animations.meta new file mode 100644 index 0000000..9387176 --- /dev/null +++ b/Assets/Animations.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 64271bef662af4a249d3b26db806b4b9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio.meta b/Assets/Audio.meta new file mode 100644 index 0000000..9283837 --- /dev/null +++ b/Assets/Audio.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3bdbe9aa40f514e1987b69dabd75457d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Materials.meta b/Assets/Materials.meta new file mode 100644 index 0000000..5130ae2 --- /dev/null +++ b/Assets/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 85c758bad9d614989adac8e5ba7bd207 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Models.meta b/Assets/Models.meta new file mode 100644 index 0000000..379f092 --- /dev/null +++ b/Assets/Models.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b2f8e3f67a24d4846a754cd805cc514b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Models/Characters.meta b/Assets/Models/Characters.meta new file mode 100644 index 0000000..bce6f0d --- /dev/null +++ b/Assets/Models/Characters.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2d74c755f0b3d4f24883be1486e1ebb3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Models/Environment.meta b/Assets/Models/Environment.meta new file mode 100644 index 0000000..e08b4ce --- /dev/null +++ b/Assets/Models/Environment.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bcc075cfc542648268ca8c360fa79e45 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Models/Props.meta b/Assets/Models/Props.meta new file mode 100644 index 0000000..14d1017 --- /dev/null +++ b/Assets/Models/Props.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2e5cb2cde3d3145e2a9e84cae6d45d07 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs.meta b/Assets/Prefabs.meta new file mode 100644 index 0000000..c6da6b7 --- /dev/null +++ b/Assets/Prefabs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d4a0758449a944eceb61d2d1628effbd +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources.meta b/Assets/Resources.meta new file mode 100644 index 0000000..b7d4a79 --- /dev/null +++ b/Assets/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5e895eb5a64d940eaa1d0a25076fa6f6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Data.meta b/Assets/Resources/Data.meta new file mode 100644 index 0000000..e460d60 --- /dev/null +++ b/Assets/Resources/Data.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 61caee4db972540ce8a75e126457b7f6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Data/fracture_fixation_steps.json b/Assets/Resources/Data/fracture_fixation_steps.json new file mode 100644 index 0000000..ca378ac --- /dev/null +++ b/Assets/Resources/Data/fracture_fixation_steps.json @@ -0,0 +1,179 @@ +{ + "experimentName": "骨折固定", + "experimentId": "FractureFixation", + "description": "运动伤害现场急救处理——骨折固定虚拟仿真实验", + "fixationType": 0, + "totalScore": 100, + "passingScore": 60, + "steps": [ + { + "stepIndex": 0, + "stepName": "环境评估", + "tipText": "观察周围环境是否有危险,做好防护措施。", + "dialogueText": "周围环境安全。我是救护志愿者,我可以帮助您吗?", + "interactionType": 4, + "targetTag": "", + "targetName": "", + "showVideo": false, + "voiceClip": "", + "requiredForCompletion": true + }, + { + "stepIndex": 1, + "stepName": "伤情检查", + "tipText": "请检查伤员受伤位置", + "dialogueText": "伤员左大腿疑似骨折,无伤口。", + "interactionType": 1, + "targetTag": "InjuryLeg", + "targetName": "InjuryLeg", + "showVideo": false, + "voiceClip": "", + "requiredForCompletion": true + }, + { + "stepIndex": 2, + "stepName": "脱鞋袜检查", + "tipText": "请将伤员鞋袜脱掉并保存好,观察末端血液循环、运动及感觉", + "dialogueText": "", + "interactionType": 1, + "targetTag": "Shoe", + "targetName": "Shoe", + "showVideo": false, + "voiceClip": "", + "requiredForCompletion": true + }, + { + "stepIndex": 3, + "stepName": "放置衬带", + "tipText": "请在正确的位置穿宽度约10cm的带子", + "dialogueText": "", + "interactionType": 3, + "targetTag": "Bandage", + "targetName": "Bandage", + "showVideo": true, + "voiceClip": "", + "requiredForCompletion": true + }, + { + "stepIndex": 4, + "stepName": "肢体并拢", + "tipText": "请在两下肢间加衬垫,移动健肢,将双下肢轻轻并拢", + "dialogueText": "", + "interactionType": 4, + "targetTag": "", + "targetName": "", + "showVideo": false, + "voiceClip": "", + "requiredForCompletion": true + }, + { + "stepIndex": 5, + "stepName": "主干固定", + "tipText": "请在未受伤腿分别固定骨折近心端(上端)、骨折远心端(下端),然后固定膝关节下,结打在右侧。", + "dialogueText": "", + "interactionType": 3, + "targetTag": "Bandage", + "targetName": "Bandage", + "showVideo": false, + "voiceClip": "", + "requiredForCompletion": true + }, + { + "stepIndex": 6, + "stepName": "踝关节固定", + "tipText": "踝关节\"8\"字固定,结打在两足背之间。", + "dialogueText": "", + "interactionType": 3, + "targetTag": "Bandage", + "targetName": "Bandage", + "showVideo": false, + "voiceClip": "", + "requiredForCompletion": true + }, + { + "stepIndex": 7, + "stepName": "终末检查", + "tipText": "包扎完毕请检查伤肢血液循环,运动及感觉。", + "dialogueText": "伤员一切正常,包扎完毕。", + "interactionType": 4, + "targetTag": "", + "targetName": "", + "showVideo": false, + "voiceClip": "", + "requiredForCompletion": true + } + ], + "examQuestions": [ + { + "questionIndex": 0, + "questionText": "点击确认后,请按正确顺序进行环境评估与自我介绍", + "choices": ["确定"], + "correctChoiceIndex": 0, + "correctFeedback": "正确", + "incorrectFeedback": "", + "questionType": 0, + "targetTag": "" + }, + { + "questionIndex": 1, + "questionText": "点击确认后,请按正确顺序检查伤情", + "choices": ["确定"], + "correctChoiceIndex": 0, + "correctFeedback": "正确", + "incorrectFeedback": "", + "questionType": 0, + "targetTag": "" + }, + { + "questionIndex": 2, + "questionText": "请选择合适的带子宽度", + "choices": ["5cm", "10cm", "20cm"], + "correctChoiceIndex": 1, + "correctFeedback": "正确!", + "incorrectFeedback": "应选择10cm宽度的带子", + "questionType": 0, + "targetTag": "" + }, + { + "questionIndex": 3, + "questionText": "请选择正确的放带子顺序", + "choices": ["确定"], + "correctChoiceIndex": 0, + "correctFeedback": "正确", + "incorrectFeedback": "", + "questionType": 2, + "targetTag": "Bandage" + }, + { + "questionIndex": 4, + "questionText": "请选择正确的系带子顺序", + "choices": ["确定"], + "correctChoiceIndex": 0, + "correctFeedback": "正确", + "incorrectFeedback": "", + "questionType": 2, + "targetTag": "Bandage" + }, + { + "questionIndex": 5, + "questionText": "请选择带子打结位置", + "choices": ["确定"], + "correctChoiceIndex": 0, + "correctFeedback": "正确", + "incorrectFeedback": "", + "questionType": 1, + "targetTag": "BandageKnot" + }, + { + "questionIndex": 6, + "questionText": "请选择踝关节打结位置", + "choices": ["足底", "足背"], + "correctChoiceIndex": 1, + "correctFeedback": "正确!", + "incorrectFeedback": "应选择足背位置打结", + "questionType": 0, + "targetTag": "" + } + ], + "summaryNotes": "下肢损伤选择仰卧位;\n骨折固定前后要脱掉鞋袜并检查下肢末梢循环、运动、感觉;\n穿带子时应从健侧穿向伤侧;\n骨折固定时先固定伤口的近心端,后固定远心端,再由上而下进行固定;\n固定后尽可能抬高下肢。" +} diff --git a/Assets/Resources/Data/fracture_fixation_steps.json.meta b/Assets/Resources/Data/fracture_fixation_steps.json.meta new file mode 100644 index 0000000..eeefe37 --- /dev/null +++ b/Assets/Resources/Data/fracture_fixation_steps.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 460759f55f4d740eb98e141d10be6978 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Data/splint_fixation_steps.json b/Assets/Resources/Data/splint_fixation_steps.json new file mode 100644 index 0000000..ac9efa4 --- /dev/null +++ b/Assets/Resources/Data/splint_fixation_steps.json @@ -0,0 +1,135 @@ +{ + "experimentName": "骨折固定(夹板固定)", + "experimentId": "SplintFixation", + "description": "运动伤害现场急救处理——夹板固定虚拟仿真实验", + "fixationType": 1, + "totalScore": 100, + "passingScore": 60, + "steps": [ + { + "stepIndex": 0, + "stepName": "环境评估", + "tipText": "观察周围环境是否有危险,做好防护措施。", + "dialogueText": "周围环境安全。我是救护志愿者,我可以帮助您吗?", + "interactionType": 4, + "targetTag": "", + "targetName": "", + "showVideo": false, + "voiceClip": "", + "requiredForCompletion": true + }, + { + "stepIndex": 1, + "stepName": "伤情检查", + "tipText": "请检查伤员受伤位置", + "dialogueText": "伤员左大腿疑似骨折,无伤口。", + "interactionType": 1, + "targetTag": "InjuryLeg", + "targetName": "InjuryLeg", + "showVideo": false, + "voiceClip": "", + "requiredForCompletion": true + }, + { + "stepIndex": 2, + "stepName": "脱鞋袜检查", + "tipText": "请将伤员鞋袜脱掉并保存好,观察末端血液循环、运动及感觉", + "dialogueText": "", + "interactionType": 1, + "targetTag": "Shoe", + "targetName": "Shoe", + "showVideo": false, + "voiceClip": "", + "requiredForCompletion": true + }, + { + "stepIndex": 3, + "stepName": "加衬垫并用夹板固定", + "tipText": "请在骨折肢体加衬垫,并用夹板固定", + "dialogueText": "", + "interactionType": 3, + "targetTag": "Splint", + "targetName": "Splint", + "showVideo": true, + "voiceClip": "", + "requiredForCompletion": true + }, + { + "stepIndex": 4, + "stepName": "用带子固定夹板", + "tipText": "请用带子将夹板固定在腿上", + "dialogueText": "", + "interactionType": 3, + "targetTag": "Bandage", + "targetName": "Bandage", + "showVideo": false, + "voiceClip": "", + "requiredForCompletion": true + }, + { + "stepIndex": 5, + "stepName": "终末检查", + "tipText": "包扎完毕请检查伤肢血液循环,运动及感觉。", + "dialogueText": "伤员一切正常,包扎完毕。", + "interactionType": 4, + "targetTag": "", + "targetName": "", + "showVideo": false, + "voiceClip": "", + "requiredForCompletion": true + } + ], + "examQuestions": [ + { + "questionIndex": 0, + "questionText": "点击确认后,请按正确顺序进行环境评估与自我介绍", + "choices": ["确定"], + "correctChoiceIndex": 0, + "correctFeedback": "正确", + "incorrectFeedback": "", + "questionType": 0, + "targetTag": "" + }, + { + "questionIndex": 1, + "questionText": "点击确认后,请按正确顺序检查伤情", + "choices": ["确定"], + "correctChoiceIndex": 0, + "correctFeedback": "正确", + "incorrectFeedback": "", + "questionType": 0, + "targetTag": "" + }, + { + "questionIndex": 2, + "questionText": "请选择正确的固定方式", + "choices": ["肢体固定", "夹板固定", "绷带包扎"], + "correctChoiceIndex": 1, + "correctFeedback": "正确!夹板固定适用于骨折固定。", + "incorrectFeedback": "应选择夹板固定方式", + "questionType": 0, + "targetTag": "" + }, + { + "questionIndex": 3, + "questionText": "请选择正确放置夹板的位置", + "choices": ["确定"], + "correctChoiceIndex": 0, + "correctFeedback": "正确", + "incorrectFeedback": "", + "questionType": 1, + "targetTag": "Splint" + }, + { + "questionIndex": 4, + "questionText": "请选择正确的绑带固定顺序", + "choices": ["先上后下", "先下后上"], + "correctChoiceIndex": 0, + "correctFeedback": "正确!应先固定近心端再固定远心端。", + "incorrectFeedback": "应先固定近心端(上端),再固定远心端(下端)", + "questionType": 0, + "targetTag": "" + } + ], + "summaryNotes": "下肢损伤选择仰卧位;\n骨折固定前后要脱掉鞋袜并检查下肢末梢循环、运动、感觉;\n夹板固定时先在骨折肢体加衬垫;\n穿带子时应从健侧穿向伤侧;\n固定后尽可能抬高下肢。" +} diff --git a/Assets/Resources/Data/splint_fixation_steps.json.meta b/Assets/Resources/Data/splint_fixation_steps.json.meta new file mode 100644 index 0000000..56c6723 --- /dev/null +++ b/Assets/Resources/Data/splint_fixation_steps.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a7bcf7c9d0296430db1384005ca925e3 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Experiment.unity b/Assets/Scenes/Experiment.unity new file mode 100644 index 0000000..cb02d10 --- /dev/null +++ b/Assets/Scenes/Experiment.unity @@ -0,0 +1,3102 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &37271315 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 37271319} + - component: {fileID: 37271318} + - component: {fileID: 37271317} + - component: {fileID: 37271316} + m_Layer: 0 + m_Name: Bandage + m_TagString: Bandage + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &37271316 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 37271315} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &37271317 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 37271315} + 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!33 &37271318 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 37271315} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &37271319 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 37271315} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3.5, y: 0.1, z: 4.5} + m_LocalScale: {x: 0.5, y: 0.05, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &67208451 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 67208452} + - component: {fileID: 67208456} + - component: {fileID: 67208455} + - component: {fileID: 67208454} + - component: {fileID: 67208453} + m_Layer: 0 + m_Name: VideoPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &67208452 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 67208451} + 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: 1330699208} + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!328 &67208453 +VideoPlayer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 67208451} + m_Enabled: 1 + m_VideoClip: {fileID: 0} + m_TargetCameraAlpha: 1 + m_TargetCamera3DLayout: 0 + m_TargetCamera: {fileID: 0} + m_TargetTexture: {fileID: 0} + m_TimeReference: 0 + m_TargetMaterialRenderer: {fileID: 0} + m_TargetMaterialProperty: + m_RenderMode: 2 + m_AspectRatio: 2 + m_DataSource: 0 + m_TimeUpdateMode: 2 + m_PlaybackSpeed: 1 + m_AudioOutputMode: 2 + m_TargetAudioSources: + - {fileID: 0} + m_DirectAudioVolumes: + - 1 + m_Url: + m_EnabledAudioTracks: 01 + m_DirectAudioMutes: 00 + m_ControlledAudioTrackCount: 1 + m_PlayOnAwake: 1 + m_SkipOnDrop: 1 + m_Looping: 0 + m_WaitForFirstFrame: 1 + m_FrameReadyEventEnabled: 0 + m_VideoShaders: [] +--- !u!114 &67208454 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 67208451} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4c7b16cd23ebf4299be89ef8311ed579, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &67208455 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 67208451} + 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: 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 &67208456 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 67208451} + m_CullTransparentMesh: 1 +--- !u!1 &96184418 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 96184422} + - component: {fileID: 96184421} + - component: {fileID: 96184420} + - component: {fileID: 96184419} + m_Layer: 0 + m_Name: Splint + m_TagString: Splint + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &96184419 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 96184418} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &96184420 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 96184418} + 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!33 &96184421 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 96184418} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &96184422 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 96184418} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3.5, y: 0.1, z: 4.7} + m_LocalScale: {x: 0.1, y: 0.6, z: 0.1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &258331953 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 258331957} + - component: {fileID: 258331956} + - component: {fileID: 258331955} + - component: {fileID: 258331954} + m_Layer: 0 + m_Name: Rescuer + m_TagString: Rescuer + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &258331954 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 258331953} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!136 &258331955 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 258331953} + 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: 2 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &258331956 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 258331953} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &258331957 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 258331953} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + m_LocalPosition: {x: 3, y: 0, z: 5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &276967875 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 276967876} + - component: {fileID: 276967879} + - component: {fileID: 276967878} + - component: {fileID: 276967877} + m_Layer: 0 + m_Name: InjuryLeg + m_TagString: InjuryLeg + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &276967876 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 276967875} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -0.3, z: -0.3} + m_LocalScale: {x: 0.3, y: 0.15, z: 0.3} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1472562187} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &276967877 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 276967875} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!135 &276967878 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 276967875} + 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_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &276967879 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 276967875} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &347337920 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 347337921} + m_Layer: 0 + m_Name: InjuryVisual + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &347337921 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 347337920} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.1, z: -0.2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1472562187} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &414549206 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 414549209} + - component: {fileID: 414549208} + - component: {fileID: 414549207} + - component: {fileID: 414549210} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &414549207 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 414549206} + m_Enabled: 1 +--- !u!20 &414549208 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 414549206} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &414549209 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 414549206} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 4, z: -5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &414549210 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 414549206} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1de9da6001ff949cf9bedcd003c48487, type: 3} + m_Name: + m_EditorClassIdentifier: + _mainCamera: {fileID: 0} + _interactableMask: + serializedVersion: 2 + m_Bits: 4294967295 + _maxRayDistance: 100 + OnObjectClicked: + m_PersistentCalls: + m_Calls: [] + OnAnywhereClicked: + m_PersistentCalls: + m_Calls: [] + _dragPlaneDistance: 2 + _snapDistance: 0.3 +--- !u!1 &417003716 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 417003718} + - component: {fileID: 417003717} + m_Layer: 0 + m_Name: AnimationController + m_TagString: GameController + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &417003717 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 417003716} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 05b8d5cbfd0e74474a937b3cc7ad120c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &417003718 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 417003716} + serializedVersion: 2 + 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: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &441640509 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 441640515} + - component: {fileID: 441640514} + - component: {fileID: 441640513} + - component: {fileID: 441640512} + - component: {fileID: 441640511} + - component: {fileID: 441640510} + m_Layer: 0 + m_Name: '[Managers]' + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &441640510 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 441640509} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 55eccc8daa89f482193b0fcb1aa0f2bc, type: 3} + m_Name: + m_EditorClassIdentifier: + _bgmSource: {fileID: 0} + _voiceSource: {fileID: 0} + BGMClip: {fileID: 0} + BGMVolume: 0.3 +--- !u!82 &441640511 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 441640509} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!114 &441640512 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 441640509} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e3dd6cb15ae1a4f0e92e2826f64ee6cf, type: 3} + m_Name: + m_EditorClassIdentifier: + _stepManager: {fileID: 0} + _interactionSystem: {fileID: 0} + _uiManager: {fileID: 0} + _animationHandler: {fileID: 0} + _audioManager: {fileID: 0} + _defaultConfig: {fileID: 0} +--- !u!114 &441640513 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 441640509} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a2535da3ddf9046e686f9b0d2ce5f569, type: 3} + m_Name: + m_EditorClassIdentifier: + Config: {fileID: 0} + OnStepChanged: + m_PersistentCalls: + m_Calls: [] + OnTipChanged: + m_PersistentCalls: + m_Calls: [] + OnDialogueChanged: + m_PersistentCalls: + m_Calls: [] + OnExamPopup: + m_PersistentCalls: + m_Calls: [] + OnDetailedContent: + m_PersistentCalls: + m_Calls: [] + OnExperimentComplete: + m_PersistentCalls: + m_Calls: [] + OnVideoToggle: + m_PersistentCalls: + m_Calls: [] + OnModeUIUpdate: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &441640514 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 441640509} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c57598038a100447ab7f5396d0f0e49c, type: 3} + m_Name: + m_EditorClassIdentifier: + CurrentExperimentType: 1 + CurrentMode: 0 + CurrentFixationMethod: 0 + TotalWeightedScore: 0 + MaxWeightedScore: 100 + StepScores: [] + StepMaxScores: [] + StepFeedback: [] + StepCorrect: +--- !u!4 &441640515 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 441640509} + serializedVersion: 2 + 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: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &502452310 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 502452311} + - component: {fileID: 502452313} + - component: {fileID: 502452312} + m_Layer: 0 + m_Name: ProgressText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &502452311 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 502452310} + 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: 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &502452312 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 502452310} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, 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_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &502452313 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 502452310} + m_CullTransparentMesh: 1 +--- !u!1 &528366737 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 528366738} + m_Layer: 0 + m_Name: InjuryVitalSigns + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &528366738 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 528366737} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.3, y: 0.2, z: 0.1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1472562187} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &604631144 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 604631145} + m_Layer: 0 + m_Name: BandagePos3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &604631145 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 604631144} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: -0.1, z: 5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &672149916 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 672149920} + - component: {fileID: 672149919} + - component: {fileID: 672149918} + - component: {fileID: 672149917} + m_Layer: 0 + m_Name: Shoe + m_TagString: Shoe + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &672149917 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 672149916} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &672149918 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 672149916} + 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!33 &672149919 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 672149916} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &672149920 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 672149916} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.7, y: 0.15, z: 5.5} + m_LocalScale: {x: 0.3, y: 0.1, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &757130316 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 757130317} + - component: {fileID: 757130319} + - component: {fileID: 757130318} + m_Layer: 0 + m_Name: TipBar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &757130317 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 757130316} + 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: 1411015630} + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &757130318 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 757130316} + 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: 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 &757130319 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 757130316} + m_CullTransparentMesh: 1 +--- !u!1 &1121461716 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1121461717} + - component: {fileID: 1121461719} + - component: {fileID: 1121461718} + m_Layer: 0 + m_Name: ModeLabel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1121461717 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1121461716} + 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: 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1121461718 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1121461716} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, 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_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1121461719 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1121461716} + m_CullTransparentMesh: 1 +--- !u!1 &1160889715 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1160889718} + - component: {fileID: 1160889717} + - component: {fileID: 1160889716} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1160889716 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1160889715} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1160889717 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1160889715} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!4 &1160889718 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1160889715} + serializedVersion: 2 + 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: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1305408175 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1305408178} + - component: {fileID: 1305408177} + - component: {fileID: 1305408176} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1305408176 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1305408175} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 3 + m_UsePipelineSettings: 1 + m_AdditionalLightsShadowResolutionTier: 2 + m_LightLayerMask: 1 + m_RenderingLayers: 1 + m_CustomShadowLayers: 0 + m_ShadowLayerMask: 1 + m_ShadowRenderingLayers: 1 + m_LightCookieSize: {x: 1, y: 1} + m_LightCookieOffset: {x: 0, y: 0} + m_SoftShadowQuality: 0 +--- !u!108 &1305408177 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1305408175} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1305408178 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1305408175} + serializedVersion: 2 + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &1330699207 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1330699208} + - component: {fileID: 1330699210} + - component: {fileID: 1330699209} + m_Layer: 0 + m_Name: VideoDisplay + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1330699208 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1330699207} + 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: 67208452} + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1330699209 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1330699207} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, 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_Texture: {fileID: 0} + m_UVRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 +--- !u!222 &1330699210 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1330699207} + m_CullTransparentMesh: 1 +--- !u!1 &1364120476 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1364120480} + - component: {fileID: 1364120479} + - component: {fileID: 1364120478} + - component: {fileID: 1364120477} + m_Layer: 0 + m_Name: FirstAidKit + m_TagString: FirstAidKit + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1364120477 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1364120476} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &1364120478 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1364120476} + 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!33 &1364120479 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1364120476} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1364120480 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1364120476} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3.5, y: 0.1, z: 4.3} + m_LocalScale: {x: 0.5, y: 0.4, z: 0.3} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1411015629 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1411015630} + - component: {fileID: 1411015632} + - component: {fileID: 1411015631} + m_Layer: 0 + m_Name: TipText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1411015630 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1411015629} + 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: 757130317} + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1411015631 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1411015629} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, 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_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1411015632 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1411015629} + m_CullTransparentMesh: 1 +--- !u!1 &1412804300 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1412804301} + - component: {fileID: 1412804302} + m_Layer: 0 + m_Name: ProgressSlider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1412804301 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1412804300} + 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: 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1412804302 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1412804300} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 67db9e8f0e2ae9c40bc1e2b64352a6b4, 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: 0} + m_FillRect: {fileID: 0} + m_HandleRect: {fileID: 0} + m_Direction: 0 + m_MinValue: 0 + m_MaxValue: 1 + m_WholeNumbers: 0 + m_Value: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1450550825 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1450550826} + m_Layer: 0 + m_Name: SplintRightPos + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1450550826 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1450550825} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.3, y: 0.2, z: 5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1472562183 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1472562187} + - component: {fileID: 1472562186} + - component: {fileID: 1472562185} + - component: {fileID: 1472562184} + m_Layer: 0 + m_Name: InjuredPerson + m_TagString: InjuredPerson + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1472562184 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1472562183} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!136 &1472562185 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1472562183} + 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: 2 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1472562186 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1472562183} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1472562187 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1472562183} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0.05, z: 5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 276967876} + - {fileID: 347337921} + - {fileID: 2064810683} + - {fileID: 1987895623} + - {fileID: 528366738} + - {fileID: 1907609520} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1553203412 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1553203413} + - component: {fileID: 1553203415} + - component: {fileID: 1553203414} + m_Layer: 0 + m_Name: DialogueText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1553203413 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1553203412} + 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: 1600223256} + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1553203414 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1553203412} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, 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_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1553203415 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1553203412} + m_CullTransparentMesh: 1 +--- !u!1 &1600223255 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1600223256} + - component: {fileID: 1600223258} + - component: {fileID: 1600223257} + m_Layer: 0 + m_Name: DialogueBubble + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1600223256 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1600223255} + 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: 1553203413} + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1600223257 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1600223255} + 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: 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 &1600223258 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1600223255} + m_CullTransparentMesh: 1 +--- !u!1 &1605779801 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1605779802} + m_Layer: 0 + m_Name: AnklePos + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1605779802 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1605779801} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0.05, z: 6.2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1619544767 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1619544769} + - component: {fileID: 1619544768} + m_Layer: 0 + m_Name: GameManager + m_TagString: GameController + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1619544768 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1619544767} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c57598038a100447ab7f5396d0f0e49c, type: 3} + m_Name: + m_EditorClassIdentifier: + CurrentExperimentType: 1 + CurrentMode: 0 + CurrentFixationMethod: 0 + TotalWeightedScore: 0 + MaxWeightedScore: 100 + StepScores: [] + StepMaxScores: [] + StepFeedback: [] + StepCorrect: +--- !u!4 &1619544769 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1619544767} + serializedVersion: 2 + 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: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1642393464 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1642393469} + - component: {fileID: 1642393468} + - component: {fileID: 1642393467} + - component: {fileID: 1642393466} + - component: {fileID: 1642393465} + - component: {fileID: 1642393470} + m_Layer: 0 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1642393465 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1642393464} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ded61052e4f7c449ca21983fdaa9060b, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1642393466 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1642393464} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1642393467 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1642393464} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &1642393468 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1642393464} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 0 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1642393469 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1642393464} + 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: 757130317} + - {fileID: 1600223256} + - {fileID: 1412804301} + - {fileID: 502452311} + - {fileID: 1121461717} + - {fileID: 67208452} + - {fileID: 1677168706} + m_Father: {fileID: 0} + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1642393470 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1642393464} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 11edd93e0776546a3b8545535d7dd5e1, type: 3} + m_Name: + m_EditorClassIdentifier: + _stepManager: {fileID: 0} + _interactionSystem: {fileID: 0} + _tipPanel: {fileID: 0} + _tipText: {fileID: 0} + _detailPanel: {fileID: 0} + _detailText: {fileID: 0} + _dialogueBubble: {fileID: 0} + _dialogueText: {fileID: 0} + _videoController: {fileID: 0} + _btnFullScreen: {fileID: 0} + _btnPrevious: {fileID: 0} + _btnNext: {fileID: 0} + _btnSwitchMode: {fileID: 0} + _btnReturn: {fileID: 0} + _btnSwitchModeLabel: {fileID: 0} + _progressBar: {fileID: 0} + _progressText: {fileID: 0} + _examPopup: {fileID: 0} + _scoreDisplay: {fileID: 0} + _btnCPR: {fileID: 0} + _btnFracture: {fileID: 0} + _btnSprain: {fileID: 0} + _btnBleeding: {fileID: 0} + _btnTransport: {fileID: 0} + _fixationPanel: {fileID: 0} + _btnLimbFixation: {fileID: 0} + _btnSplintFixation: {fileID: 0} +--- !u!1 &1657379830 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1657379832} + - component: {fileID: 1657379831} + m_Layer: 0 + m_Name: ExperimentController + m_TagString: GameController + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1657379831 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1657379830} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5d499f2451702432ebbf25bfccbe1fa9, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &1657379832 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1657379830} + serializedVersion: 2 + 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: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1673831012 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1673831014} + - component: {fileID: 1673831013} + m_Layer: 0 + m_Name: InteractionSystem + m_TagString: GameController + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1673831013 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1673831012} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1de9da6001ff949cf9bedcd003c48487, type: 3} + m_Name: + m_EditorClassIdentifier: + _mainCamera: {fileID: 0} + _interactableMask: + serializedVersion: 2 + m_Bits: 4294967295 + _maxRayDistance: 100 + OnObjectClicked: + m_PersistentCalls: + m_Calls: [] + OnAnywhereClicked: + m_PersistentCalls: + m_Calls: [] + _dragPlaneDistance: 2 + _snapDistance: 0.3 +--- !u!4 &1673831014 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1673831012} + serializedVersion: 2 + 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: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1677168705 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1677168706} + - component: {fileID: 1677168709} + - component: {fileID: 1677168708} + - component: {fileID: 1677168707} + m_Layer: 0 + m_Name: PopupSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1677168706 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1677168705} + 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: 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1677168707 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1677168705} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c0eab9dd709f74ddf9f6728ef6bb4edf, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1677168708 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1677168705} + 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: 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 &1677168709 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1677168705} + m_CullTransparentMesh: 1 +--- !u!1 &1699839558 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1699839559} + m_Layer: 0 + m_Name: BandagePos2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1699839559 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1699839558} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0.1, z: 5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1711600572 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1711600573} + m_Layer: 0 + m_Name: SplintLeftPos + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1711600573 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1711600572} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1.7, y: 0.2, z: 5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1907609519 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1907609520} + m_Layer: 0 + m_Name: InjuryNeuro + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1907609520 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1907609519} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.75, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1472562187} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1941701290 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1941701294} + - component: {fileID: 1941701293} + - component: {fileID: 1941701292} + - component: {fileID: 1941701291} + m_Layer: 0 + m_Name: Ground + m_TagString: Ground + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1941701291 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1941701290} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!64 &1941701292 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1941701290} + 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: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &1941701293 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1941701290} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1941701294 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1941701290} + serializedVersion: 2 + 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: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1983684510 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1983684511} + m_Layer: 0 + m_Name: PaddingPos + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1983684511 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1983684510} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.2, y: 0.15, z: 5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1987895622 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1987895623} + m_Layer: 0 + m_Name: InjuryPain + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1987895623 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1987895622} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.3, z: 0.2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1472562187} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2005126429 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2005126430} + m_Layer: 0 + m_Name: BandagePos1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2005126430 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2005126429} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0.3, z: 5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2064810682 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2064810683} + m_Layer: 0 + m_Name: InjurySwelling + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2064810683 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2064810682} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.05, z: -0.1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1472562187} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 414549209} + - {fileID: 1305408178} + - {fileID: 1941701294} + - {fileID: 1619544769} + - {fileID: 1657379832} + - {fileID: 1673831014} + - {fileID: 417003718} + - {fileID: 1472562187} + - {fileID: 258331957} + - {fileID: 672149920} + - {fileID: 37271319} + - {fileID: 96184422} + - {fileID: 1364120480} + - {fileID: 1642393469} + - {fileID: 1160889718} + - {fileID: 441640515} + - {fileID: 2005126430} + - {fileID: 1699839559} + - {fileID: 604631145} + - {fileID: 1605779802} + - {fileID: 1983684511} + - {fileID: 1711600573} + - {fileID: 1450550826} diff --git a/Assets/Scenes/Experiment.unity.meta b/Assets/Scenes/Experiment.unity.meta new file mode 100644 index 0000000..93b815c --- /dev/null +++ b/Assets/Scenes/Experiment.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a37b51f5c4beb4b4398199d197af7d37 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/ModeSelection.unity b/Assets/Scenes/ModeSelection.unity new file mode 100644 index 0000000..d7eb2b3 --- /dev/null +++ b/Assets/Scenes/ModeSelection.unity @@ -0,0 +1,1821 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &30825608 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 30825609} + - component: {fileID: 30825612} + - component: {fileID: 30825611} + - component: {fileID: 30825610} + m_Layer: 0 + m_Name: SplintFixationButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &30825609 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 30825608} + 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: 218608782} + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &30825610 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 30825608} + 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: 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 &30825611 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 30825608} + m_CullTransparentMesh: 1 +--- !u!114 &30825612 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 30825608} + 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: 30825610} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &80006051 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 80006052} + - component: {fileID: 80006055} + - component: {fileID: 80006054} + - component: {fileID: 80006053} + m_Layer: 0 + m_Name: BackButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &80006052 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 80006051} + 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: 218608782} + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &80006053 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 80006051} + 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: 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 &80006054 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 80006051} + m_CullTransparentMesh: 1 +--- !u!114 &80006055 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 80006051} + 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: 80006053} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &138877635 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 138877636} + - component: {fileID: 138877638} + - component: {fileID: 138877637} + m_Layer: 0 + m_Name: LearnModeCheck + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &138877636 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 138877635} + 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: 218608782} + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &138877637 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 138877635} + 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: 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 &138877638 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 138877635} + m_CullTransparentMesh: 1 +--- !u!1 &218608777 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 218608782} + - component: {fileID: 218608781} + - component: {fileID: 218608780} + - component: {fileID: 218608779} + - component: {fileID: 218608778} + - component: {fileID: 218608783} + m_Layer: 0 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &218608778 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 218608777} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2106746edd5ca43288aff94f664b16ae, type: 3} + m_Name: + m_EditorClassIdentifier: + tipText: {fileID: 0} + limbFixationButton: {fileID: 0} + splintFixationButton: {fileID: 0} + limbFixationCheck: {fileID: 0} + splintFixationCheck: {fileID: 0} + learnModeButton: {fileID: 0} + examModeButton: {fileID: 0} + learnModeCheck: {fileID: 0} + examModeCheck: {fileID: 0} + startButton: {fileID: 0} + backButton: {fileID: 0} +--- !u!114 &218608779 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 218608777} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &218608780 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 218608777} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &218608781 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 218608777} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 0 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &218608782 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 218608777} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1336280775} + - {fileID: 1800448696} + - {fileID: 829939572} + - {fileID: 30825609} + - {fileID: 1238217705} + - {fileID: 722353781} + - {fileID: 138877636} + - {fileID: 712787453} + - {fileID: 443488709} + - {fileID: 697388913} + - {fileID: 80006052} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &218608783 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 218608777} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2106746edd5ca43288aff94f664b16ae, type: 3} + m_Name: + m_EditorClassIdentifier: + tipText: {fileID: 0} + limbFixationButton: {fileID: 0} + splintFixationButton: {fileID: 0} + limbFixationCheck: {fileID: 0} + splintFixationCheck: {fileID: 0} + learnModeButton: {fileID: 0} + examModeButton: {fileID: 0} + learnModeCheck: {fileID: 0} + examModeCheck: {fileID: 0} + startButton: {fileID: 0} + backButton: {fileID: 0} +--- !u!1 &443488708 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 443488709} + - component: {fileID: 443488711} + - component: {fileID: 443488710} + m_Layer: 0 + m_Name: ExamModeCheck + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &443488709 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 443488708} + 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: 218608782} + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &443488710 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 443488708} + 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: 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 &443488711 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 443488708} + m_CullTransparentMesh: 1 +--- !u!1 &590941468 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 590941471} + - component: {fileID: 590941470} + - component: {fileID: 590941469} + - component: {fileID: 590941472} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &590941469 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 590941468} + m_Enabled: 1 +--- !u!20 &590941470 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 590941468} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0, g: 0, b: 0, a: 1} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &590941471 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 590941468} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &590941472 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 590941468} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_VolumeFrameworkUpdateModeOption: 2 + m_RenderPostProcessing: 0 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_AllowHDROutput: 1 + m_UseScreenCoordOverride: 0 + m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} + m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 + m_TaaSettings: + m_Quality: 3 + m_FrameInfluence: 0.1 + m_JitterScale: 1 + m_MipBias: 0 + m_VarianceClampScale: 0.9 + m_ContrastAdaptiveSharpening: 0 +--- !u!1 &697388912 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 697388913} + - component: {fileID: 697388916} + - component: {fileID: 697388915} + - component: {fileID: 697388914} + m_Layer: 0 + m_Name: StartButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &697388913 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 697388912} + 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: 218608782} + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &697388914 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 697388912} + 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: 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 &697388915 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 697388912} + m_CullTransparentMesh: 1 +--- !u!114 &697388916 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 697388912} + 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: 697388914} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &712787452 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 712787453} + - component: {fileID: 712787456} + - component: {fileID: 712787455} + - component: {fileID: 712787454} + m_Layer: 0 + m_Name: ExamModeButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &712787453 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 712787452} + 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: 218608782} + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &712787454 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 712787452} + 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: 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 &712787455 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 712787452} + m_CullTransparentMesh: 1 +--- !u!114 &712787456 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 712787452} + 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: 712787454} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &722353780 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 722353781} + - component: {fileID: 722353784} + - component: {fileID: 722353783} + - component: {fileID: 722353782} + m_Layer: 0 + m_Name: LearnModeButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &722353781 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 722353780} + 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: 218608782} + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &722353782 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 722353780} + 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: 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 &722353783 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 722353780} + m_CullTransparentMesh: 1 +--- !u!114 &722353784 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 722353780} + 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: 722353782} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &791309582 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 791309586} + - component: {fileID: 791309585} + - component: {fileID: 791309584} + - component: {fileID: 791309583} + m_Layer: 0 + m_Name: Ground + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &791309583 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 791309582} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!64 &791309584 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 791309582} + 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: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &791309585 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 791309582} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &791309586 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 791309582} + serializedVersion: 2 + 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: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &829939571 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 829939572} + - component: {fileID: 829939574} + - component: {fileID: 829939573} + m_Layer: 0 + m_Name: LimbFixationCheck + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &829939572 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 829939571} + 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: 218608782} + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &829939573 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 829939571} + 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: 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 &829939574 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 829939571} + m_CullTransparentMesh: 1 +--- !u!1 &1238217704 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1238217705} + - component: {fileID: 1238217707} + - component: {fileID: 1238217706} + m_Layer: 0 + m_Name: SplintFixationCheck + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1238217705 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1238217704} + 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: 218608782} + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1238217706 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1238217704} + 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: 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 &1238217707 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1238217704} + m_CullTransparentMesh: 1 +--- !u!1 &1336280774 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1336280775} + - component: {fileID: 1336280777} + - component: {fileID: 1336280776} + m_Layer: 0 + m_Name: TipText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1336280775 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1336280774} + 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: 218608782} + 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.362} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1336280776 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1336280774} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.764151, g: 0.6928806, b: 0.20545568, 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_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 123123123 +--- !u!222 &1336280777 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1336280774} + m_CullTransparentMesh: 1 +--- !u!1 &1497194008 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1497194011} + - component: {fileID: 1497194010} + - component: {fileID: 1497194009} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1497194009 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1497194008} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1497194010 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1497194008} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!4 &1497194011 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1497194008} + serializedVersion: 2 + 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: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1604964355 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1604964358} + - component: {fileID: 1604964357} + - component: {fileID: 1604964356} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1604964356 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1604964355} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 3 + m_UsePipelineSettings: 1 + m_AdditionalLightsShadowResolutionTier: 2 + m_LightLayerMask: 1 + m_RenderingLayers: 1 + m_CustomShadowLayers: 0 + m_ShadowLayerMask: 1 + m_ShadowRenderingLayers: 1 + m_LightCookieSize: {x: 1, y: 1} + m_LightCookieOffset: {x: 0, y: 0} + m_SoftShadowQuality: 0 +--- !u!108 &1604964357 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1604964355} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1604964358 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1604964355} + serializedVersion: 2 + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &1800448695 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1800448696} + - component: {fileID: 1800448699} + - component: {fileID: 1800448698} + - component: {fileID: 1800448697} + m_Layer: 0 + m_Name: LimbFixationButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1800448696 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1800448695} + 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: 218608782} + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1800448697 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1800448695} + 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: 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 &1800448698 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1800448695} + m_CullTransparentMesh: 1 +--- !u!114 &1800448699 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1800448695} + 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: 1800448697} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 590941471} + - {fileID: 1604964358} + - {fileID: 791309586} + - {fileID: 218608782} + - {fileID: 1497194011} diff --git a/Assets/Scenes/ModeSelection.unity.meta b/Assets/Scenes/ModeSelection.unity.meta new file mode 100644 index 0000000..e32236c --- /dev/null +++ b/Assets/Scenes/ModeSelection.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: cffb0242a91904c5986f45e78b1820b3 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity deleted file mode 100644 index 89d7244..0000000 --- a/Assets/Scenes/SampleScene.unity +++ /dev/null @@ -1,407 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.18028305, g: 0.22571313, b: 0.3069213, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 12 - m_GIWorkflowMode: 1 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 0 - m_LightmapEditorSettings: - serializedVersion: 12 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_ExtractAmbientOcclusion: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 2 - m_BakeBackend: 1 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 512 - m_PVRBounces: 2 - m_PVREnvironmentSampleCount: 256 - m_PVREnvironmentReferencePointCount: 2048 - m_PVRFilteringMode: 1 - m_PVRDenoiserTypeDirect: 1 - m_PVRDenoiserTypeIndirect: 1 - m_PVRDenoiserTypeAO: 1 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVREnvironmentMIS: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ExportTrainingData: 0 - m_TrainingDataDestination: TrainingData - m_LightProbeSampleCountMultiplier: 4 - m_LightingDataAsset: {fileID: 0} - m_LightingSettings: {fileID: 0} ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - maxJobWorkers: 0 - preserveTilesOutsideBounds: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &330585543 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 330585546} - - component: {fileID: 330585545} - - component: {fileID: 330585544} - - component: {fileID: 330585547} - m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!81 &330585544 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 330585543} - m_Enabled: 1 ---- !u!20 &330585545 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 330585543} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_projectionMatrixMode: 1 - m_GateFitMode: 2 - m_FOVAxisMode: 0 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 0 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &330585546 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 330585543} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1, z: -10} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &330585547 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 330585543} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} - m_Name: - m_EditorClassIdentifier: - m_RenderShadows: 1 - m_RequiresDepthTextureOption: 2 - m_RequiresOpaqueTextureOption: 2 - m_CameraType: 0 - m_Cameras: [] - m_RendererIndex: -1 - m_VolumeLayerMask: - serializedVersion: 2 - m_Bits: 1 - m_VolumeTrigger: {fileID: 0} - m_VolumeFrameworkUpdateModeOption: 2 - m_RenderPostProcessing: 1 - m_Antialiasing: 0 - m_AntialiasingQuality: 2 - m_StopNaN: 0 - m_Dithering: 0 - m_ClearDepth: 1 - m_AllowXRRendering: 1 - m_RequiresDepthTexture: 0 - m_RequiresColorTexture: 0 - m_Version: 2 ---- !u!1 &410087039 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 410087041} - - component: {fileID: 410087040} - - component: {fileID: 410087042} - m_Layer: 0 - m_Name: Directional Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &410087040 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 410087039} - m_Enabled: 1 - serializedVersion: 10 - m_Type: 1 - m_Shape: 0 - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Intensity: 2 - m_Range: 10 - m_SpotAngle: 30 - m_InnerSpotAngle: 21.80208 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_CullingMatrixOverride: - e00: 1 - e01: 0 - e02: 0 - e03: 0 - e10: 0 - e11: 1 - e12: 0 - e13: 0 - e20: 0 - e21: 0 - e22: 1 - e23: 0 - e30: 0 - e31: 0 - e32: 0 - e33: 1 - m_UseCullingMatrixOverride: 0 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingLayerMask: 1 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 5000 - m_UseColorTemperature: 1 - m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} - m_UseBoundingSphereOverride: 0 - m_UseViewFrustumForShadowCasterCull: 1 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &410087041 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 410087039} - m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} - m_LocalPosition: {x: 0, y: 3, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} ---- !u!114 &410087042 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 410087039} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Version: 1 - m_UsePipelineSettings: 1 - m_AdditionalLightsShadowResolutionTier: 2 - m_LightLayerMask: 1 - m_CustomShadowLayers: 0 - m_ShadowLayerMask: 1 - m_LightCookieSize: {x: 1, y: 1} - m_LightCookieOffset: {x: 0, y: 0} ---- !u!1 &832575517 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 832575519} - - component: {fileID: 832575518} - m_Layer: 0 - m_Name: Global Volume - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &832575518 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 832575517} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IsGlobal: 1 - priority: 0 - blendDistance: 0 - weight: 1 - sharedProfile: {fileID: 11400000, guid: a6560a915ef98420e9faacc1c7438823, type: 2} ---- !u!4 &832575519 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 832575517} - 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: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/Scenes/main.unity b/Assets/Scenes/main.unity new file mode 100644 index 0000000..c49fb29 --- /dev/null +++ b/Assets/Scenes/main.unity @@ -0,0 +1,1396 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &330585543 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 330585546} + - component: {fileID: 330585545} + - component: {fileID: 330585544} + - component: {fileID: 330585547} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &330585544 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 330585543} + m_Enabled: 1 +--- !u!20 &330585545 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 330585543} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0, g: 0, b: 0, a: 1} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &330585546 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 330585543} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &330585547 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 330585543} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_VolumeFrameworkUpdateModeOption: 2 + m_RenderPostProcessing: 1 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_AllowHDROutput: 1 + m_UseScreenCoordOverride: 0 + m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} + m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 + m_TaaSettings: + m_Quality: 3 + m_FrameInfluence: 0.1 + m_JitterScale: 1 + m_MipBias: 0 + m_VarianceClampScale: 0.9 + m_ContrastAdaptiveSharpening: 0 +--- !u!1 &378905543 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 378905546} + - component: {fileID: 378905545} + - component: {fileID: 378905544} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &378905544 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 378905543} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &378905545 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 378905543} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!4 &378905546 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 378905543} + serializedVersion: 2 + 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: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &410087039 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 410087041} + - component: {fileID: 410087040} + - component: {fileID: 410087042} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &410087040 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 410087039} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 2 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 5000 + m_UseColorTemperature: 1 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &410087041 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 410087039} + serializedVersion: 2 + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!114 &410087042 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 410087039} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 3 + m_UsePipelineSettings: 1 + m_AdditionalLightsShadowResolutionTier: 2 + m_LightLayerMask: 1 + m_RenderingLayers: 1 + m_CustomShadowLayers: 0 + m_ShadowLayerMask: 1 + m_ShadowRenderingLayers: 1 + m_LightCookieSize: {x: 1, y: 1} + m_LightCookieOffset: {x: 0, y: 0} + m_SoftShadowQuality: 1 +--- !u!1 &670422332 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 670422337} + - component: {fileID: 670422336} + - component: {fileID: 670422335} + - component: {fileID: 670422334} + - component: {fileID: 670422333} + m_Layer: 0 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &670422333 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 670422332} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7fca7ea321dc34ab19b4bea56e90e8a2, type: 3} + m_Name: + m_EditorClassIdentifier: + titleText: {fileID: 0} + cprButton: {fileID: 0} + fractureFixationButton: {fileID: 0} + sprainBandageButton: {fileID: 0} + bleedingBandageButton: {fileID: 0} + casualtyTransportButton: {fileID: 0} + cprLabel: {fileID: 0} + fractureFixationLabel: {fileID: 0} + sprainBandageLabel: {fileID: 0} + bleedingBandageLabel: {fileID: 0} + casualtyTransportLabel: {fileID: 0} + versionText: {fileID: 0} +--- !u!114 &670422334 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 670422332} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &670422335 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 670422332} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &670422336 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 670422332} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 0 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &670422337 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 670422332} + 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: 1086801386} + - {fileID: 1123884995} + - {fileID: 2075639297} + - {fileID: 1262316363} + - {fileID: 1114114575} + - {fileID: 2035811706} + - {fileID: 1439481548} + m_Father: {fileID: 0} + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &832575517 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 832575519} + - component: {fileID: 832575518} + m_Layer: 0 + m_Name: Global Volume + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &832575518 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 832575517} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IsGlobal: 1 + priority: 0 + blendDistance: 0 + weight: 1 + sharedProfile: {fileID: 11400000, guid: a6560a915ef98420e9faacc1c7438823, type: 2} +--- !u!4 &832575519 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 832575517} + serializedVersion: 2 + 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: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1086801385 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1086801386} + - component: {fileID: 1086801388} + - component: {fileID: 1086801387} + m_Layer: 0 + m_Name: TitleText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1086801386 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1086801385} + 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: 670422337} + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1086801387 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1086801385} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, 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_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1086801388 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1086801385} + m_CullTransparentMesh: 1 +--- !u!1 &1114114574 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1114114575} + - component: {fileID: 1114114578} + - component: {fileID: 1114114577} + - component: {fileID: 1114114576} + m_Layer: 0 + m_Name: BleedingButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1114114575 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1114114574} + 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: 670422337} + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1114114576 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1114114574} + 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: 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 &1114114577 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1114114574} + m_CullTransparentMesh: 1 +--- !u!114 &1114114578 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1114114574} + 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: 0} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1123884994 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1123884995} + - component: {fileID: 1123884998} + - component: {fileID: 1123884997} + - component: {fileID: 1123884996} + m_Layer: 0 + m_Name: CPRButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1123884995 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1123884994} + 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: 670422337} + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1123884996 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1123884994} + 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: 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 &1123884997 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1123884994} + m_CullTransparentMesh: 1 +--- !u!114 &1123884998 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1123884994} + 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: 0} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1262316362 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1262316363} + - component: {fileID: 1262316366} + - component: {fileID: 1262316365} + - component: {fileID: 1262316364} + m_Layer: 0 + m_Name: SprainButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1262316363 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1262316362} + 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: 670422337} + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1262316364 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1262316362} + 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: 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 &1262316365 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1262316362} + m_CullTransparentMesh: 1 +--- !u!114 &1262316366 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1262316362} + 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: 0} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1439481547 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1439481548} + - component: {fileID: 1439481550} + - component: {fileID: 1439481549} + m_Layer: 0 + m_Name: VersionText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1439481548 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1439481547} + 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: 670422337} + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1439481549 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1439481547} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, 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_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1439481550 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1439481547} + m_CullTransparentMesh: 1 +--- !u!1 &2035811705 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2035811706} + - component: {fileID: 2035811709} + - component: {fileID: 2035811708} + - component: {fileID: 2035811707} + m_Layer: 0 + m_Name: TransportButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2035811706 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2035811705} + 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: 670422337} + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2035811707 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2035811705} + 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: 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 &2035811708 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2035811705} + m_CullTransparentMesh: 1 +--- !u!114 &2035811709 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2035811705} + 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: 0} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &2075639296 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2075639297} + - component: {fileID: 2075639300} + - component: {fileID: 2075639299} + - component: {fileID: 2075639298} + m_Layer: 0 + m_Name: FractureButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2075639297 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2075639296} + 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: 670422337} + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2075639298 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2075639296} + 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: 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 &2075639299 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2075639296} + m_CullTransparentMesh: 1 +--- !u!114 &2075639300 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2075639296} + 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: 0} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 330585546} + - {fileID: 410087041} + - {fileID: 832575519} + - {fileID: 670422337} + - {fileID: 378905546} diff --git a/Assets/Scenes/SampleScene.unity.meta b/Assets/Scenes/main.unity.meta similarity index 100% rename from Assets/Scenes/SampleScene.unity.meta rename to Assets/Scenes/main.unity.meta diff --git a/Assets/Screenshots.meta b/Assets/Screenshots.meta new file mode 100644 index 0000000..4ce59fe --- /dev/null +++ b/Assets/Screenshots.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4b8054ca510a246b2bf82ce19b92e5ca +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Screenshots/screenshot-20260623-223456.png b/Assets/Screenshots/screenshot-20260623-223456.png new file mode 100644 index 0000000000000000000000000000000000000000..de6fe114a2a154e0bc16601f65a649d09d2febf8 GIT binary patch literal 27300 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

i9ckLDS-pR3eQ#xZ9R#)Cdx`i1_|o$ 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

cauMzeKeSFRYh-!W|k3M&*)jz)v9a! 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 Q0RexPjVuf+FSy757w>vy(f|Me literal 0 HcmV?d00001 diff --git a/Assets/Screenshots/screenshot-20260623-223456.png.meta b/Assets/Screenshots/screenshot-20260623-223456.png.meta new file mode 100644 index 0000000..e5cf2d2 --- /dev/null +++ b/Assets/Screenshots/screenshot-20260623-223456.png.meta @@ -0,0 +1,127 @@ +fileFormatVersion: 2 +guid: e31ed9416930c484393d7e60f1ab94b6 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Screenshots/screenshot-20260623-224726.png b/Assets/Screenshots/screenshot-20260623-224726.png new file mode 100644 index 0000000000000000000000000000000000000000..29dd12ec2471cd6042a18a5f9140d8fa16c60fce GIT binary patch literal 34368 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 rNoMZC|B?6&L?D~#@LGG=mi(^Oy$+u8&JeS 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 IK63Uy0ILEtp8x;= literal 0 HcmV?d00001 diff --git a/Assets/Screenshots/screenshot-20260624-023329.png.meta b/Assets/Screenshots/screenshot-20260624-023329.png.meta new file mode 100644 index 0000000..f2869f1 --- /dev/null +++ b/Assets/Screenshots/screenshot-20260624-023329.png.meta @@ -0,0 +1,127 @@ +fileFormatVersion: 2 +guid: aeae0dec279fb4db19f309dfb541ab10 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts.meta b/Assets/Scripts.meta new file mode 100644 index 0000000..b546f00 --- /dev/null +++ b/Assets/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a74fee214fee248ca8bce545fe9ba60a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Animation.meta b/Assets/Scripts/Animation.meta new file mode 100644 index 0000000..4a6c6ae --- /dev/null +++ b/Assets/Scripts/Animation.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e185e7ef2b2bc41a3952d401ed28b894 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Animation/AnimationController.cs b/Assets/Scripts/Animation/AnimationController.cs new file mode 100644 index 0000000..056ab18 --- /dev/null +++ b/Assets/Scripts/Animation/AnimationController.cs @@ -0,0 +1,3 @@ +using UnityEngine; +///

Legacy — replaced by StepAnimationHandler. +public class AnimationController : MonoBehaviour { } diff --git a/Assets/Scripts/Animation/AnimationController.cs.meta b/Assets/Scripts/Animation/AnimationController.cs.meta new file mode 100644 index 0000000..9d73e99 --- /dev/null +++ b/Assets/Scripts/Animation/AnimationController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 05b8d5cbfd0e74474a937b3cc7ad120c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Animation/CharacterAnimController.cs b/Assets/Scripts/Animation/CharacterAnimController.cs new file mode 100644 index 0000000..b3ce91d --- /dev/null +++ b/Assets/Scripts/Animation/CharacterAnimController.cs @@ -0,0 +1,87 @@ +using UnityEngine; + +/// +/// 角色动画控制器:管理伤者和施救者的动画状态切换。 +/// 挂在角色根 GameObject 上,引用其 Animator 组件。 +/// +public class CharacterAnimController : MonoBehaviour +{ + public enum CharacterRole { Patient, Rescuer } + public CharacterRole Role = CharacterRole.Patient; + + [Header("Animator 引用")] + [SerializeField] private Animator _animator; + + private static readonly int ParamRun = Animator.StringToHash("IsRunning"); + private static readonly int ParamJump = Animator.StringToHash("Jump"); + private static readonly int ParamFall = Animator.StringToHash("Fall"); + private static readonly int ParamLying = Animator.StringToHash("IsLying"); + private static readonly int ParamCrouch = Animator.StringToHash("Crouch"); + private static readonly int ParamCheck = Animator.StringToHash("Check"); + private static readonly int ParamBandage = Animator.StringToHash("Bandage"); + private static readonly int ParamRemoveShoe = Animator.StringToHash("RemoveShoe"); + + private void Awake() + { + if (_animator == null) _animator = GetComponent(); + } + + public void PlayRun() + { + if (_animator == null) return; + _animator.SetBool(ParamRun, true); + } + + public void StopRun() + { + if (_animator == null) return; + _animator.SetBool(ParamRun, false); + } + + public void TriggerJump() + { + _animator?.SetTrigger(ParamJump); + } + + public void TriggerFall() + { + _animator?.SetTrigger(ParamFall); + _animator?.SetBool(ParamLying, true); + } + + public void SetLying(bool lying) + { + _animator?.SetBool(ParamLying, lying); + } + + public void PlayCrouch() + { + _animator?.SetBool(ParamCrouch, true); + } + + public void StopCrouch() + { + _animator?.SetBool(ParamCrouch, false); + } + + public void TriggerCheck() + { + _animator?.SetTrigger(ParamCheck); + } + + public void TriggerBandage() + { + _animator?.SetTrigger(ParamBandage); + } + + public void TriggerRemoveShoe() + { + _animator?.SetTrigger(ParamRemoveShoe); + } + + public void TriggerByName(string triggerName) + { + if (_animator == null || string.IsNullOrEmpty(triggerName)) return; + _animator.SetTrigger(Animator.StringToHash(triggerName)); + } +} diff --git a/Assets/Scripts/Animation/CharacterAnimController.cs.meta b/Assets/Scripts/Animation/CharacterAnimController.cs.meta new file mode 100644 index 0000000..3c0fc12 --- /dev/null +++ b/Assets/Scripts/Animation/CharacterAnimController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 23fb87b6a5b9544d3aed3b307715504c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Animation/StepAnimationHandler.cs b/Assets/Scripts/Animation/StepAnimationHandler.cs new file mode 100644 index 0000000..2c63439 --- /dev/null +++ b/Assets/Scripts/Animation/StepAnimationHandler.cs @@ -0,0 +1,181 @@ +using UnityEngine; +using System.Collections; + +/// +/// 按步骤触发对应动画:开场动画、脱鞋、绑带、夹板放置等。 +/// 挂在场景中有动画关联物体的 GameObject 上。 +/// 由 ExperimentFlowCoordinator 绑定到 StepManager.OnStepChanged。 +/// +public class StepAnimationHandler : MonoBehaviour +{ + [Header("角色引用")] + [SerializeField] private CharacterAnimController _patient; + [SerializeField] private CharacterAnimController _rescuer; + + [Header("道具引用")] + [SerializeField] private GameObject _shoeLeft; // 伤者左脚鞋 + [SerializeField] private GameObject _shoeRight; // 伤者右脚鞋 + [SerializeField] private GameObject[] _bandages; // 绑带物件列表 + [SerializeField] private GameObject[] _splints; // 夹板物件列表 + [SerializeField] private GameObject _padding; // 衬垫 + + [Header("夹板固定专用道具")] + [SerializeField] private GameObject _splintLeft; + [SerializeField] private GameObject _splintRight; + + [Header("伤口高亮")] + [SerializeField] private GameObject _woundHighlight; + + [Header("动画时长")] + [SerializeField] private float _shoeRemoveDuration = 1.5f; + [SerializeField] private float _bandageAppearDuration = 0.5f; + + /// 由 StepManager.OnStepChanged 调用 + public void PlayStepAnimation(int stepIndex) + { + var sm = FindObjectOfType(); + if (sm == null) return; + + var step = sm.GetCurrentStep(); + if (step == null) return; + + StopAllCoroutines(); + + // 根据步骤名称匹配动画 + switch (step.StepName) + { + case "OpeningScene": + StartCoroutine(PlayOpeningScene()); + break; + case "RemoveShoes": + StartCoroutine(PlayRemoveShoes()); + break; + case "PlaceBandage": + StartCoroutine(PlayPlaceBandage()); + break; + case "LimbFixation": + StartCoroutine(PlayLimbFixation()); + break; + case "SplintFixation": + StartCoroutine(PlaySplintFixation()); + break; + case "AnkleFixation": + StartCoroutine(PlayAnkleFixation()); + break; + case "FinalCheck": + break; + default: + Debug.Log($"StepAnimationHandler: 步骤 {step.StepName} 无专属动画"); + break; + } + } + + #region 动画协程 + + private IEnumerator PlayOpeningScene() + { + // 伤者跑步 → 跳高 → 摔倒 + _patient?.PlayRun(); + yield return new WaitForSeconds(4f); + _patient?.TriggerJump(); + yield return new WaitForSeconds(1f); + _patient?.TriggerFall(); + yield return new WaitForSeconds(1.5f); + _patient?.StopRun(); + } + + private IEnumerator PlayRemoveShoes() + { + // 鞋子弹开/移出 + if (_shoeLeft != null) + { + Vector3 target = _shoeLeft.transform.position + Vector3.right * 0.5f + Vector3.up * 0.2f; + yield return StartCoroutine(MoveToPosition(_shoeLeft, target, _shoeRemoveDuration)); + _shoeLeft.SetActive(false); + } + if (_shoeRight != null) + { + Vector3 target = _shoeRight.transform.position + Vector3.right * 0.5f + Vector3.up * 0.2f; + yield return StartCoroutine(MoveToPosition(_shoeRight, target, _shoeRemoveDuration)); + _shoeRight.SetActive(false); + } + } + + private IEnumerator PlayPlaceBandage() + { + // 显示绑带 + foreach (var b in _bandages) + { + if (b != null) b.SetActive(true); + } + yield return null; + } + + private IEnumerator PlayLimbFixation() + { + // 显示衬垫 + 激活绑带 + if (_padding != null) _padding.SetActive(true); + yield return new WaitForSeconds(0.5f); + + // 依次显示绑带 + for (int i = 0; i < _bandages.Length; i++) + { + if (_bandages[i] != null) + { + _bandages[i].SetActive(true); + yield return new WaitForSeconds(_bandageAppearDuration); + } + } + } + + private IEnumerator PlaySplintFixation() + { + // 显示夹板 + if (_splintLeft != null) _splintLeft.SetActive(true); + if (_splintRight != null) _splintRight.SetActive(true); + yield return new WaitForSeconds(0.5f); + + foreach (var s in _splints) + { + if (s != null) s.SetActive(true); + yield return new WaitForSeconds(_bandageAppearDuration); + } + } + + private IEnumerator PlayAnkleFixation() + { + // 8 字绑带动画 - 激活脚踝处绑带 + if (_bandages.Length > 0 && _bandages[_bandages.Length - 1] != null) + { + _bandages[_bandages.Length - 1].SetActive(true); + } + yield return null; + } + + #endregion + + #region 工具方法 + + private IEnumerator MoveToPosition(GameObject obj, Vector3 target, float duration) + { + if (obj == null) yield break; + + Vector3 start = obj.transform.position; + float elapsed = 0f; + while (elapsed < duration) + { + elapsed += Time.deltaTime; + obj.transform.position = Vector3.Lerp(start, target, elapsed / duration); + yield return null; + } + obj.transform.position = target; + } + + /// 显示伤口高亮 + public void ShowWoundHighlight(bool show) + { + if (_woundHighlight != null) _woundHighlight.SetActive(show); + } + + #endregion +} diff --git a/Assets/Scripts/Animation/StepAnimationHandler.cs.meta b/Assets/Scripts/Animation/StepAnimationHandler.cs.meta new file mode 100644 index 0000000..9fc8dcc --- /dev/null +++ b/Assets/Scripts/Animation/StepAnimationHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bbe25e570b15b41d98e77259d82a8f1d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Audio.meta b/Assets/Scripts/Audio.meta new file mode 100644 index 0000000..1be509a --- /dev/null +++ b/Assets/Scripts/Audio.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0501e3f1ed8cc4ec3ba149c9cd7b20af +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Audio/AudioManager.cs b/Assets/Scripts/Audio/AudioManager.cs new file mode 100644 index 0000000..1f71e74 --- /dev/null +++ b/Assets/Scripts/Audio/AudioManager.cs @@ -0,0 +1,92 @@ +using UnityEngine; + +/// +/// 音频管理器:管理背景音乐和步骤语音解说。 +/// 挂在场景 GameObject 上,通过 AudioSource 组件播放。 +/// +[RequireComponent(typeof(AudioSource))] +public class AudioManager : MonoBehaviour +{ + public static AudioManager Instance { get; private set; } + + [Header("音频源")] + [SerializeField] private AudioSource _bgmSource; + [SerializeField] private AudioSource _voiceSource; + + [Header("背景音乐")] + public AudioClip BGMClip; + [Range(0f, 1f)] public float BGMVolume = 0.3f; + + private void Awake() + { + if (Instance != null) { Destroy(gameObject); return; } + Instance = this; + DontDestroyOnLoad(gameObject); + + if (_bgmSource == null) _bgmSource = GetComponent(); + if (_voiceSource == null) + { + _voiceSource = gameObject.AddComponent(); + _voiceSource.playOnAwake = false; + _voiceSource.loop = false; + } + } + + private void Start() + { + PlayBGM(); + } + + public void PlayBGM() + { + if (_bgmSource == null || BGMClip == null) return; + _bgmSource.clip = BGMClip; + _bgmSource.volume = BGMVolume; + _bgmSource.loop = true; + _bgmSource.Play(); + } + + public void StopBGM() + { + if (_bgmSource != null) _bgmSource.Stop(); + } + + /// 播放一步语音解说,自动打断前一条 + public void PlayVoice(AudioClip clip, float volume = 1f) + { + if (_voiceSource == null || clip == null) return; + _voiceSource.Stop(); + _voiceSource.clip = clip; + _voiceSource.volume = volume; + _voiceSource.Play(); + } + + /// 停止语音 + public void StopVoice() + { + if (_voiceSource != null) _voiceSource.Stop(); + } + + /// 按文件名从 StreamingAssets 加载并播放语音 + public void PlayVoiceFromFile(string fileName) + { + if (string.IsNullOrEmpty(fileName)) return; + StartCoroutine(LoadAndPlayVoice(fileName)); + } + + private System.Collections.IEnumerator LoadAndPlayVoice(string fileName) + { + string path = System.IO.Path.Combine(Application.streamingAssetsPath, "Voice", fileName); + using var www = UnityEngine.Networking.UnityWebRequestMultimedia.GetAudioClip(path, AudioType.WAV); + yield return www.SendWebRequest(); + if (www.result == UnityEngine.Networking.UnityWebRequest.Result.Success) + { + var clip = UnityEngine.Networking.DownloadHandlerAudioClip.GetContent(www); + PlayVoice(clip); + } + else + { + Debug.LogWarning($"AudioManager: 加载语音失败 {path}"); + } + } +} diff --git a/Assets/Scripts/Audio/AudioManager.cs.meta b/Assets/Scripts/Audio/AudioManager.cs.meta new file mode 100644 index 0000000..15e0b98 --- /dev/null +++ b/Assets/Scripts/Audio/AudioManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 55eccc8daa89f482193b0fcb1aa0f2bc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core.meta b/Assets/Scripts/Core.meta new file mode 100644 index 0000000..ba53e13 --- /dev/null +++ b/Assets/Scripts/Core.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4d8a4c89bbd0d457494bb8c6130ff34b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core/ConfigLoader.cs b/Assets/Scripts/Core/ConfigLoader.cs new file mode 100644 index 0000000..f1adc12 --- /dev/null +++ b/Assets/Scripts/Core/ConfigLoader.cs @@ -0,0 +1,3 @@ +using UnityEngine; +/// Legacy — replaced by ExperimentConfig ScriptableObject. +public class ConfigLoader : MonoBehaviour { } diff --git a/Assets/Scripts/Core/ConfigLoader.cs.meta b/Assets/Scripts/Core/ConfigLoader.cs.meta new file mode 100644 index 0000000..e000223 --- /dev/null +++ b/Assets/Scripts/Core/ConfigLoader.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bda8b3bd9c4a14051b7821859e6095f6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core/ExperimentController.cs b/Assets/Scripts/Core/ExperimentController.cs new file mode 100644 index 0000000..8504b45 --- /dev/null +++ b/Assets/Scripts/Core/ExperimentController.cs @@ -0,0 +1,3 @@ +using UnityEngine; +/// Legacy — replaced by ExperimentFlowCoordinator. +public class ExperimentController : MonoBehaviour { } diff --git a/Assets/Scripts/Core/ExperimentController.cs.meta b/Assets/Scripts/Core/ExperimentController.cs.meta new file mode 100644 index 0000000..3c0393e --- /dev/null +++ b/Assets/Scripts/Core/ExperimentController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5d499f2451702432ebbf25bfccbe1fa9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core/ExperimentFlowCoordinator.cs b/Assets/Scripts/Core/ExperimentFlowCoordinator.cs new file mode 100644 index 0000000..bd6065c --- /dev/null +++ b/Assets/Scripts/Core/ExperimentFlowCoordinator.cs @@ -0,0 +1,100 @@ +using UnityEngine; + +/// +/// 实验场景的总协调器:挂载在 Experiment 场景的根 GameObject 上, +/// 负责将 StepManager / InteractionSystem / UIManager 串联在一起。 +/// 考核模式以 proportion(0~1)计分。 +/// +public class ExperimentFlowCoordinator : MonoBehaviour +{ + [Header("核心组件引用")] + [SerializeField] private StepManager _stepManager; + [SerializeField] private InteractionSystem _interactionSystem; + [SerializeField] private UIManager _uiManager; + [SerializeField] private StepAnimationHandler _animationHandler; + [SerializeField] private AudioManager _audioManager; + + [Header("配置")] + [SerializeField] private ExperimentConfig _defaultConfig; + + private void Start() + { + if (_interactionSystem != null && _stepManager != null) + { + _interactionSystem.OnObjectClicked.AddListener(OnObjectClicked); + _interactionSystem.OnAnywhereClicked.AddListener(OnAnywhereClicked); + } + + if (_stepManager != null && _animationHandler != null) + { + _stepManager.OnStepChanged.AddListener(_animationHandler.PlayStepAnimation); + } + + if (_defaultConfig != null) + { + _stepManager.Config = _defaultConfig; + } + + _stepManager.InitializeFromGameManager(); + } + + #region 交互回调 + + private void OnObjectClicked(string tag) + { + var step = _stepManager.GetCurrentStep(); + if (step == null) return; + + switch (step.CompleteType) + { + case StepCompleteType.ClickObject: + if (tag == step.TargetTag) + { + Debug.Log($"ExperimentFlowCoordinator: 正确点击了 {tag}"); + _stepManager.OnStepInteractionComplete(1f); + } + else + { + Debug.Log($"ExperimentFlowCoordinator: 点击了 {tag},需要的是 {step.TargetTag}"); + if (_stepManager.Mode == ExperimentMode.Exam) + _stepManager.OnStepInteractionComplete(0f, "点击位置不正确"); + } + break; + + case StepCompleteType.SequenceClick: + // 按子项命中比例计分 + bool isComplete; + bool isCorrect = _interactionSystem.TrySequenceClick(tag, out isComplete); + if (isComplete) + { + // 取当前序列已命中数 / 总子项数 + int hit = _interactionSystem.GetSequenceHitCount(); + int total = step.ClickSequenceTags?.Length ?? step.SubStepCount; + float proportion = total > 0 ? (float)hit / total : 1f; + string fb = proportion < 1f ? $"顺序部分正确({hit}/{total} 步正确)" : ""; + _stepManager.OnStepInteractionComplete(proportion, fb); + } + else if (!isCorrect) + { + _stepManager.OnStepInteractionComplete(0f, "点击顺序不正确"); + } + break; + + default: + break; + } + } + + private void OnAnywhereClicked() + { + var step = _stepManager.GetCurrentStep(); + if (step == null) return; + + if (step.CompleteType == StepCompleteType.ClickAnywhere) + { + _stepManager.OnStepInteractionComplete(1f); + } + } + + #endregion +} diff --git a/Assets/Scripts/Core/ExperimentFlowCoordinator.cs.meta b/Assets/Scripts/Core/ExperimentFlowCoordinator.cs.meta new file mode 100644 index 0000000..d5d6b98 --- /dev/null +++ b/Assets/Scripts/Core/ExperimentFlowCoordinator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e3dd6cb15ae1a4f0e92e2826f64ee6cf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core/ExperimentTypes.cs b/Assets/Scripts/Core/ExperimentTypes.cs new file mode 100644 index 0000000..81e85ee --- /dev/null +++ b/Assets/Scripts/Core/ExperimentTypes.cs @@ -0,0 +1,38 @@ +// ============================================================ +// 实验类型、模式、固定方式的枚举定义 +// ============================================================ + +/// 五大急救实验类型 +public enum ExperimentType +{ + CPR, // 心肺复苏 + FractureFixation, // 骨折固定 + SprainBandaging, // 扭伤包扎 + BleedingBandaging, // 出血包扎 + CasualtyTransport // 伤员搬运 +} + +/// 运行模式 +public enum ExperimentMode +{ + Learn, // 学习模式 + Exam // 考核模式 +} + +/// 骨折固定方式(仅骨折固定实验使用) +public enum FixationMethod +{ + LimbFixation, // 肢体固定 + SplintFixation // 夹板固定 +} + +/// 单个步骤完成的判定类型 +public enum StepCompleteType +{ + None, // 无需交互,自动进入下一步 + ClickObject, // 点击指定 3D 物体 + DragToTarget, // 拖拽物体到目标位置 + ClickAnywhere, // 点击任意空白处 + MultipleChoice, // 选择题(考核模式) + SequenceClick // 按顺序点击多个物体(考核模式) +} \ No newline at end of file diff --git a/Assets/Scripts/Core/ExperimentTypes.cs.meta b/Assets/Scripts/Core/ExperimentTypes.cs.meta new file mode 100644 index 0000000..4f8a344 --- /dev/null +++ b/Assets/Scripts/Core/ExperimentTypes.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 13ab85c5e00ee4765918090eeac6de36 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core/GameManager.cs b/Assets/Scripts/Core/GameManager.cs new file mode 100644 index 0000000..505a46a --- /dev/null +++ b/Assets/Scripts/Core/GameManager.cs @@ -0,0 +1,75 @@ +using UnityEngine; + +/// +/// 全局单例管理器:持有当前实验的类型、模式、固定方式与加权分数。 +/// 挂在场景第一个 GameObject 上,设置 DontDestroyOnLoad。 +/// +public class GameManager : MonoBehaviour +{ + public static GameManager Instance { get; private set; } + + [Header("当前实验设置(运行时赋值)")] + public ExperimentType CurrentExperimentType = ExperimentType.FractureFixation; + public ExperimentMode CurrentMode = ExperimentMode.Learn; + public FixationMethod CurrentFixationMethod = FixationMethod.LimbFixation; + + [Header("加权评分")] + public float TotalWeightedScore; // 实际得分(加权累加) + public float MaxWeightedScore = 100f; // 总分 + + [Header("考核记录")] + public float[] StepScores; // 每步实际得分(含权重) + public float[] StepMaxScores; // 每步满分(权重值) + public string[] StepFeedback; // 每题错误反馈文本 + public bool[] StepCorrect; // 每题是否有任何得分 + + private void Awake() + { + if (Instance != null && Instance != this) + { + Destroy(gameObject); + return; + } + Instance = this; + DontDestroyOnLoad(gameObject); + } + + /// 初始化考核记录数组 + public void InitExamRecord(int stepCount) + { + StepScores = new float[stepCount]; + StepMaxScores = new float[stepCount]; + StepFeedback = new string[stepCount]; + StepCorrect = new bool[stepCount]; + TotalWeightedScore = 0f; + } + + /// + /// 记录一个考核步骤的结果。 + /// proportion 为 0~1,表示得分比例(SequenceClick 类型部分正确时用到)。 + /// + public void RecordExamResult(int stepIndex, float maxScore, float proportion, string feedback) + { + if (StepScores == null || stepIndex >= StepScores.Length) return; + + StepMaxScores[stepIndex] = maxScore; + float earned = maxScore * Mathf.Clamp01(proportion); + StepScores[stepIndex] = earned; + StepFeedback[stepIndex] = feedback; + StepCorrect[stepIndex] = proportion > 0f; + TotalWeightedScore += earned; + } + + /// 按百分比返回考核分数 + public float GetExamPercentage() + { + if (MaxWeightedScore <= 0f) return 0f; + return TotalWeightedScore / MaxWeightedScore * 100f; + } + + /// 获取总分(整数) + public int GetExamScoreRounded() + { + return Mathf.RoundToInt(TotalWeightedScore); + } +} diff --git a/Assets/Scripts/Core/GameManager.cs.meta b/Assets/Scripts/Core/GameManager.cs.meta new file mode 100644 index 0000000..1ea2a31 --- /dev/null +++ b/Assets/Scripts/Core/GameManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c57598038a100447ab7f5396d0f0e49c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core/StepManager.cs b/Assets/Scripts/Core/StepManager.cs new file mode 100644 index 0000000..b6f3149 --- /dev/null +++ b/Assets/Scripts/Core/StepManager.cs @@ -0,0 +1,172 @@ +using UnityEngine; +using UnityEngine.Events; + +/// +/// 实验流程状态机——整个项目的核心控制器。 +/// 负责步骤推进、模式切换、UI 更新、加权考核判分调度。 +/// 挂在一个持久化的 GameObject 上。 +/// +public class StepManager : MonoBehaviour +{ + [Header("配置")] + public ExperimentConfig Config; + + [Header("事件(拖入场景对象或通过代码绑定)")] + public UnityEvent OnStepChanged; // 步骤切换时触发,传新步骤索引 + public UnityEvent OnTipChanged; // Tip 文案更新 + public UnityEvent OnDialogueChanged; // 角色对话更新 + public UnityEvent OnExamPopup; // 考核弹窗触发,传当前 StepData + public UnityEvent OnDetailedContent; // 详细操作说明更新(甲方补充) + public UnityEvent OnExperimentComplete; // 实验全部完成 + public UnityEvent OnVideoToggle; // 画中画视频开关(文件名, 是否激活) + public UnityEvent OnModeUIUpdate; // 通知 UI 刷新模式按钮状态 + + // 私有状态 + private StepData[] _activeSteps; + private int _currentStepIndex = -1; + private ExperimentMode _mode; + private FixationMethod _fixation; + + public int CurrentStepIndex => _currentStepIndex; + public int TotalSteps => _activeSteps != null ? _activeSteps.Length : 0; + public ExperimentMode Mode => _mode; + public FixationMethod Fixation => _fixation; + + /// 用 GameManager 的当前设置初始化实验流程 + public void InitializeFromGameManager() + { + var gm = GameManager.Instance; + if (gm == null) { Debug.LogError("StepManager: GameManager.Instance is null!"); return; } + Initialize(gm.CurrentExperimentType, gm.CurrentMode, gm.CurrentFixationMethod); + } + + /// 显式指定参数初始化 + public void Initialize(ExperimentType type, ExperimentMode mode, FixationMethod fixation) + { + _mode = mode; + _fixation = fixation; + + Config = Resources.Load($"Configs/{type}Config"); + if (Config == null) + { + Debug.LogError($"StepManager: 找不到 ExperimentConfig for {type},请在 Resources/Configs/ 下创建"); + return; + } + + _activeSteps = Config.GetStepsFor(mode, fixation); + if (_activeSteps == null || _activeSteps.Length == 0) + { + Debug.LogError($"StepManager: 实验 {type} 模式 {mode} 固定方式 {fixation} 无步骤数据!"); + return; + } + + _currentStepIndex = -1; + + if (mode == ExperimentMode.Exam) + GameManager.Instance.InitExamRecord(_activeSteps.Length); + + OnModeUIUpdate?.Invoke(mode == ExperimentMode.Exam); + GoToStep(0); + } + + /// 跳转到指定步骤(含边界检查) + public void GoToStep(int index) + { + if (_activeSteps == null) return; + index = Mathf.Clamp(index, 0, _activeSteps.Length - 1); + if (index == _currentStepIndex) return; + + _currentStepIndex = index; + var step = _activeSteps[index]; + + if (_mode == ExperimentMode.Learn) + { + OnTipChanged?.Invoke(step.TipText); + OnDialogueChanged?.Invoke(step.DialogueText); + OnDetailedContent?.Invoke(step.DetailedContent); + if (step.ShowPipVideo) + OnVideoToggle?.Invoke(step.VideoFileName, true); + else + OnVideoToggle?.Invoke(null, false); + } + else + { + OnTipChanged?.Invoke(""); + OnDialogueChanged?.Invoke(""); + OnDetailedContent?.Invoke(""); + OnVideoToggle?.Invoke(null, false); + + if (!string.IsNullOrEmpty(step.ExamQuestionText)) + OnExamPopup?.Invoke(step); + } + + OnStepChanged?.Invoke(_currentStepIndex); + } + + /// 下一步 + public void NextStep() + { + if (_activeSteps == null) return; + if (_currentStepIndex >= _activeSteps.Length - 1) + { + CompleteExperiment(); + return; + } + GoToStep(_currentStepIndex + 1); + } + + /// 上一步 + public void PreviousStep() + { + if (_activeSteps == null || _currentStepIndex <= 0) return; + GoToStep(_currentStepIndex - 1); + } + + /// 获取当前步骤数据(只读) + public StepData GetCurrentStep() + { + if (_activeSteps == null || _currentStepIndex < 0 || _currentStepIndex >= _activeSteps.Length) + return null; + return _activeSteps[_currentStepIndex]; + } + + /// + /// 当前步骤互动完成后的回调。 + /// proportion: 得分比例 0~1(SequenceClick 按子项命中比例,其余全对=1,全错=0)。 + /// + public void OnStepInteractionComplete(float proportion = 1f, string feedback = "") + { + var step = GetCurrentStep(); + if (step == null) return; + + if (_mode == ExperimentMode.Exam) + { + string fb = string.IsNullOrEmpty(feedback) ? step.ErrorFeedback : feedback; + GameManager.Instance.RecordExamResult(_currentStepIndex, step.ScoreWeight, proportion, fb); + } + + if (_mode == ExperimentMode.Learn) + NextStep(); + } + + /// 实验完成 + private void CompleteExperiment() + { + Debug.Log("StepManager: 实验流程结束"); + OnExperimentComplete?.Invoke(); + } + + /// 切换模式(学习 ↔ 考核),从头开始 + public void SwitchMode(ExperimentMode newMode) + { + GameManager.Instance.CurrentMode = newMode; + Initialize(GameManager.Instance.CurrentExperimentType, newMode, GameManager.Instance.CurrentFixationMethod); + } + + /// 切换固定方式,从头开始 + public void SwitchFixation(FixationMethod newFixation) + { + GameManager.Instance.CurrentFixationMethod = newFixation; + Initialize(GameManager.Instance.CurrentExperimentType, GameManager.Instance.CurrentMode, newFixation); + } +} diff --git a/Assets/Scripts/Core/StepManager.cs.meta b/Assets/Scripts/Core/StepManager.cs.meta new file mode 100644 index 0000000..9716e00 --- /dev/null +++ b/Assets/Scripts/Core/StepManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a2535da3ddf9046e686f9b0d2ce5f569 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Data.meta b/Assets/Scripts/Data.meta new file mode 100644 index 0000000..2ba20ed --- /dev/null +++ b/Assets/Scripts/Data.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 49013f1e509fe47b18f6e8480e546996 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Data/ExamQuestionData.cs b/Assets/Scripts/Data/ExamQuestionData.cs new file mode 100644 index 0000000..9eccf1d --- /dev/null +++ b/Assets/Scripts/Data/ExamQuestionData.cs @@ -0,0 +1,34 @@ +using UnityEngine; + +/// +/// Defines an exam question with multiple choices. +/// +[CreateAssetMenu(fileName = "ExamQuestion", menuName = "VFS/Exam Question")] +public class ExamQuestionData : ScriptableObject +{ + [Header("Question Info")] + public int questionIndex; + [TextArea(2, 4)] + public string questionText; + + [Header("Choices")] + public string[] choices; + public int correctChoiceIndex; + + [Header("Feedback")] + [TextArea(2, 4)] + public string correctFeedback; + [TextArea(2, 4)] + public string incorrectFeedback; + + [Header("Interaction")] + public QuestionType questionType; + public string targetTag; + + public enum QuestionType + { + MultipleChoice, + ClickTarget, + SequenceOrder + } +} diff --git a/Assets/Scripts/Data/ExamQuestionData.cs.meta b/Assets/Scripts/Data/ExamQuestionData.cs.meta new file mode 100644 index 0000000..76d655d --- /dev/null +++ b/Assets/Scripts/Data/ExamQuestionData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1ac09a60490764c18ba4d4b5616370e8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Data/ExperimentConfig.cs b/Assets/Scripts/Data/ExperimentConfig.cs new file mode 100644 index 0000000..0ef5e3e --- /dev/null +++ b/Assets/Scripts/Data/ExperimentConfig.cs @@ -0,0 +1,38 @@ +using UnityEngine; + +/// +/// 单个实验类型的完整配置:包含学习模式与考核模式的所有步骤。 +/// 在 Unity Editor 中为每种实验类型各创建一份 Asset。 +/// +[CreateAssetMenu(fileName = "ExperimentConfig", menuName = "VFS/Experiment Config")] +public class ExperimentConfig : ScriptableObject +{ + [Header("实验标识")] + public ExperimentType Type; + [Header("实验名称")] + public string DisplayName; + [Header("骨折固定专属 - 固定方式对应的步骤覆盖")] + public FixationMethod DefaultFixationMethod = FixationMethod.LimbFixation; + [Header("学习模式步骤列表(肢体固定)")] + public StepData[] LearnStepsLimb; + [Header("学习模式步骤列表(夹板固定)")] + public StepData[] LearnStepsSplint; + [Header("考核模式步骤列表(肢体固定)")] + public StepData[] ExamStepsLimb; + [Header("考核模式步骤列表(夹板固定)")] + public StepData[] ExamStepsSplint; + + public StepData[] GetStepsFor(ExperimentMode mode, FixationMethod fixation) + { + if (mode == ExperimentMode.Learn) + return fixation == FixationMethod.SplintFixation ? LearnStepsSplint : LearnStepsLimb; + else + return fixation == FixationMethod.SplintFixation ? ExamStepsSplint : ExamStepsLimb; + } + + public int StepCount(ExperimentMode mode, FixationMethod fixation) + { + var steps = GetStepsFor(mode, fixation); + return steps != null ? steps.Length : 0; + } +} diff --git a/Assets/Scripts/Data/ExperimentConfig.cs.meta b/Assets/Scripts/Data/ExperimentConfig.cs.meta new file mode 100644 index 0000000..00bb1c3 --- /dev/null +++ b/Assets/Scripts/Data/ExperimentConfig.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 24d3a8cba581943e1a2b2c167c7dd259 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Data/StepData.cs b/Assets/Scripts/Data/StepData.cs new file mode 100644 index 0000000..071b4db --- /dev/null +++ b/Assets/Scripts/Data/StepData.cs @@ -0,0 +1,63 @@ +using UnityEngine; + +/// +/// 单个实验步骤的数据配置(ScriptableObject)。 +/// 在 Unity Editor 中为每个实验创建一份 StepData 列表。 +/// +[CreateAssetMenu(fileName = "StepData", menuName = "VFS/Step Data")] +public class StepData : ScriptableObject +{ + [Header("=== 评分 ===")] + [Tooltip("本步骤满分(考核模式下使用,总分 100 分)")] + [Range(0f, 100f)] + public float ScoreWeight = 10f; + + [Tooltip("本步骤的子项数量(如伤情检查有 5 个子项,用于 SequenceClick 按比例计分)")] + public int SubStepCount = 1; + + [Header("基础信息")] + [Tooltip("步骤序号,从 0 开始")] + public int StepIndex; + + [Tooltip("步骤名称(内部标识)")] + public string StepName; + + [Header("学习模式文案")] + [TextArea(2, 4)] + public string TipText; // 顶部 Tip 提示框文案 + + [TextArea(2, 4)] + public string DialogueText; // 角色对话气泡文案 + + [Header("学习模式 - 详细操作说明(甲方补充内容)")] + [TextArea(3, 8)] + public string DetailedContent; // 伤情检查/夹板固定等详细操作须知 + + [Header("考核模式文案")] + [TextArea(2, 4)] + public string ExamQuestionText; // 考核弹窗题目文案 + + [Header("考核选项")] + public string[] ExamOptions; // 选择题选项(如 {"5cm", "10cm", "20cm"}) + public int CorrectOptionIndex; // 正确选项的索引(-1 表示非选择题) + public string ErrorFeedback; // 答错时的反馈文案 + + [Header("交互配置")] + public StepCompleteType CompleteType = StepCompleteType.ClickObject; + + [Tooltip("交互目标的 Tag(如 InjuryLeg, Shoe, Bandage)")] + public string TargetTag; + + [Tooltip("考核模式点击顺序(SequenceClick 类型时使用)")] + public string[] ClickSequenceTags; + + [Header("额外配置")] + [Tooltip("是否为夹板固定专属步骤")] + public bool IsSplintOnly; + + [Tooltip("是否需要播放画中画视频")] + public bool ShowPipVideo; + + [Tooltip("画中画视频文件名(StreamingAssets 下)")] + public string VideoFileName; +} diff --git a/Assets/Scripts/Data/StepData.cs.meta b/Assets/Scripts/Data/StepData.cs.meta new file mode 100644 index 0000000..3f2544b --- /dev/null +++ b/Assets/Scripts/Data/StepData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dac314898f2b743efa29d166b0ed2980 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Interaction.meta b/Assets/Scripts/Interaction.meta new file mode 100644 index 0000000..7a66de0 --- /dev/null +++ b/Assets/Scripts/Interaction.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: aa42089b59739481481ee9e714b88438 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Interaction/DraggableObject.cs b/Assets/Scripts/Interaction/DraggableObject.cs new file mode 100644 index 0000000..9c31510 --- /dev/null +++ b/Assets/Scripts/Interaction/DraggableObject.cs @@ -0,0 +1,54 @@ +using UnityEngine; +using UnityEngine.Events; + +/// +/// 挂载在可拖拽的 3D 物体上(如绷带、夹板)。 +/// 配合 InteractionSystem 使用。 +/// +public class DraggableObject : MonoBehaviour +{ + [Header("拖拽状态")] + public bool IsDraggable = true; + + [Header("吸附目标")] + public Transform SnapTarget; + + [Header("事件")] + public UnityEvent OnDragStartEvent; + public UnityEvent OnDragEndEvent; + public UnityEvent OnSnappedEvent; // 吸附成功 + + private Vector3 _originalPosition; + private Quaternion _originalRotation; + + private void Start() + { + _originalPosition = transform.position; + _originalRotation = transform.rotation; + } + + public void OnDragStart() + { + OnDragStartEvent?.Invoke(); + } + + public void OnDragEnd() + { + OnDragEndEvent?.Invoke(); + } + + public void OnSnapped() + { + Debug.Log($"DraggableObject: {name} 已吸附到目标"); + OnSnappedEvent?.Invoke(); + IsDraggable = false; // 吸附后不可再拖动 + } + + /// 重置到初始位置 + public void ResetPosition() + { + transform.position = _originalPosition; + transform.rotation = _originalRotation; + IsDraggable = true; + } +} diff --git a/Assets/Scripts/Interaction/DraggableObject.cs.meta b/Assets/Scripts/Interaction/DraggableObject.cs.meta new file mode 100644 index 0000000..14244ae --- /dev/null +++ b/Assets/Scripts/Interaction/DraggableObject.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cbf0e86605f7b485f8ff25c5810d30c0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Interaction/HighlightEffect.cs b/Assets/Scripts/Interaction/HighlightEffect.cs new file mode 100644 index 0000000..d85d474 --- /dev/null +++ b/Assets/Scripts/Interaction/HighlightEffect.cs @@ -0,0 +1,83 @@ +using UnityEngine; + +/// +/// 物体高亮效果:鼠标悬停时切换 Emission 或轮廓材质。 +/// 挂在可交互的 3D 物体上。 +/// +public class HighlightEffect : MonoBehaviour +{ + [Header("高亮设置")] + [SerializeField] private Color _highlightColor = Color.yellow; + [SerializeField] private float _highlightIntensity = 0.5f; + + [Header("可选 - 使用 Outline 组件")] + [SerializeField] private bool _useOutline = true; + [SerializeField] private float _outlineWidth = 0.02f; + + private Renderer[] _renderers; + private Material[] _originalMaterials; + private Material[] _highlightMaterials; + private bool _isHighlighted; + + [Header("考核高亮 - 始终显示")] + public bool AlwaysHighlighted; + + private void Start() + { + _renderers = GetComponentsInChildren(); + } + + private void OnMouseEnter() + { + if (_isHighlighted) return; + SetHighlight(true); + } + + private void OnMouseExit() + { + if (AlwaysHighlighted) return; + SetHighlight(false); + } + + public void SetHighlight(bool on) + { + _isHighlighted = on; + if (_renderers == null) return; + + foreach (var r in _renderers) + { + if (r == null) continue; + foreach (var mat in r.materials) + { + if (on) + { + mat.EnableKeyword("_EMISSION"); + mat.SetColor("_EmissionColor", _highlightColor * _highlightIntensity); + } + else + { + mat.DisableKeyword("_EMISSION"); + } + } + } + } + + /// 闪烁效果,用于提示用户点击 + public void Flash(float duration = 0.5f) + { + StopAllCoroutines(); + StartCoroutine(FlashRoutine(duration)); + } + + private System.Collections.IEnumerator FlashRoutine(float duration) + { + float half = duration / 2f; + SetHighlight(true); + yield return new WaitForSeconds(half); + SetHighlight(false); + yield return new WaitForSeconds(half); + SetHighlight(true); + yield return new WaitForSeconds(half); + SetHighlight(false); + } +} diff --git a/Assets/Scripts/Interaction/HighlightEffect.cs.meta b/Assets/Scripts/Interaction/HighlightEffect.cs.meta new file mode 100644 index 0000000..eff9b28 --- /dev/null +++ b/Assets/Scripts/Interaction/HighlightEffect.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 289a67afae9f64a8fbff818821d6ea91 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Interaction/InteractionSystem.cs b/Assets/Scripts/Interaction/InteractionSystem.cs new file mode 100644 index 0000000..ca33b36 --- /dev/null +++ b/Assets/Scripts/Interaction/InteractionSystem.cs @@ -0,0 +1,168 @@ +using UnityEngine; +using UnityEngine.Events; + +/// +/// 核心交互系统:射线检测 + 点击/拖拽处理。 +/// 挂在主相机或专用 GameObject 上。 +/// +public class InteractionSystem : MonoBehaviour +{ + [Header("射线配置")] + [SerializeField] private Camera _mainCamera; + [SerializeField] private LayerMask _interactableMask = ~0; + [SerializeField] private float _maxRayDistance = 100f; + + [Header("事件 - 由 StepManager 绑定")] + public UnityEvent OnObjectClicked; // 点击到 Tag 时触发,传 Tag + public UnityEvent OnAnywhereClicked; // 点击空白处触发 + + [Header("拖拽配置")] + [SerializeField] private float _dragPlaneDistance = 2f; + [SerializeField] private float _snapDistance = 0.3f; + + private GameObject _draggedObject; + private Vector3 _dragOffset; + private float _dragZ; + private bool _isDragging; + + // 考核模式序列点击 + private int _sequenceClickCount; + private string[] _expectedSequence; + + private void Awake() + { + if (_mainCamera == null) + _mainCamera = Camera.main; + } + + private void Update() + { + HandleClick(); + HandleDrag(); + } + + #region 点击处理 + + private void HandleClick() + { + if (!Input.GetMouseButtonDown(0)) return; + if (UnityEngine.EventSystems.EventSystem.current != null && + UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject()) + return; + + Ray ray = _mainCamera.ScreenPointToRay(Input.mousePosition); + if (Physics.Raycast(ray, out RaycastHit hit, _maxRayDistance, _interactableMask)) + { + string tag = hit.collider.tag; + if (!string.IsNullOrEmpty(tag)) + { + Debug.Log($"InteractionSystem: 点击到物体 Tag={tag}"); + OnObjectClicked?.Invoke(tag); + return; + } + } + + OnAnywhereClicked?.Invoke(); + } + + #endregion + + #region 拖拽处理 + + private void HandleDrag() + { + if (Input.GetMouseButtonDown(0)) + { + if (UnityEngine.EventSystems.EventSystem.current != null && + UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject()) + return; + + Ray ray = _mainCamera.ScreenPointToRay(Input.mousePosition); + if (Physics.Raycast(ray, out RaycastHit hit, _maxRayDistance, _interactableMask)) + { + var draggable = hit.collider.GetComponent(); + if (draggable != null && draggable.IsDraggable) + { + _draggedObject = hit.collider.gameObject; + _dragZ = _mainCamera.WorldToScreenPoint(_draggedObject.transform.position).z; + _isDragging = true; + draggable.OnDragStart(); + } + } + } + + if (Input.GetMouseButton(0) && _isDragging && _draggedObject != null) + { + Vector3 screenPos = new Vector3(Input.mousePosition.x, Input.mousePosition.y, _dragZ); + Vector3 worldPos = _mainCamera.ScreenToWorldPoint(screenPos); + _draggedObject.transform.position = worldPos; + } + + if (Input.GetMouseButtonUp(0) && _isDragging && _draggedObject != null) + { + var draggable = _draggedObject.GetComponent(); + + if (draggable != null && draggable.SnapTarget != null) + { + float dist = Vector3.Distance(_draggedObject.transform.position, draggable.SnapTarget.position); + if (dist <= _snapDistance) + { + _draggedObject.transform.position = draggable.SnapTarget.position; + _draggedObject.transform.rotation = draggable.SnapTarget.rotation; + draggable.OnSnapped(); + } + } + + draggable?.OnDragEnd(); + _draggedObject = null; + _isDragging = false; + } + } + + #endregion + + #region 考核序列点击 + + public void BeginSequenceCheck(string[] expectedTags) + { + _expectedSequence = expectedTags; + _sequenceClickCount = 0; + } + + public bool TrySequenceClick(string clickedTag, out bool isComplete) + { + isComplete = false; + if (_expectedSequence == null || _sequenceClickCount >= _expectedSequence.Length) + return false; + + if (clickedTag == _expectedSequence[_sequenceClickCount]) + { + _sequenceClickCount++; + if (_sequenceClickCount >= _expectedSequence.Length) + { + isComplete = true; + _expectedSequence = null; + return true; + } + return true; + } + return false; + } + + /// 获取当前序列已正确命中的步数(用于 proportion 计分) + public int GetSequenceHitCount() + { + return _sequenceClickCount; + } + + #endregion + + #region 公共方法 + + public void SetInteractionEnabled(bool enabled) + { + this.enabled = enabled; + } + + #endregion +} diff --git a/Assets/Scripts/Interaction/InteractionSystem.cs.meta b/Assets/Scripts/Interaction/InteractionSystem.cs.meta new file mode 100644 index 0000000..a5d4dd8 --- /dev/null +++ b/Assets/Scripts/Interaction/InteractionSystem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1de9da6001ff949cf9bedcd003c48487 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/UI.meta b/Assets/Scripts/UI.meta new file mode 100644 index 0000000..fda7246 --- /dev/null +++ b/Assets/Scripts/UI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2f65bedef5c694798a8ddf6bcaad27ee +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/UI/ExamPopup.cs b/Assets/Scripts/UI/ExamPopup.cs new file mode 100644 index 0000000..b322699 --- /dev/null +++ b/Assets/Scripts/UI/ExamPopup.cs @@ -0,0 +1,154 @@ +using UnityEngine; +using UnityEngine.UI; +using TMPro; +using System; + +/// +/// 考核弹窗:选择题 + 操作确认。 +/// 挂在弹窗 Panel 上,由 UIManager 调用 Show()。 +/// 回调返回 proportion (0~1 得分比例) 和 feedback。 +/// +public class ExamPopup : MonoBehaviour +{ + [Header("UI 组件")] + [SerializeField] private GameObject _popupRoot; + [SerializeField] private TMP_Text _questionText; + [SerializeField] private Toggle[] _optionToggles; + [SerializeField] private TMP_Text[] _optionLabels; + [SerializeField] private Button _confirmButton; + [SerializeField] private TMP_Text _feedbackText; + + [Header("操作题 UI(点击序列)")] + [SerializeField] private GameObject _operationPanel; + [SerializeField] private TMP_Text _operationHint; + + private StepData _currentStep; + private Action _onAnswerCallback; + private int _selectedIndex = -1; + + private void Awake() + { + _confirmButton?.onClick.AddListener(OnConfirm); + if (_popupRoot != null) _popupRoot.SetActive(false); + } + + public void Show(StepData step, Action onAnswer) + { + _currentStep = step; + _onAnswerCallback = onAnswer; + _selectedIndex = -1; + if (_feedbackText != null) _feedbackText.text = ""; + if (_popupRoot != null) _popupRoot.SetActive(true); + + _questionText?.SetText(step.ExamQuestionText); + + switch (step.CompleteType) + { + case StepCompleteType.MultipleChoice: + SetupMultipleChoice(step); + break; + case StepCompleteType.ClickObject: + SetupClickObject(step); + break; + case StepCompleteType.SequenceClick: + SetupSequenceClick(step); + break; + default: + SetupDefault(step); + break; + } + } + + #region 题型配置 + + private void SetupMultipleChoice(StepData step) + { + if (_operationPanel != null) _operationPanel.SetActive(false); + + int optionCount = step.ExamOptions?.Length ?? 0; + for (int i = 0; i < _optionToggles.Length; i++) + { + bool active = i < optionCount; + _optionToggles[i].gameObject.SetActive(active); + _optionToggles[i].isOn = false; + _optionToggles[i].onValueChanged.RemoveAllListeners(); + int idx = i; + _optionToggles[i].onValueChanged.AddListener((val) => { if (val) _selectedIndex = idx; }); + if (active) _optionLabels[i]?.SetText(step.ExamOptions[i]); + } + + _confirmButton?.gameObject.SetActive(true); + } + + private void SetupClickObject(StepData step) + { + if (_operationPanel != null) _operationPanel.SetActive(true); + if (_optionToggles != null) + foreach (var t in _optionToggles) t.gameObject.SetActive(false); + _confirmButton?.gameObject.SetActive(true); + _operationHint?.SetText($"请点击场景中的 {step.TargetTag} 物体"); + } + + private void SetupSequenceClick(StepData step) + { + if (_operationPanel != null) _operationPanel.SetActive(true); + if (_optionToggles != null) + foreach (var t in _optionToggles) t.gameObject.SetActive(false); + _confirmButton?.gameObject.SetActive(true); + _operationHint?.SetText("请按正确顺序点击物体,完成后按确定"); + } + + private void SetupDefault(StepData step) + { + if (_operationPanel != null) _operationPanel.SetActive(false); + if (_optionToggles != null) + foreach (var t in _optionToggles) t.gameObject.SetActive(false); + _confirmButton?.gameObject.SetActive(true); + } + + #endregion + + #region 确认与判定 + + private void OnConfirm() + { + if (_currentStep == null) return; + + float proportion = 1f; + string feedback = ""; + + switch (_currentStep.CompleteType) + { + case StepCompleteType.MultipleChoice: + bool correct = _selectedIndex == _currentStep.CorrectOptionIndex; + proportion = correct ? 1f : 0f; + feedback = correct ? "" : _currentStep.ErrorFeedback; + if (!correct && _feedbackText != null) + _feedbackText.text = feedback; + break; + default: + proportion = 1f; + break; + } + + if (proportion <= 0f && !string.IsNullOrEmpty(feedback)) + { + _onAnswerCallback?.Invoke(0f, feedback); + Hide(); + } + else + { + _onAnswerCallback?.Invoke(proportion, feedback); + Hide(); + } + } + + public void Hide() + { + if (_popupRoot != null) _popupRoot.SetActive(false); + _currentStep = null; + _onAnswerCallback = null; + } + + #endregion +} diff --git a/Assets/Scripts/UI/ExamPopup.cs.meta b/Assets/Scripts/UI/ExamPopup.cs.meta new file mode 100644 index 0000000..fd75e95 --- /dev/null +++ b/Assets/Scripts/UI/ExamPopup.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1b7f4e3b0a85d4c75860bf9060f8c3a8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/UI/HUDController.cs b/Assets/Scripts/UI/HUDController.cs new file mode 100644 index 0000000..f1d1df7 --- /dev/null +++ b/Assets/Scripts/UI/HUDController.cs @@ -0,0 +1,6 @@ +using UnityEngine; + +/// +/// Legacy HUD controller — replaced by UIManager. Kept for backward compatibility. +/// +public class HUDController : MonoBehaviour { } diff --git a/Assets/Scripts/UI/HUDController.cs.meta b/Assets/Scripts/UI/HUDController.cs.meta new file mode 100644 index 0000000..15e84c4 --- /dev/null +++ b/Assets/Scripts/UI/HUDController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ded61052e4f7c449ca21983fdaa9060b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/UI/MainMenuUI.cs b/Assets/Scripts/UI/MainMenuUI.cs new file mode 100644 index 0000000..de35821 --- /dev/null +++ b/Assets/Scripts/UI/MainMenuUI.cs @@ -0,0 +1,38 @@ +using UnityEngine; +using UnityEngine.UI; +using UnityEngine.SceneManagement; + +/// +/// Main menu UI — assign all fields in Inspector. +/// +public class MainMenuUI : MonoBehaviour +{ + [Header("Text")] + public Text titleText; + public Text versionText; + + [Header("Buttons")] + public Button cprButton; + public Button fractureButton; + public Button sprainButton; + public Button bleedingButton; + public Button transportButton; + + private void Start() + { + if (titleText != null) titleText.text = "运动伤害现场急救处理虚拟仿真实验"; + if (versionText != null) versionText.text = $"v{Application.version}"; + + if (cprButton != null) cprButton.onClick.AddListener(() => OnSelect("CPR")); + if (fractureButton != null) fractureButton.onClick.AddListener(() => OnSelect("FractureFixation")); + if (sprainButton != null) sprainButton.onClick.AddListener(() => OnSelect("SprainBandage")); + if (bleedingButton != null) bleedingButton.onClick.AddListener(() => OnSelect("BleedingBandage")); + if (transportButton != null) transportButton.onClick.AddListener(() => OnSelect("CasualtyTransport")); + } + + private void OnSelect(string experimentId) + { + PlayerPrefs.SetString("SelectedExperiment", experimentId); + SceneManager.LoadScene("ModeSelection"); + } +} diff --git a/Assets/Scripts/UI/MainMenuUI.cs.meta b/Assets/Scripts/UI/MainMenuUI.cs.meta new file mode 100644 index 0000000..c3ad73a --- /dev/null +++ b/Assets/Scripts/UI/MainMenuUI.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7fca7ea321dc34ab19b4bea56e90e8a2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/UI/ModeSelectionUI.cs b/Assets/Scripts/UI/ModeSelectionUI.cs new file mode 100644 index 0000000..5e7f793 --- /dev/null +++ b/Assets/Scripts/UI/ModeSelectionUI.cs @@ -0,0 +1,72 @@ +using UnityEngine; +using UnityEngine.UI; +using UnityEngine.SceneManagement; + +public class ModeSelectionUI : MonoBehaviour +{ + [Header("Tip")] + public Text tipText; + + [Header("Fixation Mode")] + public Button limbFixationButton; + public Button splintFixationButton; + public GameObject limbFixationCheck; + public GameObject splintFixationCheck; + + [Header("Run Mode")] + public Button learnModeButton; + public Button examModeButton; + public GameObject learnModeCheck; + public GameObject examModeCheck; + + [Header("Actions")] + public Button startButton; + public Button backButton; + + private FixationMethod selectedFixation = FixationMethod.LimbFixation; + private ExperimentMode selectedRunMode = ExperimentMode.Learn; + + private void Start() + { + tipText.text = "Tip:请选择实验模式"; + + limbFixationButton.onClick.AddListener(() => SelectFixation(FixationMethod.LimbFixation)); + splintFixationButton.onClick.AddListener(() => SelectFixation(FixationMethod.SplintFixation)); + learnModeButton.onClick.AddListener(() => SelectRunMode(ExperimentMode.Learn)); + examModeButton.onClick.AddListener(() => SelectRunMode(ExperimentMode.Exam)); + startButton.onClick.AddListener(OnStart); + backButton.onClick.AddListener(() => SceneManager.LoadScene("main")); + + UpdateSelectionVisuals(); + } + + private void SelectFixation(FixationMethod mode) + { + selectedFixation = mode; + UpdateSelectionVisuals(); + } + + private void SelectRunMode(ExperimentMode mode) + { + selectedRunMode = mode; + UpdateSelectionVisuals(); + } + + private void UpdateSelectionVisuals() + { + limbFixationCheck.SetActive(selectedFixation == FixationMethod.LimbFixation); + splintFixationCheck.SetActive(selectedFixation == FixationMethod.SplintFixation); + learnModeCheck.SetActive(selectedRunMode == ExperimentMode.Learn); + examModeCheck.SetActive(selectedRunMode == ExperimentMode.Exam); + } + + private void OnStart() + { + if (GameManager.Instance != null) + { + GameManager.Instance.CurrentFixationMethod = selectedFixation; + GameManager.Instance.CurrentMode = selectedRunMode; + } + SceneManager.LoadScene("Experiment"); + } +} diff --git a/Assets/Scripts/UI/ModeSelectionUI.cs.meta b/Assets/Scripts/UI/ModeSelectionUI.cs.meta new file mode 100644 index 0000000..d73b12f --- /dev/null +++ b/Assets/Scripts/UI/ModeSelectionUI.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2106746edd5ca43288aff94f664b16ae +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/UI/PopupSystem.cs b/Assets/Scripts/UI/PopupSystem.cs new file mode 100644 index 0000000..f96415e --- /dev/null +++ b/Assets/Scripts/UI/PopupSystem.cs @@ -0,0 +1,3 @@ +using UnityEngine; +/// Legacy — replaced by ExamPopup + ScoreDisplay. +public class PopupSystem : MonoBehaviour { } diff --git a/Assets/Scripts/UI/PopupSystem.cs.meta b/Assets/Scripts/UI/PopupSystem.cs.meta new file mode 100644 index 0000000..c0ef468 --- /dev/null +++ b/Assets/Scripts/UI/PopupSystem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c0eab9dd709f74ddf9f6728ef6bb4edf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/UI/ScoreDisplay.cs b/Assets/Scripts/UI/ScoreDisplay.cs new file mode 100644 index 0000000..97b75c8 --- /dev/null +++ b/Assets/Scripts/UI/ScoreDisplay.cs @@ -0,0 +1,109 @@ +using UnityEngine; +using UnityEngine.UI; +using TMPro; + +/// +/// 实验结束后的结果展示面板。 +/// 考核模式:显示加权成绩 + 错题分析列表(含每步得分/满分)。 +/// 学习模式:显示注意事项。 +/// +public class ScoreDisplay : MonoBehaviour +{ + [Header("面板根节点")] + [SerializeField] private GameObject _panelRoot; + + [Header("考核模式")] + [SerializeField] private GameObject _examResultRoot; + [SerializeField] private TMP_Text _scoreTitle; + [SerializeField] private TMP_Text _scoreValue; + [SerializeField] private Transform _analysisListParent; + [SerializeField] private GameObject _analysisItemPrefab; + + [Header("学习模式 - 注意事项")] + [SerializeField] private GameObject _notesRoot; + [SerializeField] private TMP_Text _notesText; + + [Header("底部按钮")] + [SerializeField] private Button _confirmButton; + + private static readonly string NotesContent = + "1. 下肢损伤选择仰卧位;\n" + + "2. 骨折固定前后要脱掉鞋袜并检查下肢末梢循环、运动、感觉;\n" + + "3. 穿带子时应从健侧穿向伤侧;\n" + + "4. 骨折固定时先固定伤口的近心端,后固定远心端,再由上而下进行固定;\n" + + "5. 固定后尽可能抬高下肢。"; + + private void Awake() + { + _confirmButton?.onClick.AddListener(OnConfirm); + if (_panelRoot != null) _panelRoot.SetActive(false); + } + + /// 考核模式 - 显示加权成绩 + public void ShowExamScore() + { + if (_panelRoot != null) _panelRoot.SetActive(true); + if (_examResultRoot != null) _examResultRoot.SetActive(true); + if (_notesRoot != null) _notesRoot.SetActive(false); + + var gm = GameManager.Instance; + if (gm == null) return; + + int score = gm.GetExamScoreRounded(); + float pct = gm.GetExamPercentage(); + if (_scoreTitle != null) _scoreTitle.text = "成绩显示栏"; + if (_scoreValue != null) _scoreValue.text = $"考试成绩:{score} 分({pct:F0}%)"; + + BuildAnalysisList(); + } + + /// 学习模式 - 显示注意事项 + public void ShowNotesOnly() + { + if (_panelRoot != null) _panelRoot.SetActive(true); + if (_examResultRoot != null) _examResultRoot.SetActive(false); + if (_notesRoot != null) _notesRoot.SetActive(true); + + if (_notesText != null) _notesText.text = NotesContent; + } + + private void BuildAnalysisList() + { + if (_analysisListParent == null || _analysisItemPrefab == null) return; + + foreach (Transform child in _analysisListParent) + Destroy(child.gameObject); + + var gm = GameManager.Instance; + if (gm == null || gm.StepScores == null) return; + + for (int i = 0; i < gm.StepScores.Length; i++) + { + var item = Instantiate(_analysisItemPrefab, _analysisListParent); + var text = item.GetComponentInChildren(); + if (text == null) continue; + + float earned = gm.StepScores[i]; + float max = gm.StepMaxScores[i]; + bool fullScore = Mathf.Approximately(earned, max); + bool zeroScore = earned <= 0f; + + string status; + if (fullScore) status = "正确"; + else if (zeroScore) status = "错误"; + else status = $"部分正确"; + + string scorePart = $"({earned:F0}/{max:F0} 分)"; + string fbPart = (!fullScore && !string.IsNullOrEmpty(gm.StepFeedback[i])) + ? $":{gm.StepFeedback[i]}" : ""; + + text.text = $"第{i + 1}题:{status} {scorePart}{fbPart}"; + } + } + + private void OnConfirm() + { + if (_panelRoot != null) _panelRoot.SetActive(false); + UnityEngine.SceneManagement.SceneManager.LoadScene("MainMenu"); + } +} diff --git a/Assets/Scripts/UI/ScoreDisplay.cs.meta b/Assets/Scripts/UI/ScoreDisplay.cs.meta new file mode 100644 index 0000000..34ce0b8 --- /dev/null +++ b/Assets/Scripts/UI/ScoreDisplay.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8315bbe42105640af89ceda53b039e65 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/UI/UIManager.cs b/Assets/Scripts/UI/UIManager.cs new file mode 100644 index 0000000..66a7790 --- /dev/null +++ b/Assets/Scripts/UI/UIManager.cs @@ -0,0 +1,221 @@ +using UnityEngine; +using UnityEngine.UI; +using TMPro; + +/// +/// UI 中央调度器:引用所有子面板,绑定 StepManager 事件。 +/// 挂在 Canvas GameObject 上。 +/// +public class UIManager : MonoBehaviour +{ + [Header("管理器引用")] + [SerializeField] private StepManager _stepManager; + [SerializeField] private InteractionSystem _interactionSystem; + + [Header("=== 顶部提示栏 ===")] + [SerializeField] private GameObject _tipPanel; + [SerializeField] private TMP_Text _tipText; + + [Header("=== 详细操作说明(甲方补充 - 学习模式) ===")] + [SerializeField] private GameObject _detailPanel; + [SerializeField] private TMP_Text _detailText; + + [Header("=== 对话气泡 ===")] + [SerializeField] private GameObject _dialogueBubble; + [SerializeField] private TMP_Text _dialogueText; + + [Header("=== 画中画视频 ===")] + [SerializeField] private VideoController _videoController; + + [Header("=== 右侧功能按钮 ===")] + [SerializeField] private Button _btnFullScreen; + [SerializeField] private Button _btnPrevious; + [SerializeField] private Button _btnNext; + [SerializeField] private Button _btnSwitchMode; + [SerializeField] private Button _btnReturn; + [SerializeField] private TMP_Text _btnSwitchModeLabel; + + [Header("=== 底部进度条 ===")] + [SerializeField] private Slider _progressBar; + [SerializeField] private TMP_Text _progressText; + + [Header("=== 弹窗 ===")] + [SerializeField] private ExamPopup _examPopup; + [SerializeField] private ScoreDisplay _scoreDisplay; + + [Header("=== 底部主菜单图标 ===")] + [SerializeField] private Button _btnCPR; + [SerializeField] private Button _btnFracture; + [SerializeField] private Button _btnSprain; + [SerializeField] private Button _btnBleeding; + [SerializeField] private Button _btnTransport; + + [Header("=== 固定方式选择(仅骨折固定) ===")] + [SerializeField] private GameObject _fixationPanel; + [SerializeField] private Button _btnLimbFixation; + [SerializeField] private Button _btnSplintFixation; + + private void Start() + { + BindEvents(); + BindButtons(); + } + + #region 事件绑定 + + private void BindEvents() + { + if (_stepManager == null) return; + + _stepManager.OnStepChanged.AddListener(OnStepChanged); + _stepManager.OnTipChanged.AddListener(UpdateTip); + _stepManager.OnDialogueChanged.AddListener(UpdateDialogue); + _stepManager.OnDetailedContent.AddListener(UpdateDetailContent); + _stepManager.OnExamPopup.AddListener(ShowExamPopup); + _stepManager.OnExperimentComplete.AddListener(OnExperimentComplete); + _stepManager.OnVideoToggle.AddListener(ToggleVideo); + } + + private void BindButtons() + { + _btnFullScreen?.onClick.AddListener(ToggleFullScreen); + _btnPrevious?.onClick.AddListener(OnPreviousClicked); + _btnNext?.onClick.AddListener(OnNextClicked); + _btnSwitchMode?.onClick.AddListener(OnSwitchModeClicked); + _btnReturn?.onClick.AddListener(OnReturnClicked); + + _btnLimbFixation?.onClick.AddListener(() => _stepManager?.SwitchFixation(FixationMethod.LimbFixation)); + _btnSplintFixation?.onClick.AddListener(() => _stepManager?.SwitchFixation(FixationMethod.SplintFixation)); + } + + #endregion + + #region UI 更新回调 + + private void OnStepChanged(int index) + { + UpdateProgressBar(); + UpdateNavigationButtons(); + } + + private void UpdateTip(string text) + { + if (_tipPanel != null) _tipPanel.SetActive(!string.IsNullOrEmpty(text)); + if (_tipText != null) _tipText.text = text; + } + + private void UpdateDialogue(string text) + { + if (_dialogueBubble != null) _dialogueBubble.SetActive(!string.IsNullOrEmpty(text)); + if (_dialogueText != null) _dialogueText.text = text; + } + + private void UpdateDetailContent(string text) + { + if (_detailPanel != null) _detailPanel.SetActive(!string.IsNullOrEmpty(text)); + if (_detailText != null) _detailText.text = text; + } + + private void ToggleVideo(string fileName, bool active) + { + if (_videoController == null) return; + if (active && !string.IsNullOrEmpty(fileName)) + _videoController.PlayVideo(fileName); + else + _videoController.StopVideo(); + } + + private void UpdateProgressBar() + { + if (_stepManager == null) return; + int cur = _stepManager.CurrentStepIndex + 1; + int total = _stepManager.TotalSteps; + if (_progressBar != null) _progressBar.value = (float)cur / total; + if (_progressText != null) _progressText.text = $"{cur}/{total}"; + } + + private void UpdateNavigationButtons() + { + if (_stepManager == null) return; + _btnPrevious.interactable = _stepManager.CurrentStepIndex > 0; + bool isLast = _stepManager.CurrentStepIndex >= _stepManager.TotalSteps - 1; + if (_btnNext != null) + { + var label = _btnNext.GetComponentInChildren(); + if (label != null) label.text = isLast ? "完成" : "下一步"; + } + } + + #endregion + + #region 考核弹窗 + + private void ShowExamPopup(StepData step) + { + if (_examPopup == null) return; + _examPopup.Show(step, OnExamAnswer); + } + + private void OnExamAnswer(float proportion, string feedback) + { + _stepManager?.OnStepInteractionComplete(proportion, feedback); + _stepManager?.NextStep(); + } + + #endregion + + #region 实验完成 + + private void OnExperimentComplete() + { + var gm = GameManager.Instance; + if (gm == null) return; + if (gm.CurrentMode == ExperimentMode.Exam) + { + _scoreDisplay?.ShowExamScore(); + } + else + { + _scoreDisplay?.ShowNotesOnly(); + } + } + + #endregion + + #region 按钮回调 + + private void ToggleFullScreen() + { + Screen.fullScreen = !Screen.fullScreen; + } + + private void OnPreviousClicked() + { + _stepManager?.PreviousStep(); + } + + private void OnNextClicked() + { + if (_stepManager.Mode == ExperimentMode.Exam) + { + var step = _stepManager.GetCurrentStep(); + if (step != null && step.CompleteType != StepCompleteType.MultipleChoice) + _stepManager.OnStepInteractionComplete(1f); + } + _stepManager.NextStep(); + } + + private void OnSwitchModeClicked() + { + var newMode = _stepManager.Mode == ExperimentMode.Learn + ? ExperimentMode.Exam : ExperimentMode.Learn; + _stepManager.SwitchMode(newMode); + } + + private void OnReturnClicked() + { + UnityEngine.SceneManagement.SceneManager.LoadScene("MainMenu"); + } + + #endregion +} diff --git a/Assets/Scripts/UI/UIManager.cs.meta b/Assets/Scripts/UI/UIManager.cs.meta new file mode 100644 index 0000000..97bb516 --- /dev/null +++ b/Assets/Scripts/UI/UIManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 11edd93e0776546a3b8545535d7dd5e1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/UI/VideoController.cs b/Assets/Scripts/UI/VideoController.cs new file mode 100644 index 0000000..7e0530d --- /dev/null +++ b/Assets/Scripts/UI/VideoController.cs @@ -0,0 +1,83 @@ +using UnityEngine; +using UnityEngine.UI; +using UnityEngine.Video; + +/// +/// 画中画视频控制器:用 VideoPlayer 渲染到 RenderTexture,再赋给 RawImage。 +/// 挂在包含 RawImage 和 VideoPlayer 的 GameObject 上。 +/// +[RequireComponent(typeof(RawImage))] +public class VideoController : MonoBehaviour +{ + [SerializeField] private VideoPlayer _videoPlayer; + [SerializeField] private RawImage _rawImage; + + private RenderTexture _renderTexture; + private bool _isPlaying; + + private void Awake() + { + if (_rawImage == null) _rawImage = GetComponent(); + if (_videoPlayer == null) _videoPlayer = GetComponentInChildren(); + + if (_videoPlayer != null) + { + _videoPlayer.loopPointReached += OnVideoEnd; + } + } + + /// 播放指定视频文件(StreamingAssets/Videos/ 下) + public void PlayVideo(string fileName) + { + if (_videoPlayer == null) return; + + string path = System.IO.Path.Combine(Application.streamingAssetsPath, "Videos", fileName); + _videoPlayer.url = path; + + // 创建 RenderTexture + if (_renderTexture == null) + { + int w = _videoPlayer.targetTexture != null ? _videoPlayer.targetTexture.width : 640; + int h = _videoPlayer.targetTexture != null ? _videoPlayer.targetTexture.height : 360; + _renderTexture = new RenderTexture(w, h, 0); + _videoPlayer.targetTexture = _renderTexture; + if (_rawImage != null) _rawImage.texture = _renderTexture; + } + + _videoPlayer.Play(); + _isPlaying = true; + gameObject.SetActive(true); + } + + public void StopVideo() + { + if (_videoPlayer != null) _videoPlayer.Stop(); + _isPlaying = false; + gameObject.SetActive(false); + } + + public void PauseVideo() + { + if (_videoPlayer != null) _videoPlayer.Pause(); + } + + public void ResumeVideo() + { + if (_videoPlayer != null) _videoPlayer.Play(); + } + + private void OnVideoEnd(VideoPlayer vp) + { + // 真人演示视频播完自动循环 + vp.Play(); + } + + private void OnDestroy() + { + if (_renderTexture != null) + { + _renderTexture.Release(); + Destroy(_renderTexture); + } + } +} diff --git a/Assets/Scripts/UI/VideoController.cs.meta b/Assets/Scripts/UI/VideoController.cs.meta new file mode 100644 index 0000000..416d1fa --- /dev/null +++ b/Assets/Scripts/UI/VideoController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3a31c697647c74734811ac323080d78a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/UI/VideoPlayerController.cs b/Assets/Scripts/UI/VideoPlayerController.cs new file mode 100644 index 0000000..05a22de --- /dev/null +++ b/Assets/Scripts/UI/VideoPlayerController.cs @@ -0,0 +1,3 @@ +using UnityEngine; +/// Legacy — replaced by VideoController. +public class VideoPlayerController : MonoBehaviour { } diff --git a/Assets/Scripts/UI/VideoPlayerController.cs.meta b/Assets/Scripts/UI/VideoPlayerController.cs.meta new file mode 100644 index 0000000..3a73e2b --- /dev/null +++ b/Assets/Scripts/UI/VideoPlayerController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4c7b16cd23ebf4299be89ef8311ed579 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Settings/URP-Balanced.asset b/Assets/Settings/URP-Balanced.asset index 83ee844..65bbfc8 100644 --- a/Assets/Settings/URP-Balanced.asset +++ b/Assets/Settings/URP-Balanced.asset @@ -12,8 +12,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: bf2edee5c58d82540a51f03df9d42094, type: 3} m_Name: URP-Balanced m_EditorClassIdentifier: - k_AssetVersion: 9 - k_AssetPreviousVersion: 9 + k_AssetVersion: 11 + k_AssetPreviousVersion: 11 m_RendererType: 1 m_RendererData: {fileID: 0} m_RendererDataList: @@ -23,10 +23,16 @@ MonoBehaviour: m_RequireOpaqueTexture: 0 m_OpaqueDownsampling: 1 m_SupportsTerrainHoles: 1 - m_StoreActionsOptimization: 0 m_SupportsHDR: 1 + m_HDRColorBufferPrecision: 0 m_MSAA: 1 m_RenderScale: 1 + m_UpscalingFilter: 0 + m_FsrOverrideSharpness: 0 + m_FsrSharpness: 0.92 + m_EnableLODCrossFade: 1 + m_LODCrossFadeDitheringType: 1 + m_ShEvalMode: 0 m_MainLightRenderingMode: 1 m_MainLightShadowsSupported: 1 m_MainLightShadowmapResolution: 1024 @@ -47,23 +53,62 @@ MonoBehaviour: m_CascadeBorder: 0.1 m_ShadowDepthBias: 1 m_ShadowNormalBias: 1 + m_AnyShadowsSupported: 1 m_SoftShadowsSupported: 1 + m_ConservativeEnclosingSphere: 0 + m_NumIterationsEnclosingSphere: 64 + m_SoftShadowQuality: 2 m_AdditionalLightsCookieResolution: 512 m_AdditionalLightsCookieFormat: 1 m_UseSRPBatcher: 1 m_SupportsDynamicBatching: 0 m_MixedLightingSupported: 1 + m_SupportsLightCookies: 1 m_SupportsLightLayers: 0 m_DebugLevel: 0 + m_StoreActionsOptimization: 0 + m_EnableRenderGraph: 0 m_UseAdaptivePerformance: 1 m_ColorGradingMode: 0 m_ColorGradingLutSize: 32 m_UseFastSRGBLinearConversion: 0 + m_SupportDataDrivenLensFlare: 1 m_ShadowType: 1 m_LocalShadowsSupported: 0 m_LocalShadowsAtlasResolution: 256 m_MaxPixelLights: 0 m_ShadowAtlasResolution: 256 - m_ShaderVariantLogLevel: 0 m_VolumeFrameworkUpdateMode: 0 + m_Textures: + blueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3} + bayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3} + m_PrefilteringModeMainLightShadows: 1 + m_PrefilteringModeAdditionalLight: 4 + m_PrefilteringModeAdditionalLightShadows: 1 + m_PrefilterXRKeywords: 0 + m_PrefilteringModeForwardPlus: 1 + m_PrefilteringModeDeferredRendering: 1 + m_PrefilteringModeScreenSpaceOcclusion: 1 + m_PrefilterDebugKeywords: 0 + m_PrefilterWriteRenderingLayers: 0 + m_PrefilterHDROutput: 0 + m_PrefilterSSAODepthNormals: 0 + m_PrefilterSSAOSourceDepthLow: 0 + m_PrefilterSSAOSourceDepthMedium: 0 + m_PrefilterSSAOSourceDepthHigh: 0 + m_PrefilterSSAOInterleaved: 0 + m_PrefilterSSAOBlueNoise: 0 + m_PrefilterSSAOSampleCountLow: 0 + m_PrefilterSSAOSampleCountMedium: 0 + m_PrefilterSSAOSampleCountHigh: 0 + m_PrefilterDBufferMRT1: 0 + m_PrefilterDBufferMRT2: 0 + m_PrefilterDBufferMRT3: 0 + m_PrefilterSoftShadowsQualityLow: 0 + m_PrefilterSoftShadowsQualityMedium: 0 + m_PrefilterSoftShadowsQualityHigh: 0 + m_PrefilterSoftShadows: 0 + m_PrefilterScreenCoord: 0 + m_PrefilterNativeRenderPass: 0 + m_ShaderVariantLogLevel: 0 m_ShadowCascades: 0 diff --git a/Assets/Settings/URP-HighFidelity.asset b/Assets/Settings/URP-HighFidelity.asset index 96103c6..d526597 100644 --- a/Assets/Settings/URP-HighFidelity.asset +++ b/Assets/Settings/URP-HighFidelity.asset @@ -13,7 +13,7 @@ MonoBehaviour: m_Name: URP-HighFidelity m_EditorClassIdentifier: k_AssetVersion: 11 - k_AssetPreviousVersion: 10 + k_AssetPreviousVersion: 11 m_RendererType: 1 m_RendererData: {fileID: 0} m_RendererDataList: @@ -32,6 +32,7 @@ MonoBehaviour: m_FsrSharpness: 0.92 m_EnableLODCrossFade: 1 m_LODCrossFadeDitheringType: 1 + m_ShEvalMode: 0 m_MainLightRenderingMode: 1 m_MainLightShadowsSupported: 1 m_MainLightShadowmapResolution: 4096 @@ -52,9 +53,11 @@ MonoBehaviour: m_CascadeBorder: 0.1 m_ShadowDepthBias: 1 m_ShadowNormalBias: 1 + m_AnyShadowsSupported: 1 m_SoftShadowsSupported: 1 m_ConservativeEnclosingSphere: 0 m_NumIterationsEnclosingSphere: 64 + m_SoftShadowQuality: 2 m_AdditionalLightsCookieResolution: 4096 m_AdditionalLightsCookieFormat: 4 m_UseSRPBatcher: 1 @@ -69,6 +72,7 @@ MonoBehaviour: m_ColorGradingMode: 0 m_ColorGradingLutSize: 32 m_UseFastSRGBLinearConversion: 0 + m_SupportDataDrivenLensFlare: 1 m_ShadowType: 1 m_LocalShadowsSupported: 0 m_LocalShadowsAtlasResolution: 256 @@ -78,5 +82,33 @@ MonoBehaviour: m_Textures: blueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3} bayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3} + m_PrefilteringModeMainLightShadows: 1 + m_PrefilteringModeAdditionalLight: 4 + m_PrefilteringModeAdditionalLightShadows: 1 + m_PrefilterXRKeywords: 0 + m_PrefilteringModeForwardPlus: 1 + m_PrefilteringModeDeferredRendering: 1 + m_PrefilteringModeScreenSpaceOcclusion: 1 + m_PrefilterDebugKeywords: 0 + m_PrefilterWriteRenderingLayers: 0 + m_PrefilterHDROutput: 0 + m_PrefilterSSAODepthNormals: 0 + m_PrefilterSSAOSourceDepthLow: 0 + m_PrefilterSSAOSourceDepthMedium: 0 + m_PrefilterSSAOSourceDepthHigh: 0 + m_PrefilterSSAOInterleaved: 0 + m_PrefilterSSAOBlueNoise: 0 + m_PrefilterSSAOSampleCountLow: 0 + m_PrefilterSSAOSampleCountMedium: 0 + m_PrefilterSSAOSampleCountHigh: 0 + m_PrefilterDBufferMRT1: 0 + m_PrefilterDBufferMRT2: 0 + m_PrefilterDBufferMRT3: 0 + m_PrefilterSoftShadowsQualityLow: 0 + m_PrefilterSoftShadowsQualityMedium: 0 + m_PrefilterSoftShadowsQualityHigh: 0 + m_PrefilterSoftShadows: 0 + m_PrefilterScreenCoord: 0 + m_PrefilterNativeRenderPass: 0 m_ShaderVariantLogLevel: 0 m_ShadowCascades: 1 diff --git a/Assets/Settings/URP-Performant.asset b/Assets/Settings/URP-Performant.asset index 5e53341..8650b69 100644 --- a/Assets/Settings/URP-Performant.asset +++ b/Assets/Settings/URP-Performant.asset @@ -12,8 +12,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: bf2edee5c58d82540a51f03df9d42094, type: 3} m_Name: URP-Performant m_EditorClassIdentifier: - k_AssetVersion: 9 - k_AssetPreviousVersion: 9 + k_AssetVersion: 11 + k_AssetPreviousVersion: 11 m_RendererType: 1 m_RendererData: {fileID: 0} m_RendererDataList: @@ -23,10 +23,16 @@ MonoBehaviour: m_RequireOpaqueTexture: 0 m_OpaqueDownsampling: 1 m_SupportsTerrainHoles: 1 - m_StoreActionsOptimization: 0 m_SupportsHDR: 0 + m_HDRColorBufferPrecision: 0 m_MSAA: 1 m_RenderScale: 1 + m_UpscalingFilter: 0 + m_FsrOverrideSharpness: 0 + m_FsrSharpness: 0.92 + m_EnableLODCrossFade: 1 + m_LODCrossFadeDitheringType: 1 + m_ShEvalMode: 0 m_MainLightRenderingMode: 1 m_MainLightShadowsSupported: 0 m_MainLightShadowmapResolution: 1024 @@ -47,23 +53,62 @@ MonoBehaviour: m_CascadeBorder: 0.1 m_ShadowDepthBias: 1 m_ShadowNormalBias: 1 + m_AnyShadowsSupported: 1 m_SoftShadowsSupported: 0 + m_ConservativeEnclosingSphere: 0 + m_NumIterationsEnclosingSphere: 64 + m_SoftShadowQuality: 2 m_AdditionalLightsCookieResolution: 2048 m_AdditionalLightsCookieFormat: 3 m_UseSRPBatcher: 1 m_SupportsDynamicBatching: 0 m_MixedLightingSupported: 1 + m_SupportsLightCookies: 1 m_SupportsLightLayers: 0 m_DebugLevel: 0 + m_StoreActionsOptimization: 0 + m_EnableRenderGraph: 0 m_UseAdaptivePerformance: 1 m_ColorGradingMode: 0 m_ColorGradingLutSize: 16 m_UseFastSRGBLinearConversion: 0 + m_SupportDataDrivenLensFlare: 1 m_ShadowType: 1 m_LocalShadowsSupported: 0 m_LocalShadowsAtlasResolution: 256 m_MaxPixelLights: 0 m_ShadowAtlasResolution: 256 - m_ShaderVariantLogLevel: 0 m_VolumeFrameworkUpdateMode: 0 + m_Textures: + blueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3} + bayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3} + m_PrefilteringModeMainLightShadows: 1 + m_PrefilteringModeAdditionalLight: 4 + m_PrefilteringModeAdditionalLightShadows: 1 + m_PrefilterXRKeywords: 0 + m_PrefilteringModeForwardPlus: 1 + m_PrefilteringModeDeferredRendering: 1 + m_PrefilteringModeScreenSpaceOcclusion: 1 + m_PrefilterDebugKeywords: 0 + m_PrefilterWriteRenderingLayers: 0 + m_PrefilterHDROutput: 0 + m_PrefilterSSAODepthNormals: 0 + m_PrefilterSSAOSourceDepthLow: 0 + m_PrefilterSSAOSourceDepthMedium: 0 + m_PrefilterSSAOSourceDepthHigh: 0 + m_PrefilterSSAOInterleaved: 0 + m_PrefilterSSAOBlueNoise: 0 + m_PrefilterSSAOSampleCountLow: 0 + m_PrefilterSSAOSampleCountMedium: 0 + m_PrefilterSSAOSampleCountHigh: 0 + m_PrefilterDBufferMRT1: 0 + m_PrefilterDBufferMRT2: 0 + m_PrefilterDBufferMRT3: 0 + m_PrefilterSoftShadowsQualityLow: 0 + m_PrefilterSoftShadowsQualityMedium: 0 + m_PrefilterSoftShadowsQualityHigh: 0 + m_PrefilterSoftShadows: 0 + m_PrefilterScreenCoord: 0 + m_PrefilterNativeRenderPass: 0 + m_ShaderVariantLogLevel: 0 m_ShadowCascades: 0 diff --git a/Assets/Textures.meta b/Assets/Textures.meta new file mode 100644 index 0000000..9e1195a --- /dev/null +++ b/Assets/Textures.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b9a81bc6c945d4299ba496b54f270aee +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textures/UI.meta b/Assets/Textures/UI.meta new file mode 100644 index 0000000..3220000 --- /dev/null +++ b/Assets/Textures/UI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 645c38bb4de3549b4857a287d83f3dc6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TutorialInfo.meta b/Assets/TutorialInfo.meta new file mode 100644 index 0000000..a700bca --- /dev/null +++ b/Assets/TutorialInfo.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ba062aa6c92b140379dbc06b43dd3b9b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TutorialInfo/Icons.meta b/Assets/TutorialInfo/Icons.meta new file mode 100644 index 0000000..1d19fb9 --- /dev/null +++ b/Assets/TutorialInfo/Icons.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 8a0c9218a650547d98138cd835033977 +folderAsset: yes +timeCreated: 1484670163 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TutorialInfo/Icons/URP.png b/Assets/TutorialInfo/Icons/URP.png new file mode 100644 index 0000000000000000000000000000000000000000..6194a807e27158f864a7c7677f4cbf62d8b94503 GIT binary patch literal 24069 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 HejoV Gitea 要求登录时使用你自己的账号密码即可。 -> 如果没有账号,请联系仓库管理员创建。 - ### 2. 用 Unity Hub 打开 1. 打开 **Unity Hub** -2. 确保已安装 **Unity 2022.3.62f3c1**(在 Installs → Install Editor 中选择此版本) +2. 确保已安装 **Unity 2022.3.62f3c1** 3. 点击 **Open** → 选择 clone 下来的 `VFSUnity` 文件夹 -4. Unity 会自动加载并解析 `Packages/manifest.json` 中的依赖包 +4. Unity 自动加载并解析 `Packages/manifest.json` 中的依赖包 -### 3. 首次打开等待 - -- Unity 首次打开会下载项目依赖(URP、TextMeshPro 等),可能需要几分钟 -- 等待编辑器完全加载后,在 **Project** 窗口中双击 `Assets/Scenes/SampleScene.unity` 打开主场景 - -### 4. 运行 +### 3. 运行 +- 在 **Project** 窗口中双击 `Assets/Scenes/main.unity` 打开主菜单场景 - 点击顶部工具栏的 ▶ **Play** 按钮即可运行 +--- + ## 项目结构 ``` VFSUnity/ ├── Assets/ -│ ├── Scenes/ # 场景文件 -│ └── Settings/ # URP 渲染管线配置 -├── Packages/ # Unity 包依赖清单 -├── ProjectSettings/ # 项目全局设置 +│ ├── Scripts/ +│ │ ├── Core/ # 核心管理器 +│ │ │ ├── GameManager.cs # 全局状态管理(单例) +│ │ │ ├── ExperimentController.cs # 实验流程控制器 +│ │ │ └── ConfigLoader.cs # JSON 配置加载器 +│ │ ├── Data/ # 数据模型 +│ │ │ ├── StepData.cs # 单步定义 ScriptableObject +│ │ │ ├── ExamQuestionData.cs # 考核题目 ScriptableObject +│ │ │ └── ExperimentConfig.cs # 实验配置 ScriptableObject +│ │ ├── Interaction/ # 交互系统 +│ │ │ ├── InteractionSystem.cs # 射线检测与点击处理 +│ │ │ └── DraggableObject.cs # 拖拽交互组件 +│ │ ├── UI/ # UI 控制器 +│ │ │ ├── MainMenuUI.cs # 主菜单界面 +│ │ │ ├── ModeSelectionUI.cs # 模式选择界面 +│ │ │ ├── HUDController.cs # 游戏内 HUD +│ │ │ ├── PopupSystem.cs # 弹窗系统 +│ │ │ └── VideoPlayerController.cs # 画中画视频 +│ │ └── Animation/ +│ │ └── AnimationController.cs # 角色动画控制 +│ ├── Scenes/ +│ │ ├── main.unity # 主菜单场景 ⭐ +│ │ ├── ModeSelection.unity # 模式选择场景 +│ │ └── Experiment.unity # 实验场景(核心) +│ ├── Models/ +│ │ ├── Characters/ # 角色模型(伤者、施救者) +│ │ ├── Props/ # 道具模型(急救箱、绷带、夹板) +│ │ └── Environment/ # 场景模型(田径馆) +│ ├── Animations/ # 动画文件(待导入) +│ ├── Prefabs/ # 预制体 +│ ├── Materials/ # 材质 +│ ├── Textures/ # 贴图 +│ │ └── UI/ # UI 贴图 +│ ├── Audio/ # 音频文件(语音解说) +│ ├── Video/ # 视频文件(真人演示) +│ └── Resources/ +│ └── Data/ +│ ├── fracture_fixation_steps.json # 肢体固定步骤配置 +│ └── splint_fixation_steps.json # 夹板固定步骤配置 +├── Packages/ # Unity 包依赖清单 +├── ProjectSettings/ # 项目全局设置 └── README.md ``` +--- + +## 🏗 架构设计 + +### 核心流程 + +``` +MainMenu (scene: main.unity) + │ 选择实验类型(骨折固定/心肺复苏/...) + ▼ +ModeSelection (scene: ModeSelection.unity) + │ 选择固定方式 + 运行模式 + ▼ +Experiment (scene: Experiment.unity) + │ GameManager(全局状态) + │ ExperimentController(步骤控制) + │ InteractionSystem(点击检测) + │ HUD(顶部提示栏 + 右侧按钮 + 进度条) + │ PopupSystem(弹窗 + 考核题 + 成绩显示) + │ VideoPlayer(画中画,学习模式) +``` + +### 状态管理 + +| 类 | 职责 | +|----|------| +| **GameManager** | 全局单例。管理实验类型、固定方式、运行模式、当前步骤、分数、考核结果 | +| **ExperimentController** | 接收用户交互事件,验证步骤完成条件,推进实验流程 | +| **InteractionSystem** | 处理鼠标射线检测,区分 UI 点击和 3D 物体点击 | +| **ConfigLoader** | 从 `Resources/Data/*.json` 加载实验步骤和考核题目数据 | + +### 数据模型 + +| 类 | 说明 | +|----|------| +| **StepData** (ScriptableObject) | 定义单个步骤:提示文案、对话文案、交互类型、目标标签 | +| **ExamQuestionData** (ScriptableObject) | 定义考核题目:题目文案、选项、正确答案、反馈文案 | +| **ExperimentConfig** (ScriptableObject) | 实验配置容器:步骤列表 + 考核题目列表 + 固位方式 + 分数设置 | + +--- + +## 🎮 场景说明 + +### 1. 主菜单场景 (`main.unity`) + +- 主标题:"运动伤害现场急救处理虚拟仿真实验" +- 底部 5 个功能图标按钮:心肺复苏 | 骨折固定 | 扭伤包扎 | 出血包扎 | 伤员搬运 +- 点击按钮 → 跳转 `ModeSelection` 场景 + +### 2. 模式选择场景 (`ModeSelection.unity`) + +- 顶部提示:Tip:请选择实验模式 +- 固定方式选项:肢体固定 | 夹板固定 +- 运行模式选项:学习模式 | 考核模式 +- 底部:开始实验 | 返回主菜单 + +### 3. 实验场景 (`Experiment.unity`) + +**场景物体:** +| 物体 | 标签 | 说明 | +|------|------|------| +| Ground | - | 地板(Plane 10x10) | +| InjuredPerson | InjuredPerson | 伤者(占位 Capsule) | +| InjuryLeg | InjuryLeg | 伤腿交互区(Sphere,伤者子物体) | +| Rescuer | Rescuer | 施救者(占位 Capsule) | +| Shoe | Shoe | 鞋子(可点击交互) | +| Bandage | Bandage | 绷带(拖拽交互) | +| Splint | Splint | 夹板(拖拽交互) | +| FirstAidKit | FirstAidKit | 急救箱 | + +**UI 层:** +| 组件 | 说明 | +|------|------| +| TipBar | 顶部提示栏(学习模式显示) | +| DialogueBubble | 角色对话气泡(自动4秒消失) | +| ProgressSlider | 底部进度条 | +| 右侧按钮 | 全屏、上一步、下一步、学习/考核切换、返回 | +| VideoPanel | 右下角画中画视频(学习模式特定步骤激活) | +| PopupSystem | 弹窗系统(考核题、成绩显示、注意事项) | + +--- + +## 📝 骨折固定实验流程(学习模式) + +| 步骤 | Tip 提示 | 交互方式 | 目标标签 | +|------|----------|----------|----------| +| 0. 环境评估 | 观察周围环境是否有危险,做好防护措施 | 按钮确认 | - | +| 1. 伤情检查 | 请检查伤员受伤位置 | 点击物体 | InjuryLeg | +| 2. 脱鞋袜检查 | 请将伤员鞋袜脱掉并保存好 | 点击物体 | Shoe | +| 3. 放置衬带 | 请在正确的位置穿宽度约10cm的带子 | 拖拽交互 | Bandage | +| 4. 肢体并拢 | 请在两下肢间加衬垫 | 按钮确认 | - | +| 5. 主干固定 | 固定骨折近心端、远心端、膝关节下 | 拖拽交互 | Bandage | +| 6. 踝关节固定 | 踝关节"8"字固定 | 拖拽交互 | Bandage | +| 7. 终末检查 | 包扎完毕请检查伤肢血液循环 | 按钮确认 | - | + +## 📝 考核模式题目 + +| 考核点 | 题目 | 选项 | 正确答案 | +|--------|------|------|----------| +| 考核点一 | 按正确顺序进行环境评估与自我介绍 | 确定 | - | +| 考核点二 | 按正确顺序检查伤情 | 确定 | - | +| 考核点三 | 请选择合适的带子宽度 | 5cm / 10cm / 20cm | 10cm | +| 考核点四 | 请选择正确的放带子顺序 | 确定(交互排序) | - | +| 考核点五 | 请选择正确的系带子顺序 | 确定(交互排序) | - | +| 考核点六 | 请选择带子打结位置 | 确定(点击目标) | - | +| 考核点七 | 请选择踝关节打结位置 | 足底 / 足背 | 足背 | + +--- + +## 🔧 交互类型枚举 + +| 类型 | 值 | 说明 | +|------|-----|------| +| None | 0 | 无交互 | +| ClickObject | 1 | 点击3D物体(需匹配 targetTag) | +| ClickGround | 2 | 点击地面空白处 | +| DragDrop | 3 | 拖拽物体到目标位置 | +| ButtonConfirm | 4 | 点击 UI 按钮确认 | +| MultipleChoice | 5 | 选择选项(考核模式) | + +--- + +## 📦 待添加资源清单 + +### 3D 模型 +- [ ] 室内田径馆场景(跑道、看台、跳高架、跳高垫) +- [ ] 伤者角色模型(男性、运动装、骨骼绑定) +- [ ] 施救者角色模型(女性、急救员装束、骨骼绑定) +- [ ] 急救箱(带红十字) +- [ ] 绷带/三角巾 +- [ ] 夹板模型 +- [ ] 鞋子/袜子模型 + +### 动画 +- [ ] 伤者:跑步循环、跳高起跳、空中姿态、落地摔倒、躺地受伤 +- [ ] 施救者:站立、蹲下、检查、脱鞋、包扎手部特写 +- [ ] 推荐使用 Mixamo 获取基础动画或动捕制作 + +### 音频 +- [ ] 背景音乐 +- [ ] 语音解说 TTS + +### 视频 +- [ ] 真人演示视频(画中画,学习模式使用) + +### UI 素材 +- [ ] 5 个主功能图标 +- [ ] 按钮样式 +- [ ] 背景图 + +--- + +## 🚀 后续开发指南 + +### 添加新实验类型 + +1. 创建新的 `Resources/Data/xxx_steps.json` 配置 +2. 在 `MainMenuUI.cs` 中添加按钮监听 +3. 在 `ConfigLoader.cs` 中添加加载方法 + +### 替换占位模型 + +1. 导入真实模型到 `Assets/Models/` 对应子目录 +2. 在 Experiment 场景中替换 Capsule/Cube 占位物 +3. 确保各物体的 Tag 和 Collider 设置正确 + +### 添加真实动画 + +1. 导入动画到 `Assets/Animations/` +2. 为角色创建 Animator Controller +3. 在 `AnimationController.cs` 中关联 Animator 引用和状态名 + +### 部署 MCP for Unity(可选) + +在 Unity 中:**Window → Package Manager → + → Add package from git URL**,粘贴: +``` +https://github.com/CoplayDev/unity-mcp.git?path=/MCPForUnity#main +``` +然后 **Window → MCP for Unity → Configure All Detected Clients**。 + +--- + ## 依赖包 -核心依赖已在 `Packages/manifest.json` 中锁定版本,Unity 打开时会自动恢复: +核心依赖已在 `Packages/manifest.json` 中锁定版本: - **Universal RP** 14.0.12 — 渲染管线 - **TextMeshPro** 3.0.7 — 文字渲染 - **Timeline** 1.7.7 — 过场动画 - **UGUI** 1.0.0 — UI 系统 +--- + ## 注意事项 - **不要删除 `.meta` 文件** — Unity 用它们追踪资源和 GUID -- 如果报错缺少模块,检查 Unity Hub 安装该版本时是否勾选了 **Windows Build Support (IL2CPP)**(当前配置了 Burst AOT for Windows) -- 建议在 Unity Hub → Installs → 对应版本 → Add Modules 中补充缺失平台支持 +- `.gitignore` 已配置忽略 Library、Temp、Logs、UserSettings 等生成目录 +- 占位模型 (Capsule/Cube) 后续需替换为真实美术资源 +- 考核判分逻辑在 `GameManager.RecordExamAnswer()` 中实现 +- 步骤配置通过 `Resources/Data/*.json` 管理,可在 Unity 外编辑