Unity塔防抽卡游戏架构设计:从MVC到性能优化的工程实践
你有没有过这样的经历花了大量时间跟着教程学 Unity跟着视频一步步做最后确实做出了一个“能跑”的 Demo。但当你关上教程想自己从头开始做一个哪怕很小的游戏时却发现自己大脑一片空白资源怎么管理代码结构怎么设计防御塔的攻击逻辑和抽卡系统的数据怎么解耦UI 和游戏逻辑怎么通信为什么别人的项目跑起来丝滑流畅而自己的 Demo 稍微复杂点就开始卡顿、报错甚至崩溃这恰恰是很多 Unity 初学者甚至有一定经验的开发者都会遇到的“教程依赖症”。我们学会了使用锤子、锯子却不知道如何盖起一栋结构稳固的房子。今天我们就以“从零打造一个完整的移动端塔防抽卡游戏”为目标彻底抛开那些只教“点哪里”的步骤指南深入到项目骨架、设计模式、性能边界和工程化思维的层面。这篇文章不会告诉你 Unity 界面上某个按钮的具体位置而是会聚焦于如何将一个包含复杂交互塔防和随机系统抽卡的游戏想法转化为一个可维护、可扩展、性能过关的 Unity 项目结构。你会发现真正的挑战不在于写出一段让防御塔攻击敌人的代码而在于当你有十种防御塔、五十种敌人、上百种卡牌时如何让这些代码和谐共处而不是变成一场灾难。我们不仅要“做出来”更要“做得好”让这个项目能经得起迭代甚至成为你作品集里一个拿得出手的案例。1. 先别急着写代码为“塔防抽卡”设计一个清晰的游戏架构很多开发者拿到“塔防抽卡游戏”这个需求第一反应是打开 Unity新建场景开始摆模型、写MonoBehaviour。这往往是一切混乱的开始。在没有想清楚数据流向和模块边界之前就动手代码很快就会变成“意大利面条”牵一发而动全身。我们需要先回答几个核心问题游戏的核心循环是什么对于塔防抽卡通常是部署防御塔消耗资源 - 抵御敌人波次获取资源 - 使用资源抽卡获取新塔或升级 - 强化防御 - 迎接更强波次。数据在哪里流动金币、钻石、卡牌、塔的属性、敌人的属性、关卡数据……这些是游戏的血液。必须明确它们的产生、消费、存储位置。谁管理谁是场景管理器驱动一切还是有一个独立的游戏状态机UI 是主动拉取数据还是被动接收事件基于这些思考一个推荐的中小型项目架构可以分层设计1.1 核心三层数据Model、逻辑Controller/System、表现View这是经久不衰的架构思想在游戏开发中同样适用。数据层Model这是游戏的“记忆”。它应该是纯粹的 C# 类不继承MonoBehaviour不依赖 Unity 的 API。它只负责存储状态。PlayerData: 存储玩家金币、钻石、拥有的卡牌ID列表、已解锁的塔ID等。TowerData/CardData/EnemyData: 使用 ScriptableObject 是绝佳选择。你可以为每种塔、卡牌、敌人创建一个 Asset 文件里面定义基础属性攻击力、血量、成本、稀有度、预制体引用等。ScriptableObject 的优势在于策划或你自己可以在编辑器内无代码调整数值并且这些数据在运行时是只读的、高效共享的。WaveData: 定义一波敌人的生成信息敌人类型、数量、间隔。逻辑层Controller/System这是游戏的“大脑”。它操作数据层实现游戏规则。部分系统可能需要继承MonoBehaviour以使用 Unity 的生命周期。GameManager: 作为总协调者管理游戏状态准备、战斗中、胜利、失败持有核心数据引用但不处理具体战斗逻辑。WaveSpawnSystem: 负责根据WaveData定时生成敌人。它需要知道当前关卡、当前波次并调用EnemyManager。TowerAttackSystem: 这是一个重点优化对象。不要在每个塔的Update里做遍历查找敌人的操作。可以设计一个系统定期如每0.5秒收集所有塔和敌人的位置进行空间划分如简单的网格法来快速匹配攻击关系然后通知塔执行攻击表现。这能极大提升性能。CardSystem: 处理抽卡逻辑。包含卡池的初始化根据稀有度权重、单抽/十连的实现、抽卡结果的返回返回卡牌ID或数据。EconomySystem: 统一管理金币、钻石的增减并触发相关事件如金币变化UI更新。表现层View这是游戏的“五官”。它监听逻辑层的事件或数据变化更新UI、播放动画、实例化特效。TowerView: 挂载在塔预制体上接收TowerAttackSystem的攻击指令播放攻击动画、生成子弹预制体。EnemyView: 挂载在敌人预制体上负责移动、播放受伤/死亡动画。UIManager: 管理所有UI面板。它订阅EconomySystem的金币事件、CardSystem的抽卡结果事件并更新对应的UI文本和图像。关键通信方式使用 C# 事件Event或 UnityEvent。让逻辑层在关键时刻“喊一嗓子”表现层自己决定是否响应以及如何响应。例如EconomySystem在金币变化时触发一个Actionint OnCoinChanged事件UIManager提前订阅这个事件事件触发时自动更新UI。这实现了彻底的解耦EconomySystem完全不知道UI的存在。1.2 为什么是 ScriptableObject 事件驱动这是本项目的架构核心。ScriptableObject 解决了数据配置的难题让平衡性调整变得可视化、非代码化。事件驱动解决了模块通信的难题避免了FindObjectOfType、GetComponent这种高消耗且脆弱的耦合方式。当你需要增加一种新的“冰冻塔”时你只需要复制一个TowerData的 ScriptableObject设置新属性。制作一个塔的预制体挂载新的FrostTowerView脚本。在TowerAttackSystem中注册新的攻击逻辑冰冻效果。在卡牌数据里增加一张对应此塔的卡牌。你不需要修改GameManager、UIManager或其他不相关的模块。这就是清晰架构带来的扩展性。2. 防御塔系统从“能打”到“打得高效、打得多样”防御塔是塔防游戏的灵魂。实现一个塔很简单在Update里查找范围内的敌人然后发射子弹。但这是性能陷阱和逻辑混乱的开始。2.1 攻击逻辑与表现分离首先将塔的“思考”和“行动”分开。思考逻辑由TowerAttackSystem统一处理。这个系统维护两个列表所有激活的塔、所有存活的敌人。它利用空间划分如将战场划分为网格来快速为每个塔找到攻击目标并计算攻击间隔。它只输出指令“塔A攻击敌人B”。行动表现TowerView脚本接收攻击指令。它负责播放塔身转向目标的动画如果需要。实例化一个“子弹”预制体。将目标信息传递给子弹例如通过构造参数或设置一个Target属性。// TowerView 示例片段 public class TowerView : MonoBehaviour { public GameObject bulletPrefab; public Transform firePoint; // 由 TowerAttackSystem 调用 public void ExecuteAttack(EnemyView targetEnemy) { if (bulletPrefab firePoint) { GameObject bulletGo Instantiate(bulletPrefab, firePoint.position, firePoint.rotation); Projectile bullet bulletGo.GetComponentProjectile(); if (bullet ! null) { bullet.SetTarget(targetEnemy.transform); } // 播放攻击音效、动画等... } } }2.2 多样化的塔与效果使用策略模式或组件化不同的塔机枪塔、冰冻塔、溅射塔攻击逻辑不同。如何优雅地实现方案一策略模式。定义一个IAttackStrategy接口包含FindTarget和ApplyDamage方法。为每种塔类型创建对应的策略类SingleTargetStrategy,SplashAttackStrategy,FreezeStrategy。TowerData里可以关联一个策略类型TowerAttackSystem根据策略类型来执行不同的目标查找和伤害计算。方案二组件化。将特殊效果冰冻、中毒、击退设计成独立的MonoBehaviour组件如FreezeEffect、PoisonEffect。子弹击中敌人后为敌人添加对应的效果组件。组件内部管理持续时间、效果逻辑如减速、扣血。这种方式更符合 Unity 的 ECS面向数据思想雏形也更灵活。对于移动端性能至关重要子弹和特效要使用对象池Object Pooling避免频繁的Instantiate和Destroy。所有塔的检测不要每帧进行而是设定一个合理的检测频率如0.3秒一次。3. 抽卡机制公平、可配置与“欧非”体验的关键抽卡是游戏的商业化和长期留存核心。它必须让玩家感觉公平随机同时又能被精确控制概率。3.1 卡池的构建与权重使用 ScriptableObject 来定义每张卡牌CardData其中包含rarity稀有度和weight权重字段。在CardSystem初始化时根据所有卡牌数据构建一个分层的卡池列表。一种经典实现是别名算法Alias Method它能以 O(1) 的时间复杂度根据权重随机抽取物品非常适合大量卡牌的频繁抽卡。但对于中小型项目简单的累加权重随机也完全够用。// 简化的权重随机抽卡逻辑 public CardData DrawCard() { ListCardData cardPool GetCurrentCardPool(); // 获取当前卡池可能已过滤掉未解锁的卡 int totalWeight 0; foreach (var card in cardPool) { totalWeight card.weight; } int randomPoint Random.Range(0, totalWeight); int currentWeight 0; foreach (var card in cardPool) { currentWeight card.weight; if (randomPoint currentWeight) { return card; } } return null; // 理论上不会走到这里 }3.2 “保底”机制的实现保底是提升玩家体验的关键。你需要在PlayerData或CardSystem中维护一个计数器pityCounter。每次抽卡计数器加1。当抽到高稀有度卡牌时计数器清零。当计数器达到保底阈值如90抽时强制从高稀有度卡池中抽取一张并清零计数器。关键点强制保底抽卡应该在随机之前判断。逻辑是先检查是否触发保底如果是则执行保底逻辑并返回如果不是再走正常的权重随机流程并在随机后更新计数器。3.3 前端表现与反馈抽卡过程需要强烈的视觉和听觉反馈。这属于表现层UI抽卡按钮、资源显示、抽卡动画卡牌翻转、光芒特效。逻辑CardSystem.DrawCard()返回卡牌数据。通信CardSystem在抽卡结束后触发一个OnCardDrawResult事件事件参数包含抽到的CardData。表现UIManager订阅该事件接收到结果后播放华丽的展示动画更新玩家卡牌库存的UI。切记抽卡结果必须在服务器端或本地用可靠随机种子生成防止客户端篡改。对于单机游戏可以使用固定的种子或系统时间但也要考虑存档/读档的随机一致性。4. 移动端专项优化让游戏在手机上流畅运行PC上流畅不代表手机上也能流畅。移动端开发必须时刻关注性能。4.1 资源管理贴图、模型与音频贴图使用合适的压缩格式ASTC控制尺寸尽可能用2的幂次方合并图集Sprite Atlas以减少 Draw Call。模型面数要低使用 LODLevel of Detail系统对于远处的塔和敌人使用低模。音频使用 .mp3 或 .ogg 格式压缩音频对于短促音效如攻击音效考虑使用 ADPCM 压缩的 .wav 文件以减少 CPU 解码开销。4.2 CPU 性能脚本与物理避免每帧Find和GetComponent在Start或Awake中缓存引用。优化 Update在TowerAttackSystem中我们已经做了将遍历检测改为定时空间划分。对于不需要每帧更新的逻辑如游戏内计时器可以使用InvokeRepeating或自己管理一个计时器。物理塔防游戏通常不需要复杂的物理。如果使用物理引擎如子弹追踪使用简单的碰撞体和触发器即可并减少Rigidbody的数量。考虑使用Physics2D代替Physics3D如果项目是2D或2.5D前者更轻量。4.3 内存与发热对象池如前所述子弹、敌人、特效必须使用对象池。资源释放场景切换时使用Resources.UnloadUnusedAssets并结合GC.Collect()谨慎使用来释放内存。对于明确不再使用的资源可以使用Addressables或AssetBundle进行加载和卸载。帧率限制移动端可以考虑将帧率限制在 30 或 60 FPSApplication.targetFrameRate 60;这能有效降低 GPU 负载和手机发热。4.4 输入与适配触控输入使用 Unity 的Input.touches或更高级的Input System包来处理触屏操作。对于塔的放置使用射线检测Physics.Raycast来判定地面位置。UI 适配使用 Canvas 的Canvas Scaler组件选择Scale With Screen Size模式并设定一个参考分辨率如 1920x1080。关键 UI 元素要使用锚点Anchors进行定位以适应不同屏幕比例。5. 项目推进路线图从原型到可发布版本不要试图一次性完成所有功能。遵循一个渐进式的开发路线第零步架构设计1-2天。就是本文第一部分内容。在纸上或白板上画出模块图、数据流图。确定核心的 ScriptableObject 数据资产格式。第一步核心循环原型3-5天。实现一个最简版本一条路径一种敌人一种防御塔能放置塔塔能攻击并消灭敌人敌人到达终点扣血游戏失败。此时只关注逻辑UI 用 Unity 默认按钮和文本即可。第二步数据驱动化2-3天。将塔和敌人的属性从硬编码转移到 ScriptableObject。创建对应的TowerData和EnemyData资产。让游戏逻辑从这些资产中读取数值。第三步引入波次系统2天。实现WaveSpawnSystem和WaveData。让游戏可以按波次生成不同的敌人。第四步搭建经济与抽卡骨架3-4天。实现金币系统击败敌人获得金币。实现最基础的CardSystem和CardData完成一次简单的抽卡比如点击按钮在控制台打印卡牌名。将抽卡与塔的解锁关联起来。第五步丰富内容与多样化5-7天。设计 3-5 种不同的防御塔不同攻击方式、效果和 2-3 种敌人。实现塔的升级系统。完善抽卡UI表现。第六步全面优化与打磨5天以上。进行移动端适配实施对象池优化性能使用 Profiler 工具分析制作美术资源或购买/下载免费资源替换临时素材完善UI和音效设计几个测试关卡。第七步测试与发布3天。在不同真机上进行测试处理 Bug。构建 APK/IPA 文件可以考虑发布到 TapTap、 itch.io 等平台进行小范围测试。这个路线图的关键在于每一步都有一个可验证、可运行的成果。每一步都在为下一步打下基础而不是推倒重来。当你完成第三步时你已经拥有了一个数据驱动的塔防核心后续增加内容只是“添加数据”和“扩展系统”而不是“修改核心代码”。从零开始开发一个完整的游戏项目最大的收获往往不是学会了某个 API 的调用而是建立起一套应对复杂性的工程化思维。如何分而治之如何让变化局部化如何平衡功能的丰富性与性能的苛刻要求。这个塔防抽卡项目就是一个绝佳的练习场。它涵盖了游戏逻辑、数据管理、UI交互、资源处理和平台适配等多个核心模块。当你按照清晰的架构一步步实现它后再回头看那些令人头疼的教程项目你会发现你手中已经掌握了绘制蓝图的尺规而不再只是砌墙的砖刀。

