Commit Graph

146 Commits

Author SHA1 Message Date
yangbear 3a83140801 fix: 重建TouchPositionHandler.cs修复括号混乱编译错误 2026-07-01 21:07:01 +08:00
yangbear d0e4d5d8c5 fix: 音频系统全面修复 - 引用设置+PlayHomeBg重启+音效位置
1. 通过MCP设置所有AudioClip引用到Inspector字段
2. PlayHomeBg去掉clip比较检查,Stop后回来能重新播放
3. basketball/manCall PlayClipAtPoint改用transform.position
4. TouchPositionHandler voiceClip通过SerializedObject赋值
2026-07-01 21:04:38 +08:00
yangbear 34287ca203 fix: 音频系统代码清理 - 修复TouchPositionHandler多余} + 清理死代码
- TouchPositionHandler: 修复sed残留多余},改用PlayClipAtPoint
- PageController: StopBgMusic/HideAllPages分行,删除未调用的PlayWomanAudioSequence
2026-07-01 20:19:17 +08:00
yangbear b26a6e0fc7 fix: 移除重复的PlayHomeBg/StopBgMusic/PlayExperimentBg定义 2026-07-01 20:03:45 +08:00
yangbear 97b793e8f4 fix: 修复bg音乐方法被加到类外面的编译错误 2026-07-01 20:01:21 +08:00
yangbear 8dadc6a58d feat: 音频系统重构 - bg音乐流程修复 + woman语音按点位播放
改动:
1. TouchPositionHandler新增voiceClip字段, 点击时播放对应语音
2. PageController.ShowPage: 首页播放homeBg
3. OnFixationSelected: StopBgMusic()(开场动画开始时停bg)
4. ActivateExperimentObjects: 移除PlayWomanAudioSequence, 保留PlayExperimentBg
5. 新增PlayHomeBg/StopBgMusic/PlayExperimentBg方法
6. 删除_audioManager冗余引用

流程:
首页→homeBg播 → 选固定方式→bg停 → 开场动画→实验bg播
woman语音1→点击point1播, 语音2→point2, 语音3→point3
2026-07-01 19:51:41 +08:00
yangbear 9548492391 feat: 完整音频系统 - 首页/实验背景音乐+woman语音序列
- PageController新增_homeBgClip/_experimentBgClip/_womanClips数组
- Start()创建AudioSource循环播放背景音乐
- ShowPage控制: Home播首页bg, 离开首页停止bg
- ActivateExperimentObjects: 停止首页bg→播实验bg→顺序播放3段woman语音
- PlayWomanAudioSequence()协程: 每段播完后等0.5s再播下一段
2026-06-30 23:42:26 +08:00
yangbear 89037cb9dc feat: 开场音频系统 - 篮球音效+manCall
- OpeningFlowController新增_basketballClip/_manCallClip SerializeField
- Step2 Shoot开始时播放篮球音效
- Step3 manfull摔倒后播放manCall
- AudioSource.PlayClipAtPoint播放
2026-06-30 23:40:37 +08:00
yangbear 9ce2bccbeb fix: 实验启动时恢复显示TipPanel和DialogueBubble
HideAllPages()隐藏了这两个面板,ActivateExperimentObjects()中补上显示
2026-06-30 23:12:24 +08:00
yangbear b2714eb7a2 feat: 开场动画开关 _enableOpeningFlow (Inspector可调)
- 新增 [SerializeField] _enableOpeningFlow,默认true
- 设为false时直接跳过动画,切场景状态后回调
- 方便调试验证后续功能
2026-06-30 23:10:08 +08:00
yangbear 5778de59ab fix: 保存woman初始位置,上一步回到step0时能回到起点
- InitWomanSteps()保存_womanInitPos/_womanInitRot
- MoveWomanToStep(0)不再跳过,改为恢复到初始位置
- step=0时显示point1(通过UpdateTouchVisibility)
2026-06-30 23:07:19 +08:00
yangbear 4540ff4942 fix: 移除UIManager重复按钮绑定+InteractionSystem误触发——根因修复
根因: UIManager._btnLimbFixation/_btnSplintFixation调用SwitchFixation
与PageController的OnFixationSelected双重触发,StepManager._mode被设为Learn
导致OnStepInteractionComplete→NextStep→WomanStepNext自动跳过步骤。

