Demo项目《蜂蜂大乱斗》技术复盘(Unity 6)
插件部分
这次做 Demo,使用了一些插件(含Unity内置),是平常不怎么用的,还没来得及深入学习,故此 Mark 住。
程序向:
- DOTWeen
- Cinemachine
- InputSystem 中的 PlayerInput、PlayerInputManager
- 对多设备接入提供了很好的工具架
- Odin
- 方便与策划合作
- 规范 Inspector 面板,有 Read-Only 但是显示在 Inspector 面板等特性
- 可以把放在各个 Obj 上面的脚本配置都配齐到一个面板上
- QFramework(未用到)
- 虽然本项目未用到,但是其他队伍程序用上了,提供一些基本的工具架,加快了开发速度,感觉可以学一些框架,可以带着去 Game Jam,框架+AI,开发速度无敌了👍
TA 向:
- AmplifyShaderEditor:可视化着色器编辑器
- DynamicBone:触角动骨
- Unity-URP-Outline:角色描边效果
- Bloom:后处理发光
AI Coding 部分
这次的代码量还是很大的,除了自己以往积累的一些基本框架(事件系统、Trace Log等),AI 工具写了很多我看得懂但不能立刻写出来的代码。Claude 4 、GPT 5、GPT 4.1 在这次 Demo 制作中发挥了很大的实力。
AI 的使用
本次的 AI 工具为: VSCode + Copilot Pro(学生包)
Claude 更擅长复杂、完整的需求——比如从零写了个 Multiplayer Audio Manager,支持根据玩家所在分屏位置(玩家 index)选择在左右声道播放音效。不过,Claude 会自我迭代很久,对于比较小的细节,或者比较简单的功能,Claude 反而力不从心、反复迭代把自己绕晕。当然也与我用 VSCode 有关系, 如果用 Cursor 的话可以写 .mdc 来调教。
GPT 发挥还是比较稳定,对于中小型需求都反应迅速且代码简洁。
Prompt 案例:面向复杂需求的操作
本来想在这里详细记录和分享一下 Prompt 怎么写的,无奈升级了 VSC 到最新版之后,貌似 Copilot 插件也更新了,查询不了 Chat History,只能看到标题。 因此只能简单分享一下这次 AI Coding 中 AI 帮助比较大的部分。
开发者应该不畏惧给 AI 喂复杂需求,相信 AI 能自我迭代,也相信自己会用 AI 写的需求代码,可以通过以下操作增加成功率:
- 确保梯子稳定,就算断连了,也可以发送”请继续,刚才断网了“等 Prompt 让 AI 继续迭代
- Prompt 需求分点,像列一个 TO-DO List 一样(现在的 Claude 聪明得倒是会自己整理 TODO List 了)
- 写完框架、接口后,让 AI 写一个 README 文档,教你怎么使用,并且说明代码结构(直接可以上 Github 了)
- 如果 AI 越迭代越错误,是时候开一个新的对话了…只要README写得好,你都可以让下一个 AI 来马上读懂这个框架,其实 README 和 Cursor 搞的 .mdc 原理真的很像。
以上这些操作在我让 AI 写音频脚本的时候都有使用,并且最后的音频系统用得也很顺手,甚至可以直接把脚本文件复制到另一个项目里复用。
技术复盘
时间管理器
需要的功能:
- 正计时
- 倒计时(可重复)
- 同时支持回调
- 返回时间(格式化时间)
- 自动清理?
- 不知道是否能做到
六边形地图生成
涉及到的技术:
- 六边形地图坐标
- 自计算 Obj 的宽度边长
- 六边形地块的平顶与尖顶朝向
还需要优化的点:
- 目前随机色,套了3层For循环:地砖随机色、根据边长生成一整层地板、根据层数生成整体地图
手柄震动
还需要优化的点:
- 同一个手柄,无线和有线会识别成两个设备,导致同时控制了两个玩家
- 无线手柄没有震动
DOTWeen:UI 动画、Obj 动画
这次做得好的点:
- UI动画脚本解耦高,只要是个中心居中的UI都能挂(四周扩展的不行,根本变化不了坐标)
- UI动画脚本提供缓入缓出的时间和方式
- DOTWeen还能做 3D Obj 的动画,本次项目中制作了爆炸特效
还可以优化的点:
- 3D Obj 的动画也能像UI动画一样解耦,变成可以直接挂载的脚本,更方便的添加生成动画
- UI 动画脚本可以设置一下自动获取画布高度,来控制滑入滑出的位置。目前虽然最终位置没问题,但是会影响大滑入和滑出的时间,造成了不便预估的延迟。
道具卡功能
这次做得好的点:
- 解耦
- 在后面道具模型有变动的时候,很方便的在1分钟之内替换了资源
不好的点:
- 道具的应用效果是写在 HUDManager 和 PlayerController(甚至PlayerManager,不过PM中的函数比较解耦),这样的话如果后期增加道具,增加道具资源很容易,但是要增加道具效果,只有不断地写代码
- 按理说应该有一个Item Effect类来管理每个道具的效果,要作用到哪个玩家身上,PlayerController只留下一个应用效果的通用函数/接口,HUDManager也只留下一个函数,用来应用不同的Effect显示在屏幕上。
- 写到这里,好像HUDManager没什么问题,道具的应用效果的画布肯定得寄存在这个脚本里是最方便的,不然实例化还要设置一下画布大小之类的,并且太解耦的话也不是很方便在Scene视图中查看
这一块还需要找人聊一聊,看看道具功能一般是怎么设计的
本次的道具功能结构:
- 玩家类添加 Inventory
- 提供列表
- 加入道具、删除道具功能
- Inventory UI
- 仅负责刷新UI
- Item Assets
- 很方便的管理道具的各种图标、Prefab,直接替换就行
- Item 类
- 返回各种资源
- ItemObj
- 设置道具类型
- 设置道具 MeshRenderer
游戏设计细节复盘
这里简单列举一下此前不曾注意到可以这样实现/设计的游戏细节。
- 可以提前准备好的框架
- 计时器
- Log
- 事件系统
- 音频管理系统
- 玩家管理类(如果是多人的话)
- 玩家控制脚本
- 手柄震动(在玩家碰撞的时候,可以给一下手柄震动,增强体验感)
- 再次感谢AI的伟大,是路演前2小时,一句 Prompt 让 GPT-5 在 5 分钟内完成了这个功能
- DOTWeen 可以做 3D 物体的缩放,效果也很好
- 根据玩家分屏位置播放音频
- 可以方便玩家知道是谁使用了道具。同时也让场景声音没那么混乱,否则 4 个玩家同屏,全部音效都是一样大声的出现就太吵了。
- 六边形格子的地图生成
- 需要使用到六边形专用的坐标,并且有专门研究此算法的帖子(见参考文献)
- 地图的每层随机色配置可以用 SO 来存储,方便改配置,也避免在 Runtime 中调整不方便保存 Values(单组件的话倒是可以直接 Copy Component Values)
- Input System 自带的 Player Input Manager 组件可以方便的实现多设备输入和分屏
- 可以直接控制最大玩家数,根据玩家数自动设置 Camera 的 ViewPort
- 目前与 Cinemachine 还有冲突,要实现视角控制分离,需要自己写脚本(参考文献也有)
- 角色动画极大地增加了手感
- 前摇动画,将玩家暂时定住
- 冲刺拉伸动画,产生形变
- Audio Manager 可以用 SO 将资源与代码分离
- 之前在 B 站刷到过这种技术视频,这次总算是付诸实践了
- 视线被遮挡,除了移动相机,可以写 Shader 让相机将一定距离内的物体透明
- 《Sifu》就做了这个效果,个人分析,可能是因为动作游戏不方便随时转摄像机,所以隐藏了可以避免玩家被遮挡视野
- 玩家位置、平台等空物体的位置在运行前显示
- 挂载一个自定义脚本,在 Editor 中 DrawSphere就行
- 这也是从毕设用的插件
Malber Animal
中学到的
- 测试物体运行时自动隐藏
- 挂载一个自定义脚本,在 Start 的时候自动隐藏物体
- 如果写在Awake,一旦脚本被挂了就会执行,会导致测试物体取消不了自动隐藏
参考文献
本次 Demo 程序部分参考了以下教程,都是比较好、比较有用的教程才被记录了下来
- https://www.redblobgames.com/grids/hexagons/
- https://www.redblobgames.com/grids/hexagons/implementation.html
- https://blog.csdn.net/qq_46044366/article/details/126810076
- https://blog.csdn.net/qq_46044366/article/details/122722948
- https://docs.unity3d.com/Packages/com.unity.textmeshpro@3.2/manual/ColorEmojis.html
- https://www.bilibili.com/video/BV1vf4y1v7xU/
- https://www.bilibili.com/video/BV1HA411d7YQ/
- https://onewheelstudio.com/blog/2022/2/3/split-screen-multi-player-with-unitys-new-input-system
- https://www.youtube.com/watch?v=2WnAOV7nHW0
- https://www.youtube.com/watch?v=81GecyuNapg
标题:Demo项目《蜂蜂大乱斗》技术复盘(Unity 6)
作者:LeonYew
日期:2025-08-16