Unity CPU性能优化实战:从主线程瓶颈到Job System的全面解析
1. 项目概述从“卡顿”到“流畅”的CPU性能探索最近在做一个移动端的Unity项目测试机上一跑帧率曲线跟心电图似的时不时给你来个骤降。打开Profiler一看好家伙CPU Usage那栏红得发紫主线程Main Thread几乎被占满了。这场景估计做过性能优化的朋友都深有体会。CPU性能优化在Unity开发里是个老生常谈却又永不过时的话题。它不像GPU优化那样很多时候有现成的工具和参数可以调CPU的问题往往更隐蔽更依赖于你对代码逻辑、引擎机制和项目架构的理解。这次我就把在排查和解决CPU性能瓶颈过程中整理的学习笔记和实战心得分享出来。无论你是正在被性能问题困扰的开发者还是想提前规避风险的初学者希望这些从实际项目中踩坑得来的经验能帮你更高效地定位问题让你的项目跑得更丝滑。2. CPU性能瓶颈的核心成因与排查思路2.1 理解Unity的主线程与渲染线程在深入优化之前必须先理解Unity的线程模型。我们常说的“CPU性能”在Unity Profiler的CPU Usage区域主要关注的是主线程Main Thread和渲染线程Render Thread的耗时。主线程这是游戏逻辑的“大脑”。你的所有MonoBehaviour脚本的Update、FixedUpdate、LateUpdate物理计算如果使用Unity Physics、动画状态机更新、UI布局与重建Canvas、资源加载与实例化Instantiate、垃圾回收GC触发等绝大部分游戏逻辑都运行在这个线程上。它是单线程的意味着所有任务必须排队执行。任何一个函数耗时过长都会直接阻塞后续所有逻辑导致帧率下降。渲染线程负责接收主线程提交的渲染命令Draw Call并将其转换为GPU能够理解的指令。虽然它是独立的线程但其工作依赖于主线程的准备。如果主线程提交命令太慢渲染线程就会空闲等待反之如果渲染线程处理不过来通常是因为Draw Call过多或过于复杂主线程在提交完命令后也可能需要等待。我们优化CPU Usage首要目标就是降低主线程的每帧耗时让它能在16.6ms对应60FPS或33.3ms对应30FPS内完成所有工作。2.2 Profiler你的第一且最重要的工具没有数据支撑的优化都是耍流氓。Unity Profiler是性能分析的基石。打开Window - Analysis - Profiler确保连接了你的运行设备或编辑器。关键查看姿势切换到Timeline视图这比Hierarchy视图更直观。你可以清晰地看到每一帧中主线程上各个函数的耗时条。关注最耗时的顶部函数CPU图表通常按耗时排序。排在最前面的几个就是你的“性能刺客”。点开它们查看完整的调用堆栈Call Stack这能帮你定位到具体是哪行代码、哪个组件出了问题。善用“Deep Profile”与“Call Stacks”Deep Profile会记录所有函数的调用数据极其详细但对性能影响巨大只适合在编辑器中对小范围场景进行短时间分析。Call Stacks在Profiler窗口右上角设置中开启。它能在不开启Deep Profile的情况下为你标记出的耗时函数提供有限的调用堆栈信息是平衡性能和诊断精度的好选择。注意GC.Collect的调用在CPU图表中如果看到GC.Collect占用了大量时间说明你的代码产生了大量垃圾触发了垃圾回收。这是一个非常明确的优化信号。注意在编辑器模式下运行Profiler其数据与真机尤其是移动端会有差异。编辑器本身有开销且硬件性能不同。最终的性能测试和验证一定要在目标真机上进行。可以使用Unity的Development Build配合Autoconnect Profiler功能在真机上运行并远程连接Profiler查看数据。2.3 常见CPU性能“重灾区”速查根据经验以下模块是CPU性能问题的常客在分析Profiler时应优先审视模块可能的高开销操作Profiler中的表现脚本逻辑复杂的Update循环、频繁的Find/GetComponent、未优化的算法如嵌套循环、大量反射操作。主线程上出现自定义函数名耗时高。UI (uGUI)Canvas元素过多、频繁改变UI元素属性位置、颜色、显隐导致Canvas重建、使用Layout Group且层级复杂。主线程出现Canvas.SendWillRenderCanvases、Canvas.BuildBatch等高耗时。动画系统大量使用Animator组件、状态机复杂、每帧通过脚本修改Animator参数。主线程出现Animator.Update、ProcessAnimatorJob等。物理系统动态刚体过多、复杂网格碰撞体、过高的固定时间步长(Fixed Timestep)。主线程出现Physics.Simulate、Physics.Processing等。实例化/销毁每帧Instantiate/Destroy对象如子弹、特效。主线程出现Object.Instantiate伴随GC开销。资源加载同步加载大资源如Resources.Load、未使用异步加载。主线程出现长时间的阻塞。3. 核心优化策略与实战代码剖析3.1 脚本逻辑优化告别“蛮力”计算脚本是性能问题的最大来源也是最容易优化的部分。1. 缓存组件引用杜绝频繁GetComponentGetComponent是一个相对昂贵的操作。绝对不要在Update里调用它。// 错误示范 void Update() { Rigidbody rb GetComponentRigidbody(); rb.AddForce(Vector3.up * 10f); } // 正确示范 private Rigidbody _rb; void Start() { _rb GetComponentRigidbody(); // 缓存 } void Update() { _rb.AddForce(Vector3.up * 10f); // 使用缓存 }2. 减少Update回调的负担不是所有逻辑都需要每帧执行。合理使用协程Coroutine或自定义计时器。// 使用协程进行非每帧更新 IEnumerator CheckDistancePeriodically() { while(true) { PerformExpensiveDistanceCheck(); yield return new WaitForSeconds(0.5f); // 每0.5秒检查一次而非每帧 } } // 使用Time.time进行自定义更新 private float _lastUpdateTime; public float updateInterval 0.2f; void Update() { if (Time.time - _lastUpdateTime updateInterval) { PerformExpensiveOperation(); _lastUpdateTime Time.time; } }3. 使用对象池管理频繁创建销毁的对象对于子弹、特效、敌人等需要频繁生成和销毁的对象对象池是必备技术。using System.Collections.Generic; using UnityEngine; public class SimpleObjectPool : MonoBehaviour { public GameObject prefab; public int initialSize 10; private QueueGameObject _pool new QueueGameObject(); void Start() { for (int i 0; i initialSize; i) { GameObject obj Instantiate(prefab); obj.SetActive(false); obj.transform.SetParent(this.transform); _pool.Enqueue(obj); } } public GameObject GetObject() { if (_pool.Count 0) { GameObject obj _pool.Dequeue(); obj.SetActive(true); return obj; } else { // 池空了动态扩展也可设置上限 GameObject obj Instantiate(prefab); return obj; } } public void ReturnObject(GameObject obj) { obj.SetActive(false); _pool.Enqueue(obj); } }4. 警惕装箱Boxing与LINQ值类型如int, struct转换为引用类型object会产生装箱在循环中尤其致命。LINQ语句简洁但会带来额外的GC和性能开销在性能关键代码中应避免。// 装箱示例 int health 100; object boxedHealth health; // 这里发生装箱产生GC Alloc // 在循环中使用Unity API如 StartCoroutine(string methodName) 也会导致装箱。 // 应使用 StartCoroutine(MethodName()) 传递IEnumerator。 // LINQ示例性能敏感处避免 var aliveEnemies enemyList.Where(e e.IsAlive).ToList(); // 产生GC和迭代开销 // 改用普通循环 ListEnemy aliveEnemies new ListEnemy(); foreach (var enemy in enemyList) { if (enemy.IsAlive) aliveEnemies.Add(enemy); }3.2 UI性能优化驾驭Canvas的重建Unity的UI系统基于CanvasCanvas的任何一点变化都可能导致其下所有或部分UI元素的重新批处理Rebatch和重建这是CPU开销的大头。1. 分离静态与动态Canvas将几乎不变的UI如背景、静态文本和频繁变化的UI如血量条、分数放在不同的Canvas下。一个Canvas的重建不会影响另一个。2. 谨慎使用Layout GroupHorizontal/Vertical Layout Group和Content Size Fitter非常方便但它们会在子物体或自身尺寸变化时触发布局计算可能引起连锁重建。对于复杂的动态列表考虑手动计算位置或使用专门的滚动列表组件如Unity自带的ScrollRect或第三方插件。3. 避免每帧更改UI属性不要在图、文等UI元素的Update中直接修改color、text等属性。即使值没变Unity也可能触发一次脏标记检查。可以通过一个标志位来控制。private int _cachedScore; public Text scoreText; void Update() { int currentScore CalculateScore(); if (currentScore ! _cachedScore) { // 只有值变化时才更新UI scoreText.text currentScore.ToString(); _cachedScore currentScore; } }4. 使用Sprite Atlas将大量零碎的小图打包成一个图集可以减少Draw Call。这是优化UI和2D游戏渲染性能的标准操作。3.3 动画与物理优化动画优化减少活动Animator数量对于远离相机或不可见的角色可以禁用其Animator组件animator.enabled false或使用Animator.cullingMode。简化状态机避免过于复杂的状态转换逻辑。使用Animation Clip代替Animator对于简单的、无逻辑的循环动画如旋转的风扇直接使用Animation组件播放Clip比使用Animator开销小。物理优化区分静态与动态碰撞体标记为Static的GameObject其碰撞体在运行时不会被移动物理引擎会对其进行优化。使用简单的碰撞体形状BoxCollider、SphereCollider的性能远优于MeshCollider。对于复杂形状可以用多个简单碰撞体组合。调整Fixed Timestep在Project Settings - Time中降低Fixed Timestep如从0.02降到0.04可以减少每秒物理更新的次数从而降低CPU开销但会影响物理模拟的精度和流畅度需要权衡。合理设置碰撞层Layer在Physics Settings中精确配置哪些层之间需要检测碰撞避免不必要的碰撞计算。4. 高级诊断与Job System/Burst入门4.1 使用Profiler进行深度内存与GC分析除了CPU时间内存分配GC Alloc是导致CPU卡顿的另一大元凶。频繁的GC垃圾回收会引发不可预测的帧率卡顿。在Profiler中切换到Memory模块并使用Take Sample功能。关注GC Alloc列在CPU Usage的Timeline视图中可以按GC Alloc排序找到分配内存最多的函数。托管堆Managed Heap查看其大小和增长趋势。一个持续增长而不下降的托管堆说明存在内存泄漏有对象被意外引用无法释放。减少GC Alloc的技巧如上所述避免装箱和LINQ。重用集合List, Array, Dictionary使用Clear()方法清空而非创建新的。对于结构体struct数组考虑使用NativeArray配合Job System来完全避免托管堆分配。4.2 拥抱多线程Unity Job System与Burst Compiler初探当你的游戏逻辑中有大量可并行计算的任务如处理成千上万个物体的位置、速度、寻路计算时Unity的C# Job System和Burst Compiler是压榨CPU性能的终极武器。核心思想将主线程上的计算密集型任务拆分到多个工作线程上并行执行最后将结果同步回主线程。一个简单的Job示例计算一组物体的移动假设我们有10000个物体需要每帧更新位置。using Unity.Collections; using Unity.Jobs; using Unity.Mathematics; using UnityEngine; public class JobSystemDemo : MonoBehaviour { public int entityCount 10000; private NativeArrayfloat3 _positions; private NativeArrayfloat3 _velocities; private PositionUpdateJob _job; // 定义Job结构体 struct PositionUpdateJob : IJobParallelFor { public NativeArrayfloat3 positions; public NativeArrayfloat3 velocities; public float deltaTime; // 每个索引执行一次并行处理 public void Execute(int index) { positions[index] velocities[index] * deltaTime; } } void Start() { // 使用Allocator.Persistent或Allocator.TempJob分配原生内存非GC管理 _positions new NativeArrayfloat3(entityCount, Allocator.Persistent); _velocities new NativeArrayfloat3(entityCount, Allocator.Persistent); // ... 初始化数据 } void Update() { // 准备Job _job new PositionUpdateJob { positions _positions, velocities _velocities, deltaTime Time.deltaTime }; // 调度Job指定数组长度和每批处理数量批次大小影响并行粒度 JobHandle jobHandle _job.Schedule(entityCount, 64); // 等待Job完成也可以在本帧稍后需要结果时再等待 jobHandle.Complete(); // Job完成后数据已更新可以用于渲染等 // 注意在Job执行和完成之间主线程不应访问_positions和_velocities } void OnDestroy() { // 必须手动释放原生内存 _positions.Dispose(); _velocities.Dispose(); } }Burst Compiler它是一个LLVM后端的编译器能将你的Job代码编译成高度优化的机器码进一步提升计算性能。通常只需在Job结构体上添加[BurstCompile]特性即可。using Unity.Burst; [BurstCompile] // 添加此特性 struct PositionUpdateJob : IJobParallelFor { // ... 同上 }重要注意事项线程安全Job中只能访问NativeContainer如NativeArray或值类型数据。不能访问Unity引擎对象如GameObject, Transform因为它们在主线程。数据依赖使用JobHandle管理Job之间的依赖关系。如果Job B需要Job A的结果需要调用JobHandle.CombineDependencies。内存管理NativeArray必须手动调用Dispose()释放否则会导致内存泄漏。适用场景Job System适用于数据并行、计算密集型的“纯计算”任务。对于逻辑复杂、需要频繁与引擎API交互的任务可能不适合或需要拆分成多阶段。引入Job System需要对代码架构进行较大调整但它带来的性能提升在特定场景下是革命性的特别是对于大规模模拟、粒子系统、网格处理等。5. 实战问题排查与性能调优清单5.1 典型性能问题排查流程当你从Profiler中看到一个高耗时的函数时可以遵循以下步骤定位点击耗时条查看调用堆栈精确找到是你的哪一行代码、哪个第三方插件、还是Unity的哪个系统调用导致的。量化记录该函数在目标设备如中低端手机上一帧的耗时单位ms。你的优化目标就是降低这个数值。分析如果是自己的代码是否可缓存算法复杂度能否降低O(n²)降为O(n log n)是否每帧都需要执行如果是Unity API是否调用过于频繁如GetComponent、Find是否有更高效的替代方案如对象池代替Instantiate如果是系统开销如UI重建、物理模拟能否通过设计减少触发次数如分离Canvas、简化碰撞验证修改代码后再次在相同场景、相同设备下进行性能分析对比优化前后的Profiler数据确认优化效果。5.2 移动端专项优化要点移动端CPU性能更弱内存和电量受限需要额外注意发热与降频长时间高CPU占用会导致设备发热进而触发CPU降频游戏会越来越卡。优化CPU不仅是让单帧更快也是让持续运行的功耗更低。简化Draw Call虽然主要是GPU压力但Draw Call过多也会增加主线程准备渲染命令的开销。使用静态批处理Static Batching、动态批处理Dynamic Batching限制较多和GPU Instancing。纹理与网格优化使用合适的纹理压缩格式如ASTC减少纹理尺寸。简化网格模型减少顶点数。Shader复杂度复杂的顶点/片元着色器会增加GPU负担也可能间接影响CPU等待GPU。为移动端使用轻量级的Shader。5.3 性能优化自检清单在项目开发的各个阶段原型、Alpha、Beta、发布前定期进行以下检查[ ]Profiler真机测试在最低目标配置设备上运行查看CPU/GPU/内存数据。[ ]脚本Update中无昂贵操作、无频繁GetComponent、使用了对象池、避免了装箱和LINQ。[ ]UICanvas已按动静分离、非必要不用Layout Group、UI更新有差值判断。[ ]动画不可见物体Animator已禁用或设置为Cull。[ ]物理碰撞体尽量简单合理设置碰撞层Fixed Timestep设置合理。[ ]资源纹理尺寸合理且压缩网格面数受控。[ ]内存Profiler内存模块无异常增长GC Alloc每帧控制在较低水平KB级别。[ ]发布设置已开启适当的优化选项如Il2Cpp编译、Strip Engine Code、Managed Code Stripping。性能优化是一个持续的过程而不是开发尾声的一次性任务。建立性能意识在编写每一行代码时都思考其开销才能从根源上打造出流畅的游戏体验。最好的优化往往是那些在问题发生之前就通过良好设计规避掉的优化。

