乐于分享
好东西不私藏

AI加持下使用Unity零代码开发3D游戏Demo

AI加持下使用Unity零代码开发3D游戏Demo

类似这种游戏大家一定见过,很多游戏的买量素材也都是这样的。

最近在做这种游戏的Demo,开始的时候用熟悉的cocos creator做了一个2D版的,效果不是很好。于是准备改成3D,试了下cocos的3D编辑器,使用体验一言难尽,相机改个坐标预览窗口就卡成图片。最终还是放弃了,拿起了好久没有用的Unity。

Unity虽然之前用过,但是也没有从0开发过3D游戏,之前的unity经验主要是进行一些二次开发,是在完整的游戏下进行修改。还有就是做一些Android SDK开发的工作,总之都不太涉及3D游戏开发。

之前我个人的游戏开发经验也主要是2D游戏,3D方面的积累比较少。

唯一一些3D经验是使用Threejs做过一些模型展示小项目,对3D模型有一些浅显的了解,仅此而已。

以上这就就是本次3D游戏开发的基础,为了更好的完成本次Demo,首先了解了一些关于渲染的知识,之前也写过一篇入门介绍。

也是本着学习的心态,开启了本次开发之旅,全程没有写一行代码,全部由AI生成。

用到的AI工具

  1. DeepSeek:用来了解Unity 3D开发相关的知识,代替搜索引擎
  2. Codebuddy:本次代码编写主力,模型用的是GLM 5.1 ,优点就是生成速度快,代码质量也比较高。
  3. Antigravity:使用强模型解决GLM反复搞不定的问题

项目概览

属性
详情
项目名称
X
引擎版本
团捷引擎 (Tuanjie Engine) 1.8.5(基于 Unity 2022.3 LTS)
渲染管线
URP (Universal Render Pipeline)
目标平台
Android / iOS / 微信小游戏
屏幕方向
竖屏移动端 (720×1280)
项目类型
竖屏 3D 无尽跑酷/队战类游戏

核心玩法: 玩家控制一支由主力兵种(战士/弓箭手/法师)和小兵组成的队伍,在无限滚动的道路上前进。通过左右移动躲避障碍、攻击敌人、收集增益物品,直至全灭判定游戏结束。

技术架构

场景流程

关键设计

核心模块

战斗系统

采用 ITargetable 接口 + 基类继承 的多态架构:

  • ITargetable 定义统一的目标接口(IsAlivePositionAimPointTakeDamage
  • UnitBase 实现索敌(前方扇形锥形检测)、攻击间隔管理、受击反馈、死亡协程
  • 各子类差异化:
    • WarriorUnit: 近战高攻+暴击机制,发射剑气投射物
    • ArcherUnit: 远程高攻速+连射概率,自定义 TakeDamage(无 Hit 动画状态)
    • MageUnit: AOE范围攻击+减速效果
    • SoldierUnit: 弱化版战士,随机开火延迟避免同步

无限道路系统

双脚本协作:

  • RoadScroller: 管理 3 个马路段的队列,玩家走过旧路段时回收并在前方生成新段
  • RoadSpawner: 在新马路段上随机生成物品和敌人,支持最小间距检查、最小距离过滤、前方锥形区域限制

对象池系统

// PoolManager 核心APIPoolManager.Instance.Spawn("EnemyName", parent);     // 从池中获取或实例化PoolManager.Instance.Return("EnemyName", obj);        // 归还到池中(禁用+回收)PoolManager.Instance.ClearAll();                       // 清空池(重新开始时调用)

特点:DontDestroyOnLoad 跨场景持久化,支持同步/异步分帧预加载。

开发过程

创建3D项目

打开创建项目的页面,发现里面有很多模版,不知道该用哪个,大概看了一下,3D相关模板的有好几个。

大概看了一下,关键区别应该就是URP、HDRP之类的,这些概念不熟悉,DeepSeek出场,问它就可以了,很快就搞明白了。

导入模型资源

既然是3D游戏,就得有模型,这时候需要了解unity中支持的3D模型格式,各种格式的模型之间的区别,还是依靠DeepSeek。这些常规的问题不需要多么强大的语言大模型,大多数语言大模型都能搞定。在DeepSeek的帮助下安装了一些Package

编写逻辑代码

项目创建好了,接下来就进入核心阶段,编写代码。编辑器用的是VS Code + CodeBuddy插件,现在有免费的积分可以薅,可以免费获得几千的积分。整个Demo写完,大概看了下,用了3000积分。

后面就是对话->运行游戏->总结问题->对话的循环了,不断对话过程中的一些经验(画重点):

  1. 完成一个小功能就push一下代码

这样方便看后续对话中代码改动。AI有时候确实也会误改代码,万一某次改错了,让他修复又修复不了的时候,还可以回退。虽然代码助手也有回退功能,但是如果对话轮数太多,要想回退还要往前翻,还不如在git中找到你要回退的版本,然后开启新对话,让AI继续干活。

  1. 发现代码写错,要尽量描述清楚问题

如果你能描述清楚错在哪里,期望的目标是啥样的,AI能比较准确的抓住重点,也能很快发现代码的问题,然后就可以修复了。如果你的描述比较模糊,它的思考时间就会变长,而且可能理解错。如果我发现他的思考时间变长,我会立马停止问题,撤回本次对话,重新描述问题。

  1. 适当的时候停止对话,重新开启新对话

AI模型的一个通病,每次对话都会把整个对话过程发给模型,虽然现在有很多方法来解决模型的记忆问题,但是对话一旦被压缩,很有可能失真。我更习惯于在完成某个功能后结束本次对话,然后开启新对话,让AI重新读取项目、理解项目,继续完成后续的新功能。

  1. 切换模型

如果遇到复杂逻辑或者是要做一些性能优化之类的工作,还是要尽量用更强大的模型,比如Claude,Gemini等等。这个时候就可以薅Google Antigravity中的模型能力,每周都可以免费用,虽然额度有限。

  1. 写说明文档

现在这些编程助手不止能写代码,也可以写文档。比如在开发过程中要给角色设置动画,就可以让它把整个设置动画的过程总结成文档放在项目中,后续在增加其他动画时就可以参考之前的文档,不容易出错。还可以写一些功能的使用文档,比如音效管理器、缓存池的使用方法等。

Demo效果

开发效率真的是大大提升,整个Demo的开发也就用了3,4天时间,这中间还包含一些折腾模型问题。在编写代码方面,AI真的可以取代程序员了。它有丰富的开发经验和熟悉各种开发语言(基于庞大的大模型训练数据),人类程序员很难做到。

独立开发者的机会真的来了,如果你还没使用AI,快快用起来吧,OPC之势不可阻挡。