修复:
1. UIManager.BindButtons移除_btnLimbFixation/_btnSplintFixation的SwitchFixation绑定
2. ExperimentFlowCoordinator.OnAnywhereClicked增加无Config步骤时忽略的注释守卫
2026-06-30 21:59:47 +08:00
yangbear 7519b37ee6 fix: 模型状态完全恢复 - man Animator重置 + touchPoint闪烁重启
- PlayOpeningFlow/ReturnToHome: 增加 _manAnimator.Play("manIdle") 强制重置动画状态
- TouchPositionHandler: 新增 OnEnable() 重新激活时自动重启闪烁协程+启用MeshRenderer
- 解决返回重来后 man 还停在 manfull、touchPoint 不再闪烁的问题
2026-06-30 15:09:31 +08:00
yangbear 039099e1f6 fix: Camera.main→GameObject.Find(Main Camera) 解决摄像机不同步
根因: Camera.main在SwitchToCamera2禁用主摄像机后返回null,
PlayOpeningFlow/ReturnToHome无法重新启用主摄像机。
全部改用GameObject.Find("Main Camera")按名字查找。
2026-06-30 14:55:40 +08:00
yangbear 3ebe010dfd fix: Previous/Next走对woman步进 + 开场动画支持重复播放
- PreviousStep/NextStep: woman自由步进优先于Config路径
- UpdateTouchVisibility: 修正索引 i==step (之前错误地用step-1)
- PlayOpeningFlow: 每次调用前重置man/man2/摄像机状态,支持返回重来
- PageController: 移除InitializeFromGameManager调用,不再覆盖woman步进
2026-06-30 14:47:51 +08:00
yangbear 2df79866d0 feat: 上一步/下一步支持woman步进撤销重做
- StepManager新增自由步进模式(无Config时):
  InitWomanSteps/RecordWomanStep/WomanStepPrevious/WomanStepNext
- PreviousStep/NextStep在_activeSteps为null时走woman步进
- TouchPositionHandler点击后通知StepManager.RecordWomanStep
- PageController在实验启动时调用InitWomanSteps初始化
- 上一步→woman回到上个位置+显示对应touchPoint
- 下一步→woman移到下个位置+显示对应touchPoint
2026-06-30 14:32:30 +08:00
yangbear 524ad732f9 feat: 双Pass膨胀描边shader替代LineRenderer
- 新增 Custom/OutlineUnlit shader: Pass1膨胀描边(Cull Front)+Pass2内芯填充
- BlueOutline.mat: 蓝色描边+半透蓝填充
- TouchPositionHandler改用MeshRenderer.enabled闪烁
- 球体挂MeshRenderer+Outline材质,0.4s闪烁
2026-06-30 03:02:12 +08:00
yangbear 542268932d fix: touchArray球体改为黑场后才出现,与medicalBox同步
- 所有touchArray子级初始隐藏
- ActivateExperimentObjects()中同步激活point1
2026-06-30 02:49:27 +08:00
yangbear 3d407dec63 fix: 描边从单环改为交叉双环(横+竖),世界空间绘制避免视角失真
- 水平环(XZ平面) + 垂直环(XY平面) 交叉形成球形轮廓
- useWorldSpace=true 直接在世界空间画,避免子物体旋转导致的视角变形
- 半径0.15, 线宽0.06, 亮蓝色, 两个环同步闪烁
2026-06-30 02:48:13 +08:00
yangbear ea12c51677 fix: 蓝描边重构 - Unlit/Color shader + 闪烁 + MeshRenderer自动关闭
- Shader: Sprites/Default → Unlit/Color (解决3D空间不可见)
- 线宽: 0.02→0.06, 半径: 0.12→0.15, 颜色: 亮蓝
- 新增闪烁协程: 每0.4s切换enabled
- Start()自动关闭MeshRenderer,只留描边
- 环抬高0.02防穿地
2026-06-30 02:32:27 +08:00
yangbear bc24cd922c fix: ActivateExperimentObjects 用 FindObjectsOfType(includeInactive) 替代 GameObject.Find
medicalBox 初始 inactive,GameObject.Find 只能找活跃对象
改为 FindObjectsOfType<GameObject>(true) 遍历所有对象查找
2026-06-30 02:26:32 +08:00
yangbear 2bb79e452e feat: touchArray 蓝描边 + 顺序显示(点击1→2→3)
- TouchPositionHandler: Start()创建LineRenderer蓝圈描边
- 新增 nextTouchObject 字段实现链式顺序显示
- 点击球体→移动woman→隐藏自己→显示下一个
- 场景初始: 仅point1活跃, 链: point1→point2→point3→null
2026-06-30 02:24:54 +08:00
yangbear 7100305765 feat: woman移动交互 + medicalBox显示 + ReturnToHome场景重置
- TouchPositionHandler: 点击touchArray球体→woman移动到womanPointArray对应位置
- medicalBox: 初始隐藏,实验开始后显示
- ReturnToHome: 重置场景(恢复man/man2, 隐藏woman/manInjury/medicalBox, 切回主摄像机, 重置Animator)
- ActivateExperimentObjects(): 实验启动时激活实验物件
2026-06-30 02:19:13 +08:00
yangbear cee3dd097c fix: HideAllPages 增加隐藏 DialogueBubble 2026-06-30 01:37:40 +08:00
yangbear 7d2696d65c fix: HideAllPages 增加隐藏 TipPanel 2026-06-30 01:22:54 +08:00
yangbear c88651be54 fix: Shoot也改用Play直接播放,彻底绕过Animator Controller过渡
- Shoot和manfull都使用_manAnimator.Play()直接播放
- 开头加yield return null让Animator处理重置
- 不再依赖SetBool参数过渡,消除所有Animator Controller不确定性
2026-06-30 00:58:58 +08:00
yangbear 1cd201da60 fix: 去掉Shoot的while循环,改为纯WaitForSeconds避免干扰Animator
用户已修复Animator Controller中Shoot循环问题,代码端不再需要每帧SetBool(IsFull,false)
2026-06-30 00:57:32 +08:00
yangbear c1f1428d39 fix: Idle缩到1s + 摔倒改用Play直接播放避免被Animator过渡跳过
- Idle从2s缩短到1s
- Fall不再依赖SetBool+Animator过渡,改用Play("manfull")直接播放
- 摔倒后停留2s确保看清
2026-06-30 00:52:13 +08:00
yangbear c8a21fa3b3 fix: 去掉 Play(manIdle) 避免 Idle 重复触发 + Shoot→Fall 过渡优化 + 场景 maninjury→manInjury
- 不再调用 Play("manIdle"),仅重置参数让 Animator 默认进入 Idle
- Shoot 结束后先设 IsFull=true 再清 IsStart=false,避免过渡时闪回 Idle
- 摔倒后停留从1s增加到2s,确保玩家看清摔倒动作
- GameObject.Find("maninjury") → Find("manInjury") 匹配场景重命名
2026-06-30 00:48:09 +08:00
yangbear c38016ce26 fix: Shoot期间每帧锁定IsFull=false防止过早切换 + 黑场后隐藏man
- Step2 Shoot: 改为while循环每帧SetBool(IsFull,false),防止Animator中途切到manfull
- Step3 Fall: 2.1s后停留1s再黑场(不再用_fallHoldDuration)
- Step4 黑场: 新增 man 隐藏(_manAnimator.gameObject.SetActive(false))
- woman和maninjury在黑场期间显示,man/man2隐藏
2026-06-29 20:54:39 +08:00
yangbear 34c57b51fe fix: 重建 OpeningFlowController.cs,修复字段声明丢失导致的编译错误
之前 structured edit 替换方法时丢失了所有 [SerializeField] 字段声明
现在删掉重建完整文件,字段全部在类开头正确声明
2026-06-29 20:43:11 +08:00
yangbear 4147d6e800 fix: 修复黑幕不显示的根因 — BlackScreenPanel active=false 导致 GameObject.Find 找不到
根因: BlackScreenPanel 初始 active=false,GameObject.Find() 只能找活跃对象
→ _blackScreenPanel 一直为 null → FadeBlackScreen() 直接 yield break 跳过