相关新闻

Webpack 2 视频教程 004 - Webpack 初体验

Webpack 2 视频教程 004 - Webpack 初体验

原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」。 Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲解的。 这个基本就是目前国内最好的 Webpack 2.0 最好的学习视频了,…

2026/8/3 18:56:56 阅读更多 →
【2024最严AI合规窗口期】:7类未审计依赖正被监管重点扫描,今日不查明日下线

【2024最严AI合规窗口期】:7类未审计依赖正被监管重点扫描,今日不查明日下线

更多请点击: https://codechina.net 第一章:AI依赖更新建议总则与合规基线 在构建和维护AI驱动的生产系统时,依赖项的更新不能仅以功能演进或版本号递增为依据,而必须锚定于安全、合规与可验证性三大支柱。所有AI相关依赖&#x…

2026/8/3 18:56:56 阅读更多 →
关于文献【OPSD的出口是什么】

关于文献【OPSD的出口是什么】

1、【我的问题】OPSD的出口是什么?【deepseek】【我的总结】就是像给Agent换了一个增强版的大脑

2026/8/3 18:55:52 阅读更多 →

最新新闻

基于MediaPipe与Unity的低成本手势识别虚拟交互系统实现

基于MediaPipe与Unity的低成本手势识别虚拟交互系统实现