相关新闻

Windows 11开始菜单高效布局与优化指南

Windows 11开始菜单高效布局与优化指南

1. 开始屏幕个性化:Windows 11的效率革命Windows 11的开始菜单经历了彻底的重构,从传统的静态列表转变为动态磁贴与图标混合的现代化界面。这个看似简单的改变实际上带来了效率工具布局的无限可能——通过合理的图标固定、分组和排序,完全可以…

2026/8/19 12:27:08 阅读更多 →
小鹏G3 CES全球首发:智能汽车全栈自研与量产落地的关键一跃

小鹏G3 CES全球首发:智能汽车全栈自研与量产落地的关键一跃

1. 从CES展台到量产交付:G3全球首发的台前幕后2018年1月,拉斯维加斯,一年一度的国际消费电子展(CES)如期而至。对于科技和汽车行业而言,这不仅是新产品的秀场,更是未来趋势的风向标。那一年&…

2026/8/19 9:02:11 阅读更多 →
Ollama 实战指南:简化本地大模型部署与集成开发

Ollama 实战指南:简化本地大模型部署与集成开发

在实际 AI 应用开发中,将大型语言模型(LLM)部署到本地环境,并实现稳定、高效的管理与调用,一直是开发者面临的核心挑战。传统方式往往涉及复杂的模型下载、环境配置、服务启动和 API 对接,过程繁琐且容易出…