修复:
1. 场景中激活 BlackScreenPanel(alpha=0 所以视觉不可见)
2. AutoAssignReferences() 增加 FindObjectsOfType<Image>(true) 兜底
3. Start() 改为保持 BlackScreenPanel active + alpha=0,而非 SetActive(false)
4. 增加 Debug.Log 确认 BlackScreenPanel 找到状态
2026-06-29 20:41:12 +08:00
yangbear 64675fc56a fix: 摔倒动画后增加停留缓冲,避免动作未完成就黑幕转场\n\n- 新增 _fallHoldDuration 字段(默认1.5s),Inspector 可调\n- Step3 manfull 2.1s 播完后 wait _fallHoldDuration 再进黑幕 2026-06-29 20:37:14 +08:00
yangbear c592358ef8 fix: 修复 manIdle 未播放问题 + 添加 camera2 切换
- RunOpeningFlow 开头强制重置 Animator: SetBool(false) + Play("manIdle")
- Step2 前确保 IsFull=false(适配 Idle→Shoot 过渡条件)
- 黑屏转场后调用 SwitchToCamera2(),启用 camera2、禁用主摄像机
- 所有关键步骤增加详细 Debug.Log
2026-06-29 20:35:12 +08:00
yangbear 8c5412f390 fix: 片头动画改为用户触发而非自动播放
- OpeningFlowController: Start() 不再自动播放动画,新增 PlayOpeningFlow(Action onComplete) 公开方法
- PageController: OnFixationSelected() 先隐藏所有UI面板,调用 PlayOpeningFlow,动画结束后再显示 ExperimentPanel
- 新增 HideAllPages() 方法用于片头动画期间清空UI
- 所有按钮回调均保留 Debug.Log 输出
2026-06-29 20:25:57 +08:00
yangbear 2d0aaa98aa fix: 修复 UI 导航流程,添加 Debug.Log 完整日志
- 重写 PageController.cs,为所有按钮回调添加完整 Debug.Log
- 自动修复 _btnFixationBack:未赋值时自动查找 FixationPanel/BtnBack
- 自动修复 _btnExperimentBack:未赋值时自动查找 ExperimentPanel/Navbar/BtnBack
- 删除失效的 Canvas 根级冗余 BtnFixationBack
- 添加 3D 角色模型资源(man/woman 模型、动画、TextMesh Pro)
- 添加 ExperimentPanel UI 资源和 TrainingBackground 素材

