立项背景与目标:
背景:物理实验教学面临设备不足、器材损耗、安全隐患、学生无法反复操作等痛点。需要一个零安装、可随时随地访问的虚拟实验平台。
目标:用Unity WebGL构建交互式3D物理仿真实验,搭配AI教学助手,实现课前预习、课中探究、课后报告的完整教学闭环。
软件功能/核心模块共5个:
一,首页导航——8个实验卡片入口,鼠标悬停时自动预加载Unity文件。
二,Unity仿真实验(e1到e8共8个)——3D物理模拟,支持调节导轨角度、光电门间距、摩擦系数等参数,有运行实验、重置实验、批量实验三个按钮,实验结果实时填入数据表格。
三,数据分析工具——弦线波振动实验的数据分析页面,耦合摆实验的4种分析页面(同向振动分析、异向振动分析、拍频分析、摆支分析),用Chart.js生成图表。
四,AI助教——DeepSeek驱动的聊天机器人,支持三种教学风格:苏格拉底式提问(只反问不给答案)、引导式提示(给线索留推理步骤)、协作式讲解(接近完整但最后一步留给学生)。内置物理常见误区库,能自动识别并纠正学生的错误概念。
五,预习预测题——进入实验前弹出选择题,引导学生先思考再操作。
六,实验报告——在线填写实验名称、实验目的、实验原理、数据记录、结果分析等,点击提交后AI自动批改并给出反馈建议。
业务流程:
用户进入首页,看到8张实验卡片。点击任意卡片后弹出预习预测题,做完选择题后进入实验页面。Unity场景开始加载(约98MB,界面显示实时下载速度和剩余时间)。加载完成后进入3D实验场景,用户调节参数,点击运行实验观察物理现象,数据自动填入表格。过程中可以随时打开AI助教提问,AI会根据用户选择的引导级别给出不同深度的回答,还能识别物理常见误区。需要深入分析时可以打开独立的数据分析页面查看图表。实验结束后到实验报告页面填写报告,提交后AI自动批改并给出改进建议。
一、整体架构和设计思路
纯静态前端 + Express轻量后端,零构建工具,所有HTML/CSS/JS手写或CDN引入。架构简单:Unity实验放Build目录,Express统一托管静态文件同时兼任DeepSeek API的反向代理,AI聊天组件是自包含的IIFE模式直插页面。
二、我负责的模块和结果
独立完成全部前端和后端:8个Unity实验页面、1个Unity加载器、1个AI聊天助手、1个预习系统、1个实验报告页面、5个数据分析页面、1个Express代理服务器、1个首页导航、1个LLM聊天配置模块。
量化结果:约30个文件,覆盖8个物理实验的仿真、数据分析和AI辅导全流程,首次访问后通过强缓存实现秒开。
三、难点、坑、解决方案
加载慢: 每个实验98MB,服务器带宽仅300KB/s。解决方案——gzip压缩wasm(6.5→2.5MB)、Cache-Control immutable浏览器缓存一年(二次秒开)、首页hover预取。
二次压缩: Unity构建时已压缩.data.unityweb,compression中间件又压一遍浪费CPU。解决方案——filter过滤.unityweb后缀跳过。
远程依赖: 最初依赖8个远程Unity服务器,跨域和稳定问题多。解决方案——Unity产物直接放本地Build目录,去掉外部依赖。
端口占用: Windows自动重启占用3001端口的node进程。解决方案——sc query定位服务名后用net stop关闭。
无构建工具: 模块通信依赖window全局对象,必须保证脚本加载顺序。解决方案——统一规范:config脚本在最前,widget脚本在最后,所有页面固定底部引入。