2026/8/19 10:28:24 阅读更多 →

最新新闻

免费开源!OmenSuperHub 第三方控制工具实测:惠普暗影精灵的风扇调速、功耗管理与键盘灯一步到位

免费开源!OmenSuperHub 第三方控制工具实测:惠普暗影精灵的风扇调速、功耗管理与键盘灯一步到位

免费开源!OmenSuperHub 第三方控制工具实测:惠普暗影精灵的风扇调速、功耗管理与键盘灯一步到位 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gi…

2026/8/19 18:08:43 阅读更多 →
奇点智能大会从具身智能到物理 AI:下一代软件工程师要面对的硬核命题

奇点智能大会从具身智能到物理 AI:下一代软件工程师要面对的硬核命题

摘要具身智能正在翻开新一页:当模型不仅会"思考"还会"动手",当"能感知、理解并作用于物理世界的智能系统"成为越来越多公司的技术主线,"物理 AI"从一个概念变成了研发预算表上的真实科目。本文拆解这…

2026/8/19 18:08:43 阅读更多 →
2026昆明危房鉴定检测怎么选?老旧房危房鉴定靠谱机构 TOP 结构安全检测+ 报告可查 电话汇总

2026昆明危房鉴定检测怎么选?老旧房危房鉴定靠谱机构 TOP 结构安全检测+ 报告可查 电话汇总