测试方法:进入 Play 模式,查看 Console 以验证每个按钮的绑定状态和点击回调是否正常触发。
2026-06-27 13:25:58 +08:00
yangbear b999148a0e fix: 修复ExperimentPanel按钮无响应问题,新增OnExperimentBackClicked回调,清理遗留的BtnFixationBack显隐逻辑 2026-06-25 04:55:41 +08:00
yangbear b775d9f179 chore: 删除遗留死代码(ConfigLoader, ExperimentController) 2026-06-25 04:44:01 +08:00
yangbear 0a1fce450c fix: 清理AI遗留代码,修复场景配置
- 删除三套旧菜单系统 (MainMenu.cs, MainMenuUI.cs, ModeSelectionUI.cs)
- Ground 添加 BoxCollider 并设置 tag 为 Ground
- UIManager.OnReturnClicked 改为通过 PageController 返回首页
- PageController 增加 ReturnToHome 方法,管理 BtnFixationBack 可见性
- 清理废弃场景 Experiment.unity / ModeSelection.unity 及历史截图
2026-06-25 04:37:45 +08:00
yangbear 3b4438731d fix: WebGL关闭Brotli压缩解决服务器部署.br解析问题; 新增PageController编辑器页面预览下拉框; 创建FractureFixationConfig ScriptableObject; 修复ExperimentFlowCoordinator自动初始化问题 2026-06-24 06:05:55 +08:00
yangbear a6a7fd06d4 feat: WebGL打包配置 + UI页面系统完善
- WebGL Build: 全屏1920x1080,Build文件夹gitignore
- 导入Arial.ttf字体解决WebGL打包字体问题
- 修复PageController所有按钮绑定(BtnExamMode等)
- ModeSelectPanel添加ModeDesc描述文字
- 删除PageControllerEditor.cs(Editor脚本导致WebGL编译失败)
- 场景模型资源导入(Environment/playground)
2026-06-24 05:24:09 +08:00
yangbear e2834ed92a feat: Canvas UI修复为ScreenSpaceOverlay + ScaleWithScreenSize适配WebGL; 新增截图、meta文件 2026-06-24 02:50:08 +08:00
yangbear c5006bea92 merge: 合并远程更改,保留本地脚本代码和远程文档 2026-06-24 02:45:21 +08:00
yangbear bf926165c0 feat: 场景优化 - 清理重复对象、设置Tags/Colliders、重建Canvas UI、连线Inspector引用
- 删除顶层重复的 GameManager/ExperimentController/InteractionSystem/AnimationController
- 移除Canvas上的旧 HUDController(保留 UIManager)
- 为14个交互定位点设置Tag并添加SphereCollider
- 创建12个自定义Tag(InjuryVisual/Swelling/Pain/VitalSigns/Neuro/BandagePos1-3/Ankle/PaddingPos/SplintLeft/SplintRight)
- 完全重建Canvas UI子对象结构以匹配 UIManager 脚本
- 连线 ExperimentFlowCoordinator 和 UIManager 的所有 serialized fields
- 编译零错误,游戏画面正常显示
2026-06-24 02:44:58 +08:00
yangbear f0a6b96da5 feat: MCP Unity 场景优化 — 完整交互体系搭建
- 删除重复 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
2026-06-24 02:33:48 +08:00
yangbear a11e003fcd feat: VFS 虚拟仿真实验核心框架 v2
- 加权评分系统:每步独立 ScoreWeight,满分 100,SequenceClick 按子项比例计分
- StepData 新增 DetailedContent(学习模式详细操作说明)和 SubStepCount
- 伤情检查步骤扩展为 5 子项序列(视觉检查→肿胀→疼痛→生命体征→神经评估)
- 夹板固定模式完整评分(选择夹板→放置衬垫→夹板固定→固定后检查)
- Doc/ 文件夹归档三份文档:项目大纲、文案、评分标准
- README 更新评分权重表和夹板固定流程
2026-06-24 02:07:43 +08:00