1. 项目概述:从手势识别到虚拟交互的桥梁最近在捣鼓一些体感交互的原型,发现很多方案要么成本太高(比如动捕手套),要么部署太麻烦。后来把目光投向了MediaPipe,谷歌这个开源方案确实让人眼前一亮&#xff0…

2026/8/4 1:11:08 阅读更多 →
【紧急预警】抖音即将下线旧版Webhook接口!扣子开发者必须在72小时内完成这4项迁移动作(附迁移checklist)

【紧急预警】抖音即将下线旧版Webhook接口!扣子开发者必须在72小时内完成这4项迁移动作(附迁移checklist)

更多请点击: https://codechina.net 第一章:【紧急预警】抖音即将下线旧版Webhook接口!扣子开发者必须在72小时内完成这4项迁移动作(附迁移checklist) 抖音平台已于2024年10月15日发布正式公告:旧版 Webho…

2026/8/4 1:11:08 阅读更多 →
【AI基础概念扫盲指南】:20年专家亲授,5大核心概念彻底讲透,90%新手都理解错了?

【AI基础概念扫盲指南】:20年专家亲授,5大核心概念彻底讲透,90%新手都理解错了?

更多请点击: https://intelliparadigm.com 第一章:AI基础概念扫盲:为什么90%的新手从一开始就错了 许多初学者一接触AI,就急着安装TensorFlow、跑通MNIST、调参炼丹——却对“模型”“训练”“推理”“泛化”等核心概念缺乏准确定…

