Unity · Survival Shooter / Tower Defense / CASE STUDY
3D 生存射击游戏
基于 Unity 开发的一款 3D 生存射击与塔防结合游戏,玩家可以选择不同英雄和关卡,通过角色攻击、防御塔建造升级抵御多波丧尸进攻,保护主塔并完成关卡结算。
UnityC#Unity 游戏开发生存射击塔防
查看 GitHub 源码 - 职责
- 玩法与系统开发
- 周期
- 2025.01 – 2025.03
- 状态
- 源码可查看
01
关键难点
组织角色攻击、防御塔建造升级和多波丧尸进攻的完整关卡流程,协调数据、UI、资源消耗、怪物状态及胜负结算。
02
解决方案
使用 GameDataMgr、UIManager 和 GameLevelMgr 管理数据、界面和关卡;以碰撞检测、射线检测及动画事件衔接战斗逻辑,通过 NavMeshAgent + Animator 实现怪物行为;以对象池复用怪物、特效和音效,使用 StreamingAssets + JSON + Excel 读取配置,并通过 Application.persistentDataPath 保存进度。
03
结果与证据
实现英雄与关卡选择、玩家射击、防御塔建造升级、多波丧尸生成、背包道具使用和胜负结算;使用 Unity Profiler 分析 CPU、内存和 GC 开销,并结合对象池减少频繁创建与销毁对象造成的性能波动。
RESPONSIBILITY HIGHLIGHTS
个人贡献
- 战斗系统:实现玩家射击攻击以及防御塔单体、群体攻击逻辑,通过碰撞检测和射线检测判断攻击目标,并结合攻击间隔、伤害、命中反馈和音效完成战斗闭环。
- 管理器架构:采用单例模式封装 GameDataMgr、UIManager 和 GameLevelMgr,统一管理全局数据、UI 面板、关卡初始化、怪物波次、防御塔建造和胜负结算流程,减少跨模块之间的耦合。
- 怪物 AI:基于 NavMeshAgent + Animator 实现怪物移动、寻路、攻击、受伤和死亡状态,通过刷怪点和怪物列表管理多波丧尸生成,并根据刷怪状态和场上怪物数量判断关卡胜负。
- 塔防系统:实现防御塔建造、升级和资源消耗逻辑,根据炮塔类型支持单体攻击和范围攻击,并通过目标检测、攻击范围和攻击间隔控制炮塔行为。
- 动画控制:使用 Animator 状态机管理玩家和怪物的待机、移动、攻击、受伤、死亡等动画状态,通过 Bool 和 Trigger 参数实现角色状态切换,并利用动画事件触发实际攻击逻辑。
- 对象池:封装对象池系统,对怪物、攻击特效、命中特效和音效对象进行统一创建、复用和回收,减少频繁 Instantiate/Destroy 造成的 GC 和运行时开销。
- 数据配置:使用 StreamingAssets + JSON + Excel 维护角色、怪物、关卡和防御塔数据,运行时通过 JSON 读取配置,实现数据与代码分离。
- 本地存档:使用 Application.persistentDataPath 保存金币、已解锁英雄、背包道具和音量配置,实现本地数据持久化。
- UI 系统:基于 UGUI 封装通用面板管理系统,通过 Resources 动态加载界面,使用 CanvasGroup 实现面板淡入淡出效果,完成角色选择、关卡选择、建塔面板、背包界面和结算界面。
- 背包系统:扩展背包数据和道具使用逻辑,支持关卡奖励入库、道具数量显示和快捷键使用,实现急救包、手雷和金币箱等消耗品功能。
- 性能分析:使用 Unity Profiler 分析怪物刷波、特效播放、对象创建、UI 刷新过程中的 CPU、内存和 GC 开销,并结合对象池降低运行时频繁分配造成的性能波动。