惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
MyScale Blog
MyScale Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
人人都是产品经理
人人都是产品经理
C
Check Point Blog
宝玉的分享
宝玉的分享
B
Blog RSS Feed
博客园 - 三生石上(FineUI控件)
量子位
Martin Fowler
Martin Fowler
酷 壳 – CoolShell
酷 壳 – CoolShell
Jina AI
Jina AI
IT之家
IT之家
阮一峰的网络日志
阮一峰的网络日志
博客园 - 叶小钗
J
Java Code Geeks
The Cloudflare Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
腾讯CDC
P
Proofpoint News Feed
美团技术团队
H
Help Net Security
B
Blog
博客园_首页

机核

游戏性能旗舰最强之选,一加 Ace 6 至尊版国补到手价2999元起 6元钱自己更换电动车刹车线 《生化危机9:安魂曲》编剧Haris Orkin专访 摸金游戏?音乐游戏!暗区新赛季这把能弹的琴有何来历? 好评国产武侠SRPG《息风谷战略》免费DLC现已推出 | 机核 GCORES 碎片 《生化危机:安魂曲》将于5月实装首个免费更新内容 | 机核 GCORES 新锐东方游戏,谱写世界新章! 沉浸式恋爱视觉小说游戏《心象演算》免费试玩版现已正式上线 | 机核 GCORES 互动影游《代号三国:龙起》上线!穿越三国与曹操并肩、与佳人同行、与权谋博弈! 《老头收集梦想生活》,游戏酒桌会6,录音笔VOL.689 | 机核 GCORES 破界·共生——《白日梦:无限世界》五大核心游戏特点解析 价格已到史低,锐龙5 9600X/锐龙7 9700X正适合抄底 时间循环之旅即刻启程!《归环》一周目测试今日开启 热门在线韩游变魂游,洛奇衍生作能否打破“花瓶”魔咒? LG UltraGear evo 全新高端显示器系列:当“5K”遇见“AI”,不止强大,更懂热爱 反套路三国互动影游《代号三国:龙起》今日上线! 愿望单登记人数突破10万!备受瞩目的“女儿养成游戏” 《梦幻魔法公主》今日于Steam平台上线!限时八折优惠中 《黑神话:悟空》全球音乐会2026巡演将于4月29日12时开票 | 机核 GCORES “Snowguelike”生存肉鸽挖矿新作《蛙穿雪境》公布发售日期,5月7日正式上线 | 机核 GCORES 重塑移动办公、AI创作新境!全新华硕灵耀Air系列、ProArt 骁龙版震撼首发,创芯未来 均分88:《Saros》媒体评分汇总 | 机核 GCORES 上海烛龙公布合作遗迹探险游戏《吉时已到》首支预告片 | 机核 GCORES 首个独立游戏《萝薇日记》已上线Steam! 烛龙新IP《吉时已到》首曝,打造国内首款中式合作遗迹探险游戏 喜加一:《暗黑破坏神Ⅳ》国服现已开启限时免费领取本体活动 | 机核 GCORES 新版《生化危机》电影定于9月18日上映,官方网站现已上线 | 机核 GCORES 《冲就完事模拟器2》“星球大战”联动DLC正式宣布 | 机核 GCORES SteamController将于5月4日发售,售价99美元 | 机核 GCORES 事已至此,内存这么用也算省钱了,“2+1”非对称双通道应用实测
一个第三人称ACT框架——底层架构
凉州 · 2025-11-28 · via 机核

零、简单介绍

一个基于Unity制作的第三人称ACT框架 致力于创建一个配置简单、响应灵活的高速动作游戏:

  • 基于 Timeline 的技能系统: 所有的攻击、技能招式都在 Unity Timeline 中可视化编辑。

  • 基于 Animancer 的八向移动系统: 彻底抛弃了臃肿的 Animator 连线,使用代码直接驱动 2D 混合树。

  • 基于 Tag(标签)的黑板系统: 用标签来管理角色的当前状态,驱动动作切换

  • 多姿态 Locomotion: 已经实现了常规移动、长按冲刺、特定状态移动(如纳刀移动)的无缝切换。

制作效果展示

做这个框架期间,我花精力最多、推翻重写次数最多的,就是角色的动作底层架构。