昆明老旧小区业主、乡镇自建房住户、商铺经营者、园区厂房管理者以及学校医院负责人,面对危房鉴定检测需求时,常因市面上机构鳞次栉比、鱼龙混杂而举棋不定。不少无资质机构出具的报告无法通过住建审核,白费钱财更耽误工期。小编实地走访筛选…

2026/8/19 18:08:43 阅读更多 →
手把手教程:如何用mlx-lm将模型转换为MLX格式(以LFM2.5-1.2B-Instruct-6bit为例)

手把手教程:如何用mlx-lm将模型转换为MLX格式(以LFM2.5-1.2B-Instruct-6bit为例)

手把手教程:如何用mlx-lm将模型转换为MLX格式(以LFM2.5-1.2B-Instruct-6bit为例) 【免费下载链接】LFM2.5-1.2B-Instruct-6bit 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/LFM2.5-1.2B-Instruct-6bit LFM2.5-1.2B-I…

2026/8/19 18:08:43 阅读更多 →
智能安全测试平台实战评测:AI 原生开源项目 CyberStrikeAI 到底强在哪

智能安全测试平台实战评测:AI 原生开源项目 CyberStrikeAI 到底强在哪

智能安全测试平台实战评测:AI 原生开源项目 CyberStrikeAI 到底强在哪 【免费下载链接】CyberStrikeAI The system of action for AI-native cybersecurity—where intent becomes governed execution, evidence becomes operational memory, and every operation i…

