Unity战斗系统受击反馈设计:从架构到性能优化的实战指南
1. 项目概述为什么受击反馈是战斗系统的灵魂在任何一个动作或角色扮演游戏中战斗系统的“手感”好坏往往直接决定了玩家的留存意愿。而“手感”这个看似玄学的概念其核心构成之一就是受击反馈。想象一下你操控的角色挥剑砍中敌人敌人却像一块木头一样毫无反应或者你被怪物击中自己只是血条减少身体却纹丝不动——这种体验无疑是糟糕的它会瞬间将玩家从精心构建的游戏世界中抽离出来。受击反馈就是游戏角色在受到攻击时给予玩家的一系列视觉、听觉和逻辑上的响应。它远不止是播放一个受伤动画那么简单。一个优秀的受击反馈系统需要综合运用动画、粒子、音效、屏幕特效、物理、逻辑状态等多种技术手段让每一次攻击的“命中感”都扎实可信。它告诉玩家“你打中了而且这一下很疼”或者“你被打中了需要立刻做出反应”。在Unity中构建这样一套系统是战斗模块开发从“功能实现”迈向“体验打磨”的关键一步。本篇文章将从一个实战开发者的角度深入拆解Unity战斗系统中受击反馈的设计思路、核心实现与那些容易被忽略的细节坑点。无论你是正在开发自己的独立游戏还是希望优化现有项目的战斗体验这些从一线项目中总结的经验都能为你提供直接的参考。2. 受击反馈系统的整体架构设计设计受击反馈系统首先要摒弃“哪里需要哪里加”的脚本思维转而采用一种更模块化、更易于管理和扩展的架构。我们的目标是建立一个中心化的反馈调度器它能接收来自游戏内任何攻击事件的“受击请求”并根据预设的规则将具体的反馈任务分发给各个专业的子系统去执行。2.1 核心组件与数据流一个典型的受击反馈系统可以抽象为以下几个核心部分伤害源Damage Source发起攻击的对象如玩家角色、敌人、陷阱等。它携带本次攻击的“伤害数据包”Damage Data。伤害数据包Damage Data Struct一个结构体封装单次攻击的所有相关信息。这是系统间通信的“协议”。受击体Hurtable可以接受伤害的物体通常是一个接口IHurtable或抽象基类。角色、可破坏物件等都应实现它。反馈调度器Feedback Dispatcher系统的核心大脑。它监听伤害事件解析Damage Data并决定触发哪些具体的反馈效果。反馈执行器Feedback Executor具体的效果实现单元如动画控制器、粒子播放器、音效管理器、相机抖动器等。它们之间的协作流程如下攻击命中 - 伤害源生成Damage Data - 调用受击体的TakeDamage(Damage Data)方法 - 受击体将Damage Data转发给反馈调度器 - 调度器根据Damage Data中的类型、强度等信息调用对应的反馈执行器 - 各执行器同步或异步地播放动画、粒子、音效等。2.2 Damage Data 的设计考量Damage Data是系统的血液设计得好能极大提升灵活性和可维护性。它至少应包含以下字段[System.Serializable] public struct DamageData { public GameObject Instigator; // 伤害来源对象 public Vector3 HitPoint; // 世界空间命中点 public Vector3 HitNormal; // 命中点法线用于确定击退方向、粒子喷射方向 public float DamageAmount; // 基础伤害值 public float ImpactForce; // 冲击力大小用于物理反馈 public DamageType DamageType; // 伤害类型枚举如Physical, Fire, Ice等 public bool IsCriticalHit; // 是否暴击 // 可以扩展更多字段如附加状态中毒、眩晕、音效ID、特效预制体名等 }采用结构体而非类是出于性能考虑值类型避免GC。通过这个结构体反馈调度器就能获得决定如何反馈的全部信息。例如HitNormal可以用于决定被击退的方向DamageType可以用于决定播放哪种属性的受击特效火焰伤害冒火冰霜伤害结冰。实操心得枚举与ScriptableObject的权衡对于DamageType初期使用枚举简单快捷。但当伤害类型增多且每种类型需要关联复杂的配置如颜色、基础特效、抗性系数时强烈建议改用ScriptableObject创建“伤害类型资产”。这样策划或美术可以在不修改代码的情况下调整和创建新的伤害类型及其全套反馈表现。3. 核心反馈效果的实现与细节打磨有了清晰的架构接下来我们深入各个反馈模块看看如何实现并优化它们。3.1 动画反馈让角色“动”起来动画是受击反馈中最直接的部分。切忌简单地使用Animator.Play(“Hurt”)这会导致动画中断不自然和状态机混乱。推荐方案动画层与动画覆盖在角色的Animator Controller中专门建立一个用于受击反馈的动画层Layer将其权重设置为1并设置为Override覆盖模式。当收到受击指令时在该层播放受击动画。由于是覆盖层它不会影响基础层如移动、待机的逻辑播放完毕后会自动恢复与基础动画平滑融合。// 在反馈执行器中 public class AnimationFeedback : MonoBehaviour { private Animator _animator; private int _hurtLayerIndex; void Start() { _animator GetComponentAnimator(); _hurtLayerIndex _animator.GetLayerIndex(HurtLayer); } public void PlayHurtAnimation(DamageData data) { // 可以根据伤害来源方向播放不同动画如Hurt_Front, Hurt_Back string animName DetermineHurtAnimByHitDirection(data.HitPoint); _animator.Play(animName, _hurtLayerIndex, 0f); // 从第0帧开始播放 // 也可以使用CrossFade实现更平滑的过渡 // _animator.CrossFadeInFixedTime(animName, 0.1f, _hurtLayerIndex); } private string DetermineHurtAnimByHitDirection(Vector3 hitPoint) { // 计算命中点相对于角色正面的方向 Vector3 localHitDir transform.InverseTransformPoint(hitPoint); if (localHitDir.z 0) return Hurt_Front; else return Hurt_Back; } }注意事项动画打断与优先级需要定义反馈的优先级。例如“死亡”动画的优先级应高于“受击”动画。当播放死亡动画时新的受击指令应该被忽略。可以在调度器中增加一个简单的状态判断来实现。3.2 视觉特效命中点的艺术粒子特效能极大地增强命中瞬间的打击感。这里的关键是精准定位和动态参数。命中点特效在DamageData.HitPoint位置沿HitNormal方向实例化一个粒子预制体。GameObject hitVFX Instantiate(hitEffectPrefab, data.HitPoint, Quaternion.LookRotation(data.HitNormal)); Destroy(hitVFX, 2f); // 记得回收角色身上特效对于持续性的效果如燃烧可能需要将粒子系统作为子物体附加到角色骨骼上如胸口并随着角色移动。屏幕后处理特效当玩家自己受到伤害时可以短暂启用一个全屏效果如屏幕边缘泛红、画面模糊或震动。这可以通过Unity的Post-Processing Volume配合脚本控制来实现给玩家最直接的危机提示。踩坑记录粒子池与性能战斗激烈的场景中频繁的Instantiate和Destroy会产生大量GC垃圾回收导致卡顿。务必使用对象池Object Pool来管理常用的受击特效。Unity自带的ObjectPool类需using UnityEngine.Pool;或自己实现一个简单的池都能极大提升性能。3.3 物理反馈赋予重量感物理反馈让受击不再是“播片”而是与游戏世界产生了真实的互动。击退/击飞通过Rigidbody.AddForce或CharacterController的移动来实现。if (TryGetComponentRigidbody(out Rigidbody rb)) { Vector3 forceDir (transform.position - data.Instigator.transform.position).normalized; forceDir.y 0.5f; // 加入一点向上的分量形成击飞效果 rb.AddForce(forceDir * data.ImpactForce, ForceMode.Impulse); }关键点力的大小ImpactForce应与伤害值或武器重量挂钩方向应根据命中点和伤害源位置动态计算这样从侧面攻击和从正面攻击的击退效果才会不同。布娃娃系统Ragdoll对于死亡或受到巨大伤害时激活布娃娃系统能产生极具冲击力的效果。通常的做法是平时禁用布娃娃碰撞体只使用动画在特定时刻禁用Animator启用所有Rigidbody的物理模拟。3.4 音频反馈不可或缺的氛围组音效需要做到分层和随机。分层一次受击至少包含两个音效层一是武器命中肉体的声音如“噗”二是角色痛苦的哼叫声。它们应同时触发。随机避免同一个音效反复播放导致的枯燥感。准备多个不同的受击音效和哼叫音效播放时随机选取一个。public AudioClip[] fleshHitClips; public AudioClip[] gruntClips; audioSource.PlayOneShot(fleshHitClips[Random.Range(0, fleshHitClips.Length)]); audioSource.PlayOneShot(gruntClips[Random.Range(0, gruntClips.Length)]);空间化对于3D游戏确保音效组件设置为3D Spatial Blend这样音效的音量和左右声道会根据受击者与摄像机玩家的相对位置而变化沉浸感更强。3.5 UI反馈信息的直观传达血条减少是最基本的UI反馈但可以做得更细腻。伤害数字Damage Popup在命中点上方飘出一个显示伤害值的文本。可以使用Unity的UI系统结合世界空间画布World Space Canvas实现或者使用TextMeshPro直接创建3D文本。加入简单的动画向上飘动、渐隐、缩放和区分颜色普通伤害白色暴击伤害黄色或红色能极大提升视觉效果。屏幕血迹或方向指示器当玩家角色受击时在屏幕边缘对应受击方向的位置显示一个短暂的红色渐现渐隐效果提示玩家攻击来自何方。生命值变化缓动血条减少不要是瞬间跳变而应该有一个短暂的缓动动画。这不仅能提升视觉舒适度也让玩家对伤害量有更清晰的感知。4. 集成与调度让所有反馈协同工作现在我们有了一堆零散的反馈模块需要一个强大的调度中心把它们串起来。我推荐使用基于事件的调度器。public class FeedbackManager : MonoBehaviour { // 使用UnityEvent便于在Inspector中直观配置简单的反馈 public UnityEventDamageData OnHurtFeedback; // 或者使用更灵活的委托/事件系统供其他脚本订阅 public event System.ActionDamageData OnDamageTaken; // 持有各个专业执行器的引用 [SerializeField] private AnimationFeedback _animationFeedback; [SerializeField] private VFXFeedback _vfxFeedback; [SerializeField] private AudioFeedback _audioFeedback; [SerializeField] private UIFeedback _uiFeedback; void OnEnable() { OnDamageTaken ProcessFeedback; } void OnDisable() { OnDamageTaken - ProcessFeedback; } // 由受击体如PlayerHealth调用 public void TriggerFeedback(DamageData data) { OnDamageTaken?.Invoke(data); OnHurtFeedback?.Invoke(data); // 触发配置的UnityEvent } private void ProcessFeedback(DamageData data) { // 1. 处理无敌状态等逻辑过滤 if (IsInvincible()) return; // 2. 根据伤害类型和强度决定反馈组合可配置 FeedbackProfile profile GetFeedbackProfile(data.DamageType); // 3. 调度各模块 if (profile.PlayAnimation) _animationFeedback?.PlayHurtAnimation(data); if (profile.PlayVFX) _vfxFeedback?.PlayHitEffect(data); if (profile.PlayAudio) _audioFeedback?.PlayHurtSound(data); if (profile.ShowUI) _uiFeedback?.ShowDamagePopup(data); // 4. 处理特殊反馈如相机抖动通常是个单例管理器 CameraShake.Instance.Shake(data.DamageAmount / 10f, 0.2f); } private FeedbackProfile GetFeedbackProfile(DamageType type) { // 这里可以从一个字典或ScriptableObject配置表中获取预设 // 例如FireDamageProfile, IceDamageProfile等 // 返回该类型伤害对应的反馈配置哪些效果开启强度如何 } }这种设计的优势在于解耦。PlayerHealth脚本只负责计算血量然后调用FeedbackManager.TriggerFeedback(data)。至于具体怎么表现FeedbackManager全权负责。策划可以通过调整FeedbackProfile资产轻松地修改“火焰伤害”的反馈表现而无需程序员修改代码。5. 高级技巧与性能优化当基础系统跑通后下面这些技巧能让你的受击反馈更上一层楼并保持游戏流畅运行。5.1 反馈强度与伤害挂钩不要让所有受击看起来都一样。将反馈的强度与DamageData.DamageAmount或ImpactForce关联起来。动画轻微伤害播放一个小的后仰动画巨大伤害播放一个长的踉跄或被击飞动画。粒子伤害越高命中的火花粒子数量越多、尺寸越大。屏幕抖动抖动幅度和时长随伤害值增加。音效可以通过AudioSource的pitch和volume微调高伤害时播放音调更低沉、音量更大的哼叫声。5.2 受击方向差异化处理如前所述根据攻击命中的方向前、后、左、右播放不同的动画。更进一步击退的方向也应该基于此计算让战斗的空间感更强。5.3 对象池的全面应用不仅是粒子特效伤害数字、甚至某些音效的AudioSource都可以纳入对象池管理。对于移动平台或低端设备这是保证帧率稳定的关键。5.4 使用ScriptableObject进行数据配置将不同敌人类型、不同武器、不同伤害类型的受击反馈参数如使用的特效预制体、音效数组、动画名称、击退力系数全部配置在ScriptableObject资产中。这实现了数据与逻辑的分离让策划和美术能够独立工作大大提升了开发效率和迭代速度。5.5 网络同步考虑针对多人游戏如果是多人游戏受击反馈需要在所有客户端上同步表现。你需要通过网络同步DamageData的关键信息命中点、伤害类型、伤害源网络ID然后在每个客户端的本地触发反馈。注意粒子、音效等纯粹的表现层内容不需要同步状态只需同步触发指令即可。6. 常见问题与调试技巧在实际开发中你肯定会遇到各种奇怪的问题。这里记录一些典型场景和排查思路。问题1受击动画播放不流畅总是卡顿一下。排查检查是否在每次受击时都使用了Animator.Play这可能会打断当前动画过渡。优先使用CrossFade。检查受击动画层Layer的权重和混合模式是否正确设置。确保基础层如移动的动画状态没有被错误重置。工具使用Unity的Animation Window和Animator窗口实时观察动画状态和参数的变化。问题2命中特效位置不对飘在空中或嵌进模型里。排查DamageData.HitPoint和HitNormal传递是否正确。在攻击检测代码如射线检测中确保获取的是碰撞点的世界坐标RaycastHit.point和法线RaycastHit.normal。调试在PlayHitEffect方法中用Debug.DrawRay(data.HitPoint, data.HitNormal, Color.red, 2f)画一条线可视化查看命中点和法线方向确认数据准确。问题3大量敌人同时受击时游戏变卡。排查首要怀疑对象是GC。打开Unity Profiler的CPU和Memory模块观察GC Alloc的峰值是否与受击事件同步。解决立即实施对象池管理所有动态生成的物体特效、伤害数字。检查音效播放是否过于频繁可以考虑对同一帧内多个相似音效进行合并或限制播放次数。问题4反馈效果“软绵绵”没有打击感。综合检查打击感是多种反馈叠加的结果。按以下清单逐一核对并加强动画受击动画的起始帧是否有快速的、幅度大的位移或旋转关键帧间距要小特效命中特效是否足够明亮、粒子喷射速度是否够快是否加入了短暂的“帧冻结”Time.timeScale瞬间降低效果音效音效本身是否足够有冲击力低频充足是否与画面同步相机是否加入了轻微、快速的相机抖动节奏所有反馈的触发时机是否高度同步动画、特效、音效应在同一帧或相邻帧内触发延迟会严重削弱打击感。问题5想为某个特定Boss设计独一无二的受击反馈。方案这正是模块化架构的优势所在。你可以为这个Boss创建一个独有的BossFeedbackManager继承自通用的FeedbackManager然后重写ProcessFeedback方法。在这个方法里先执行一些特殊的反馈逻辑比如播放一段特殊的受击音效、激活某个场景物体然后再调用base.ProcessFeedback(data)执行通用的反馈。这样既复用了基础功能又实现了定制化。构建受击反馈系统的过程本质上是在为游戏注入“灵魂”。它没有标准答案需要开发者像调音师一样反复调试动画的幅度、特效的强度、音效的音量和相机的震动直到找到那个让玩家感觉“拳拳到肉”的完美组合。从建立一个清晰的数据驱动架构开始逐步打磨每一个反馈细节你的战斗系统必将脱颖而出。

相关新闻

26DMA-11:本地AI编程Agent从代码生成到自动执行的完整指南

26DMA-11:本地AI编程Agent从代码生成到自动执行的完整指南

如果你是一位开发者,最近在关注 AI 编程助手,可能会发现一个现象:GitHub 上那些标榜“智能”、“全能”的 Agent 项目越来越多,但真正能让你在本地顺畅跑起来、解决实际编码问题的,却少之又少。要么是环境配置复杂到劝…

2026/8/4 6:18:32 阅读更多 →
计算机毕业设计之基于Spring Boot框架的流浪动物救助平台设计与实现

计算机毕业设计之基于Spring Boot框架的流浪动物救助平台设计与实现

在网络计算机快速发展的时代,信息管理系统已成为社会现代化发展中有着重要的作用。随着信息管理系统的不断添加,传统的人工管理易出错,且双方缺少信息关联和沟通。因此,建立一个依托互联网的流浪动物救助平台来建立一个交流和沟通的渠道势在必…

2026/8/4 6:17:31 阅读更多 →
笔记本内置硬盘损坏,北京德智康不开机电脑数据取出

笔记本内置硬盘损坏,北京德智康不开机电脑数据取出

笔记本内置硬盘损坏,北京德智康不开机电脑数据取出 笔记本突然黑屏无法开机,维修检测判定硬盘故障,电脑维修商家只负责更换硬盘,无法取出硬盘内桌面文档、工作资料。很多用户担心笔记本内部资料无法导出,又害怕随便拆机…

2026/8/4 6:17:31 阅读更多 →

最新新闻

从零构建AI智能体:基于LangChain的ReAct模式实战指南

从零构建AI智能体:基于LangChain的ReAct模式实战指南

在实际 AI 项目开发中,我们常常遇到这样的困境:大语言模型(LLM)本身能力强大,能说会道,但让它独立完成一个复杂的、多步骤的任务时,却常常表现得像个“健忘的专家”——它可能忘记上一步的指令&…

2026/8/4 7:12:54 阅读更多 →
CNN新闻精听法:10分钟高效提升英语听力的系统方案

CNN新闻精听法:10分钟高效提升英语听力的系统方案

之前为了提升英文听力,尝试过各种方法,从泛听到精听,效果总是不尽如人意,要么材料太枯燥坚持不下去,要么难度不合适打击信心。直到我开始尝试每天坚持听10分钟CNN新闻,并配合一套系统的方法,听力…

2026/8/4 7:12:54 阅读更多 →
企业级网络安全纵深防御体系设计与实践

企业级网络安全纵深防御体系设计与实践

1. 企业级网络安全纵深防御方案设计概述企业级网络安全纵深防御(Defense in Depth)不是简单的安全产品堆砌,而是一套基于风险管理的动态防护体系。我在为多家金融和互联网企业设计安全方案时发现,90%的安全事件都源于防御层次单一…

2026/8/4 7:12:54 阅读更多 →
DVWA靶场XSS攻防实战:从反射型漏洞到安全编码的思维演进

DVWA靶场XSS攻防实战:从反射型漏洞到安全编码的思维演进

1. 项目概述:一次完整的XSS攻防思维训练最近在带新人做安全测试的入门训练,我总会把DVWA靶场的XSS(Reflected)关卡作为第一个实战点。这不仅仅是因为它经典,更因为从Low到Impossible的四个难度等级,完美地勾…

2026/8/4 7:12:54 阅读更多 →
从XML数据解析到XSS防御:前端安全实战指南

从XML数据解析到XSS防御:前端安全实战指南

1. 项目概述:从游戏到实战的XSS防御思维最近在玩一个叫“Secure Code Game”的编程安全游戏,里面有个叫“Planet XMLon”的关卡,专门考验开发者对XSS(跨站脚本攻击)的防御能力。这让我想起了很多新手,甚至是…

2026/8/4 7:12:54 阅读更多 →
UE5崩溃排查实战指南:从访问违规到内存泄漏的完整解决方案

UE5崩溃排查实战指南:从访问违规到内存泄漏的完整解决方案

1. 项目概述:UE5崩溃,开发者绕不开的“坎”如果你正在用虚幻引擎5(UE5)做项目,无论是独立游戏、影视动画还是数字孪生,那么“崩溃”这个词对你来说绝对不陌生。它就像一个不请自来的访客,在你最…

2026/8/4 7:11:54 阅读更多 →

日新闻

AI Agent白手起家26: 使用标准事件驱动大模型实践

AI Agent白手起家26: 使用标准事件驱动大模型实践

纲要 练习目标:掌握大模型标准事件的调用回顾 LangChain 中的核心标准事件 invokestreambatchastream_eventswith_structured_output 环境准备实战代码:多种事件调用对比 同步调用与流式输出批量处理异步事件流监听结构化输出 运行说明与预期结果总结与扩…

2026/8/4 0:00:40 阅读更多 →
dealsea是什么?跨境卖家必知的美国deal站入门指南

dealsea是什么?跨境卖家必知的美国deal站入门指南

说实话,第一次听说美国这个老牌折扣网站的跨境卖家,十个有八个会问同一个问题:这个平台到底是干嘛的?我见过一个做家居出口的朋友,他在亚马逊上月销二十万美金,却从来没用过它。我给他看了首页——一屏一屏…

2026/8/4 0:01:40 阅读更多 →
清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

通讯作者:邓兵、刘建国通讯单位:清华大学DOI:https://doi.org/10.1021/acs.est.6c00603研究背景稀土元素(REEs)是清洁能源技术与电子器件不可或缺的核心原料,然而传统提取方式依赖能耗高、排放大的采矿与强…

2026/8/4 0:01:40 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/3 4:58:13 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/3 1:53:31 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/4 5:26:40 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/3 13:07:03 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/3 5:19:38 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/3 8:27:36 阅读更多 →