2026/8/4 1:11:08 阅读更多 →
从Ctrl+C/V到自主生成可交付代码:AI时代程序员的72小时能力重塑计划

从Ctrl+C/V到自主生成可交付代码:AI时代程序员的72小时能力重塑计划

更多请点击: https://intelliparadigm.com 第一章:从CtrlC/V到自主生成可交付代码:AI时代程序员的72小时能力重塑计划 过去依赖搜索复制粘贴的开发范式正在被颠覆。当Copilot、CodeWhisperer与本地部署的Llama3-70B代码模型能在3秒内生成带单…

2026/8/4 1:11:08 阅读更多 →
【AI写作生产力革命】:不依赖提示词工程,5款“开箱即用”型工具深度测评(附私有化部署清单)

【AI写作生产力革命】:不依赖提示词工程,5款“开箱即用”型工具深度测评(附私有化部署清单)

更多请点击: https://kaifayun.com 第一章:AI写作生产力革命的范式转移 传统内容创作长期受限于人力瓶颈、知识更新滞后与跨域协同低效等问题。AI写作工具的成熟,正推动一场从“人工主导—辅助校验”到“意图驱动—智能生成—人机协同精修”…

2026/8/4 1:11:08 阅读更多 →
终极浏览器资源嗅探工具:猫抓扩展的完整使用指南

终极浏览器资源嗅探工具:猫抓扩展的完整使用指南

终极浏览器资源嗅探工具:猫抓扩展的完整使用指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否经常遇到想要保存网页上的视频、…

2026/8/4 1:10:06 阅读更多 →

日新闻

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/3 4:36:35 阅读更多 →

月新闻

免费解锁百度网盘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 阅读更多 →