2026/8/19 18:08:43 阅读更多 →
为什么Qwen3-VL-8B-Instruct-da8w8-torchao-v0.17.0会锁定版本?PyTorch 2.11与ZenDNN 6.0兼容机制深度解析

为什么Qwen3-VL-8B-Instruct-da8w8-torchao-v0.17.0会锁定版本?PyTorch 2.11与ZenDNN 6.0兼容机制深度解析

为什么Qwen3-VL-8B-Instruct-da8w8-torchao-v0.17.0会锁定版本?PyTorch 2.11与ZenDNN 6.0兼容机制深度解析 【免费下载链接】Qwen3-VL-8B-Instruct-da8w8-torchao-v0.17.0 项目地址: https://ai.gitcode.com/hf_mirrors/amd/Qwen3-VL-8B-Instruct-da8w8-torchao-…

2026/8/19 18:07:43 阅读更多 →

日新闻

【单片机课程设计/毕业设计】基于 STM32 与 WiFi 模块的室内通风智能管控系统设计 基于 STM32 的人体存在感知自适应风扇控制系统设计(018503)

【单片机课程设计/毕业设计】基于 STM32 与 WiFi 模块的室内通风智能管控系统设计 基于 STM32 的人体存在感知自适应风扇控制系统设计(018503)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/8/19 0:00:30 阅读更多 →
AI如何驱动数学猜想生成:从大语言模型到自动化数学发现

AI如何驱动数学猜想生成:从大语言模型到自动化数学发现

1. 项目概述:当AI开始“猜”数学定理 最近在AI研究圈里,一个名为“Moonshine”的项目引起了不小的讨论。这名字本身就挺有意思,直译是“月光”,但在数学史上,它特指一个神秘而美丽的联系——魔群月光猜想,连…

2026/8/19 0:00:30 阅读更多 →
WarcraftHelper 魔兽争霸3优化实战指南

WarcraftHelper 魔兽争霸3优化实战指南

WarcraftHelper 魔兽争霸3优化实战指南 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 一台刚配的新电脑,跑《魔兽争霸3》却卡成 PPT——这…

2026/8/19 0:02:31 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/19 11:55:18 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/19 9:46:27 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/19 11:55:16 阅读更多 →

月新闻

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

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

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

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

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

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

2026/8/19 7:42:22 阅读更多 →
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/19 11:55:13 阅读更多 →