其实让角色动起来很简单:写个脚本读取摇杆输入,再写个脚本监听按键放技能就行了。但我很快就撞上了南墙——当“移动系统”和“技能系统”同时运行,它们就会在底层疯狂抢夺角色的控制权,导致游戏里出现各种诡异的“滑步”、“指令被吞”或者“角色抽搐”。

为了把这些幽灵一样的 Bug 彻底杀干净,并且让未来的开发不再痛苦,我从零开始搭建了现在的这套动作管线。具体来说,我解决了以下几个核心问题:

一、 解决“抢夺方向盘”问题:引入中央仲裁者

痛点: 以前的架构里,负责跑动的脚本(小脑)和负责打斗的脚本(大脑)是平级的。它们只能互相“猜”对方在干什么,经常因为 Unity 底层执行顺序的微小差异,导致一帧的误判。

我的解法: 我引入了一个明确的 ActionStateManager 作为唯一的“中央仲裁者”。我把它想象成一个红绿灯系统:

  • 每一帧,系统都会先进行评估。如果玩家按下了攻击键且条件满足,仲裁者就会亮红灯,强制关闭移动系统的代码逻辑。

  • 当攻击结束,或者进入了可取消的后摇阶段,仲裁者再亮绿灯,把控制权明确地移交回移动系统。 收益: 逻辑变成了清晰的单行道。代码出了问题,我只需要在面板上看一眼当前是“Action 控制”还是“Locomotion 控制”,就能瞬间定位 Bug,再也没有“薛定谔的滑步”了。

二、 拒绝“屎山代码”:用数据驱动移动表现

痛点: 随着游戏推进,角色的移动方式越来越多。不仅有普通的走和跑,还有“按住闪避键的疾奔”、“收刀状态下的慢走”等等。如果全写在代码里,就是无数个 if-else,最后连我自己都不敢改。

我的解法: 我把“移动表现”剥离了出来,做成了可以在资源目录里右键创建的数据文件(ScriptableObject)。 每个文件里只存三样东西:准入条件(比如“当前是否收刀”)、对应的动画资源,以及速度倍率

收益: 底层的移动脚本现在变成了一个“无情的播放机器”。以后策划如果想加一个“残血瘸腿走”的状态,完全不需要我写一行代码。策划自己建一个数据文件,配上残血条件和瘸腿动画,丢进列表里就直接生效了。这种极度解耦的设计,大大释放了团队的生产力。

三、 死磕手感细节:消灭“1帧的抽搐”

痛点: 在动作游戏里,从“攻击状态”切回“移动状态”的那个瞬间,引擎往往会因为状态机的计算延迟,播放出 1 帧的“默认站立动作”,这在玩家眼里就是极其难受的视觉抽搐。

我的解法: 我放弃了传统的 Animator 连线,接入了 Animancer 这种基于代码的代码驱动动画库。在控制权交接的同一行代码、同一个生命周期内,系统会瞬间算出下一个该播的移动动画,并直接执行带有时间的平滑过渡(CrossFade)。

收益: 实现了真正意义上的“零帧延迟”。动作之间的衔接如丝般顺滑,保证了硬核动作游戏必须具备的极佳操作手感。

四、 把复杂逻辑可视化:所见即所得的“打断窗口”

痛点: ACT 游戏里经常有“招式后摇可以通过移动或闪避打断”的设计。如果用代码硬写时间(比如 if(time > 0.5f) 可以打断),调试起来简直是地狱。

我的解法: 我结合 Unity 的 Timeline,做了一套标签(Tag)系统。我在 Timeline 上拉一个自定义的色块轨道,色块覆盖的区域代表“禁止移动”。

收益: 策划只需要在图形化界面里,看着角色的动作,把那个色块稍微拖短一点,一个完美的“收招打断窗口”就做好了。底层系统每帧去读这个色块,色块一结束,立刻允许移动系统接管。这把极度复杂的底层逻辑,变成了直观的“涂色游戏”。

最后总结: 这套架构可能不是最炫技的,但它是我踩了无数坑之后,找到的最务实、最清晰的解法。“单线逻辑、显性状态、数据驱动”,这三个原则让我彻底摆脱了修 Bug 的泥潭,把精力真正还给了游戏玩法本身。

五、配置界面

角色Actor结构

1 / 2

Timeline编辑角色动作

1 / 4