1、立项背景和目标
本项目是一款3D俯视角幸存者类割草游戏,参考《Vampire Survivors》核心玩法,目标是打造一款轻量化、高爽感、适合微信小游戏渠道的休闲割草产品。立项初衷有两点:一是验证Unity 6 URP在移动端的性能表现与渲染效果;二是探索“幸存者Like”玩法在微信小游戏生态中的商业化可能性(广告变现+内购道具)。项目定位为单人开发的完整可玩Demo,为后续上线小游戏做技术预研。
2、软件功能、核心功能模块
游戏包含七大核心功能模块:
玩家控制系统:WASD移动、自动范围攻击(AOE)、暴击判定、吸血回血、闪避/防御/血量三层生存属性;
敌人系统:5种敌人类型(追敌/快速/坦克/远程/自爆),Boss单位(召唤小兵+高经验掉落),波次自动推进(60秒/波,第10/20/30波为Boss波);
角色成长系统:12维可升级属性(攻/防/血/速/暴击/爆伤/吸血/闪避/幸运/范围/回血/经验增益),波间消耗属性点升级;
天赋系统:12个天赋(每级5级),PlayerPrefs持久化存储,跨场景保留;
经济与商店系统:金币掉落(70%基础掉率,幸运影响双倍概率),15种道具(分3层解锁,按波次开放),商店随机抽取5种商品;
UI系统:主菜单/天赋页/设置页/升级面板/商店面板/GameOver面板/HUD全部代码生成,不依赖场景预设;
召唤物系统:炮台(自动攻击15秒)、小兵(追击攻击20秒)、信标(范围回血10秒)。
3、业务流程、功能路径描述
玩家启动游戏 → 主菜单(开始/天赋/设置)→ 进入游戏场景 → 角色自动攻击,玩家控制移动走位 → 每60秒推进一波,敌人强度递增 → 击杀敌人获得经验与金币 → 经验满升级获得1属性点 → 波间进入升级面板加点 → 点击商店按钮购买道具(3层品质按波次解锁)→ 继续战斗 → 角色死亡弹出GameOver面板(结算波次/击杀/等级/分数)→ 重新开始或返回主菜单。F10键可跳关至第10波(调试用),ESC键游戏中返回主菜单。
1、整体架构和设计思路,不同模块使用的技术栈
技术栈:Unity 6 (6000.4.1f1) URP、C#、UnityEvent事件系统、PlayerPrefs持久化、Physics.OverlapSphere物理检测、Rigidbody移动控制。
架构设计思路:采用“单例管理器 + 组件化脚本”的分层架构。顶层为三个全局单例(GameManager管理游戏状态/属性/商店/金币,UIManager管理所有UI面板显示与刷新,TalentManager管理天赋数据与持久化),中层为各功能组件(PlayerController/AutoAttack/Health/EnemySpawner等),底层为数据配置(EnemyTypes/天赋/道具数据)。UI全部通过C#代码动态生成(不依赖场景预设),便于版本迭代与场景迁移。事件驱动解耦:Health组件通过UnityEvent发布死亡/受伤事件,其他模块通过onDeath.AddListener()订阅,避免硬编码依赖。
2、“我”的负责模块和结果(尽可能量化)
本人独立完成全部23个C#脚本、约2750行代码的开发与调试。具体负责模块及成果:
全部敌人系统(8个脚本,共702行):实现5种敌人AI(追敌/快速/坦克/远程/自爆)及Boss行为(追击+召唤小兵),自爆敌人防无限递归保护;
玩家系统(3个脚本,共176行):WASD移动+Rigidbody边界保护,自动攻击(Physics.OverlapSphere范围检测)+暴击+吸血;
波次系统(EnemySpawner.cs 272行):60秒/波自动推进,难度递增算法,第10/20/30波触发Boss战;
12维属性成长体系:含波间升级(消耗属性点)与天赋树(5级×12天赋),数值平衡设计;
经济与商店系统:金币掉落(70%概率+幸运影响双倍),15种道具(3层解锁),随机抽取+免费刷新机制;
完整UI系统(3个UI脚本,共601行):主菜单/天赋页/设置页/升级面板/商店面板/GameOver面板/HUD全部代码生成;
3个召唤物系统(TurretSpawn/MinionSpawn/HealingBeacon):炮台/小兵/信标自动寻敌与生命周期管理;
关键技术修复:timeScale=0时UI按钮点击修复(UIInputFix自定义检测),解决Unity EventSystem在暂停状态下失效的引擎级问题。