课程定位与适用场景

Entitas进阶—武士2(第三季)专注于 Unity 游戏中 AI 模块的架构设计与逻辑实现。有别于第一季对 ETS 基础框架的全面铺陈,这一季将视角收缩至一个核心子系统——基于 GOAP(面向目标的动作规划)算法的 AI 行为树构建。课程以“武士”游戏为载体,深入讲解如何在 ECS 架构下解耦 AI 的状态管理、环境感知与动作执行。对于正在开发动作类或策略类游戏、且希望突破传统脚本式 AI 耦合痛点的开发者而言,这门课提供了从单体逻辑向组件化、数据驱动架构转型的具体路径。课程特别强调模块化设计,适合那些已理解基本 ECS 概念,但面临 AI 模块难以维护、扩展成本高的初、中级程序开发者。

学习门槛与前置建议

本课程是独立章节,无需强制预习 Entitas 基础系列即可直接观看,这降低了入门门槛。然而,由于内容涉及游戏 AI 算法的工程化落地,建议学习者具备以下基础:熟悉 Unity 引擎的基本操作;理解 C# 编程基础;对游戏对象的生命周期有一定认知;若曾接触过《游戏中的 AI 算法(第一季)》或 GOAP 理论,将更有助于理解架构背后的设计意图。初学者若对 ECS 的 Entity-Component-System 思想尚感陌生,可先快速浏览相关基础文档,建立“数据与逻辑分离”的初步认知,这将极大提升对本课架构设计的理解效率。课程适合有明确项目需求、希望快速构建可复用 AI 框架的实战型学习者。

学完能做什么与资料使用建议

完成本季课程后,学习者能够独立设计并实现一套基于 GOAP 的模块化 AI 系统。具体能力包括:构建支持动态目标规划的 AI 实体;在 ECS 框架下高效管理感知数据与行为状态;将复杂的决策逻辑拆分为可独立测试的组件;并掌握课程中穿插的性能优化技巧与编程最佳实践。你将能够处理如“巡逻-发现敌人-追击-攻击”等典型行为链,并具备根据游戏需求调整 AI 复杂度与响应速度的能力。建议学习时,结合代码示例动手复现核心模块,重点理解系统间的依赖关系与数据流走向。利用课程提供的架构思路,可尝试将所学应用到个人小型项目中,通过实际调试深化对 ECS 与 AI 结合的理解,最终形成可复用的开发模板。

课程目录

QQ_1763874746123.png (83.

46 KB,  ) 2025-11-23 13:

14 上传 课程介绍: 第三季主题:AI模块的架构设计及逻辑实现 本课程使用ECS架构实现武士这个游戏,这一季主要讲解GOAP AI模块在应用上的架构设计及逻辑实现 模块是基于我的另外一个课程《游戏中的AI算法(第一季)》,在这一季中,针对AI的实现,及模块化设计进行了系统的讲解 课程中还会穿插各种优化及编程小知识,希望大家用心听讲哈! 第三季是完全独立的AI模块部分,没有学习Entitas也能观看 适合人群:初、中级程序 课程目录: 000-演示视频.mp4
 101-课程内容简介.mp4
 102-GamePart部分设计思路.mp4
 103-初始化GamePart.mp4
 104-细分游戏区域.mp4
 105-判断游戏区域开启状态.mp4
 106-墙体部分的结构.mp4
 107-初始化锁子特效脚本.mp4
 108-执行Dotween动画之前的注意事项.mp4
 109-编写锁子动画.mp4
 110-优化动画效果.mp4
 111-墙体碰撞控制脚本.mp4
 112-完成墙体部分的初始化.mp4
 113-跟随动画设计思路.mp4
 114-添加跟随脚本.mp4
 115-完成相机动画的初始化及调用.mp4
 116-调整相机父物体初始化位置.mp4
 117-完成跟随位置调整.mp4
 118-设计移动时的相机动画.mp4
 119-添加方向判断.mp4
 120-添加移动时的相机动画.mp4
 121-完善动画效果.mp4
 122-优化人物转身动作.mp4
 123-解决人物撞墙后悔弹飞的问题.mp4
 124-添加人物的碰撞检测.mp4
 125-优化人物撞墙抖动问题.mp4
 126-解决转向后原地不动的问题.mp4
 127-添加游戏开始触发代码.mp4
 128-完成关卡触发.mp4
 129-优化代码结构.mp4
 130-生成敌方单位功能设计.mp4
 131-添加敌人配置.mp4
 132-生成敌方单位的结构设计.mp4
 133-管理类的生成方法实现.mp4
 134-加载敌方预制部分.mp4
 135-完成生成敌方单位的配置部分.mp4
 136-调整配置结构能够方便的获取数据.mp4
 137-完成敌方单位的数据解析.mp4
 138-集合枚举器的坑.mp4
 139-解决json读取的错误.mp4
 140-验证当前功能.mp4
 141-修改PointID获取方式.mp4
 201-使用GOAP编写怪物AI.mp4
 202-简述目标驱动逻辑.mp4
 203-简述AI驱动逻辑.mp4
 204-整理当前AI行为逻辑.mp4
 205-添加AI打印组件.mp4
 206-创建IdleAction.mp4
 207-动作判定的简单讲解.mp4
 208-动作处理器的简单讲解.mp4
 209-动作处理器的执行逻辑.mp4
 210-攻击待机状态.mp4
 211-攻击待机状态逻辑.mp4
 212-移动动作的状态逻辑.mp4
 213-创建数据配置.mp4
 214-AI架构内的数据获取.mp4
 215-完成移动部分逻辑.mp4
 216-受伤动作数据整理.mp4
 217-受伤的常见逻辑整理.mp4
 218-受伤逻辑实现.mp4
 219-攻击逻辑整理.mp4
 220-死亡动作判定思路.mp4
 221-死亡部分判定逻辑实现.mp4
 222-后退部分数据逻辑.mp4
 223-代码耦合度和代码复用的取舍.mp4
 224-实现数据类Map.mp4
 225-动作的两种类型.mp4
 226-警戒动作的实现.mp4
 227-初始化动作管理类.mp4
 228-目标部分执行逻辑.mp4
 229-目标部分状态数据添加.mp4
 230-完成已有组件的初始化部分.mp4
 231-添加视线触发器.mp4
 232-完成AI基础组件部分的初始化工作.mp4
 233-动态添加脚本思路.mp4
 234-根据限定名动态添加脚本.mp4
 235-AI代理的初始化.mp4
 236-怪物基础数值配置.mp4
 237-完成敌方基础数据类的初始化.mp4
 238-初始化AI的游戏数据.mp4
 239-调整已有逻辑.mp4
 240-修改初始化部分的错误.mp4
 241-整理动作逻辑及调整状态命名.mp4
 242-调整Action部分的状态数据.mp4
 243-调整Goal部分的状态数据.mp4
 244-完善Handler部分逻辑.mp4
 245-完善配置数据.mp4
 246-修改数据调用部分.mp4
 247-已有AI逻辑演示.mp4
 248-勿以效果小而不优化.mp4
 301-功能模块化的好处.mp4
 302-设计上要保证功能的独立性.mp4
 303-View层和Control层的分离.mp4
 304-ViewMgr的接口设计.mp4
 305-View部分的基础逻辑.mp4
 306-View层基础初始化逻辑设计.mp4
 307-AI部分整体结构设计.mp4
 308-Model部分的设计.mp4
 309-添加ModelMgr基础逻辑.mp4
 310-Model部分的初始化.mp4
 311-初始化特效管理类.mp4
 312-音效管理类.mp4
 313-音效部分功能.mp4
 314-在架构内获取AudioSource.mp4
 315-完成游戏数据初始化时机的调整.mp4
 316-音效加载部分的逻辑调整.mp4
 317-音效加载部分功能完善.mp4
 318-动画组件部分.mp4
 319-动画组件初始化.mp4
 320-代码组件的粒度问题.mp4
 321-初步演示效果.mp4
 322-修正演示问题.mp4
 323-系统对象的初始化问题.mp4
 324-View部分状态机的初始化.mp4
 325-添加拔刀收刀动画.mp4
 326-MVC的解耦思路.mp4
 327-警戒部分数据的初始化.mp4
 328-在Handler内获取数据.mp4
 329-你想到了几种解决方式.mp4
 330-调整获取数据方法.mp4
 331-错误检测是很重要的.mp4
 332-完成数据部分的调整.mp4
 333-演示现有逻辑.mp4
 334-解决Map和Handler的时序问题.mp4
 335-动作状态与动作的分离.mp4
 336-规范命名及警戒部分动作的定义.mp4
 337-进入警戒状态部分逻辑.mp4
 338-完成警戒部分动作与视图的逻辑与配置.mp4
 339-测试当前已有功能.mp4
 340-使用扩展方法优化代码.mp4
 341-在目标中添加警戒逻辑.mp4
 342-添加后退动画.mp4
 343-数据类抽象.mp4
 344-优化View层代码结构.mp4
 345-优化Handler代码结构.mp4
 346-完成动画部分初步演示.mp4
 347-优化获取数据逻辑.mp4
 348-不要去修改,要去扩展.mp4
 349-Injure部分代码结构设计.mp4
 350-Action部分的逻辑分离.mp4
 351-创建身体触发器.mp4
 352-项目中的代码优化程度.mp4
 353-添加unity触发器脚本.mp4
 354-初始化对武器碰撞的监听.mp4
 355-获取中心点数据.mp4
 356-自己创造条件获取数据.mp4
 357-完成受伤部位的逻辑判断.mp4
 358-完成受伤View部分的逻辑.mp4
 359-完成测试代码.mp4
 360-初步进行测试.mp4
 361-修正监听部分的逻辑.mp4
 362-添加碰撞信息部分逻辑.mp4
 363-添加动作部分判定逻辑.mp4
 364-解决受伤部分的执行问题.mp4
 365-动态调整受伤动作优先级.mp4
 366-死亡动画的分析.mp4
 367-死亡动作的逻辑思路.mp4
 368-扩展身体触发器.mp4
 369-完成头部打击触发器.mp4
 370-完成身体触发器的扩展.mp4
 371-死亡动作处理器部分逻辑.mp4
 372-整理动作执行逻辑.mp4
 373-完成死亡Action部分的设计.mp4
 374-动作初始化及VIew部分逻辑.mp4
 375-完成普通死亡动画部分的逻辑.mp4
 376-加载特殊死亡动画部分.mp4
 377-在view内获取当前人物对象.mp4
 378-特殊死亡动画的转换与执行.mp4
 379-普通死亡动画的逻辑补充.mp4
 380-编写死亡部分测试代码.mp4
 381-发现死亡动画部分逻辑问题.mp4
 382-管理类中初始化特殊动画.mp4
 383-特殊动画的缓存部分.mp4
 384-为啥实际项目很少重构代码.mp4
 385-完成动画执行部分的修改.mp4
 386-修改死亡动作的判定.mp4
 387-普通死亡效果演示.mp4
 388-解决逻辑问题的思维误区.mp4
 389-控制trigger的执行顺序.mp4
 390-调整TriggerMgr部分逻辑.mp4
 391-DeadAction优先级优化思路.mp4
 392-完成死亡动作部分优先级的调整思路.mp4
 393-动画部分总结.mp4
 401-音效特效的实现思路.mp4
 402-实现特效管理类.mp4
 403-添加特效控制逻辑.mp4
 404-接口参数尽量简单.mp4
 405-修改音效部分的小问题.mp4
 406-受伤部分音效特效.mp4
 407-编码习惯才是提高效率最高效的途径.mp4
 408-死亡部分特效的添加.mp4
 409-地面血迹特效思路讲解.mp4
 410-Low不代表差.mp4
 411-特效效果演示.mp4
 501-内存池原理解析.mp4
 502-项目开发的注意事项.mp4
 503-添加对象池的逻辑部分.mp4
 504-使用泛型优化代码性能.mp4
 505-添加生成与回收部分的逻辑.mp4
 506-生成方法逻辑.mp4
 507-隐藏方法逻辑.mp4
 508-优化代码及部分自动销毁逻辑.mp4
 509-创建数据结构.mp4
 510-调整数据初始化部分的结构.mp4
 511-添加子项管理类.mp4
 512-插播一条小知识.mp4
 513-通用性调整.mp4
 514-命名规范很重要.mp4
 515-自动销毁部分逻辑.mp4
 516-异步操作逻辑.mp4
 517-池的启动部分逻辑.mp4
 518-池的管理思路.mp4
 519-任何技术都存在缺点.mp4
 520-结构体初始化小技巧.mp4
 521-完成特效池的初始化.mp4
 522-特效生成逻辑的替换.mp4
 523-添加池的层级逻辑.mp4
 524-调整生成部分逻辑.mp4
 525-添加预加载部分的逻辑.mp4
 526-优化代码结构.mp4
 527-显示子项逻辑的通用性.mp4
 528-完成特效的自动回收.mp4
 529-修正特效加载过多的问题.mp4
 530-修正特殊死亡动画加载过多的问题.mp4
 531-特殊死亡预制不要用内存池管理.mp4
 532-完成动画管理部分代码的优化.mp4
 533-修改特殊死亡动画播放时的问题.mp4