Unity UGUI粒子特效实战:ParticleEffectForUGUI插件原理与优化指南
1. 项目概述为什么UI粒子效果是提升游戏质感的利器在Unity项目里摸爬滚打这么多年我见过太多游戏玩法不错但UI界面总感觉“差一口气”。这种“差一口气”的感觉很多时候就出在缺乏动态反馈和视觉层次上。一个静态的按钮和一个点击时能迸发出绚丽粒子、产生轻微震动的按钮给玩家的体验是天差地别的。UI粒子效果正是填补这层体验鸿沟的关键技术之一。然而Unity的默认粒子系统Particle System虽然功能强大但它是基于3D空间世界空间或局部空间设计的。当你试图把它直接“贴”到UGUI的Canvas上时问题就来了层级管理混乱粒子可能被UI遮挡或穿透、渲染顺序难以控制、屏幕自适应更是噩梦。为了解决这个痛点社区大神们贡献了各种方案而ParticleEffectForUGUI这个插件无疑是其中最成熟、最优雅的解决方案之一。它让粒子系统能够像普通的UGUI Image或Text一样被Canvas完美管理实现真正的“UI粒子”。简单来说这个项目就是教你如何利用 ParticleEffectForUGUI在Unity的UGUI系统中轻松、高效地实现各种酷炫的粒子特效比如按钮反馈、成就解锁动画、资源获取飘字、菜单转场光效等。无论你是独立开发者还是团队中的UI/TA掌握这套流程都能让你项目的视觉表现力立刻提升一个档次。2. 核心原理与插件机制深度解析在开始动手之前我们必须先搞清楚 ParticleEffectForUGUI 到底做了什么这样才能在出问题时知道从哪里排查。Unity的标准粒子系统渲染管线和UGUI的渲染管线本质上是两条路。2.1 UGUI渲染与粒子系统渲染的根本矛盾UGUI基于Canvas使用Canvas Renderer组件其渲染顺序由Canvas下的层级顺序Hierarchy顺序和Sorting Layer/Order决定所有UI元素都在一个扁平的屏幕空间Screen Space - Overlay或基于摄像机的空间Screen Space - Camera里进行排序和合批。而标准的Particle System使用自己的渲染器其渲染顺序由Renderer组件的Sorting Layer和Order in Layer控制并且其坐标是基于3D世界或父物体局部空间的。当你把一个Particle System作为UGUI元素的子物体时你会发现层级错乱粒子可能渲染在所有UI的后面或者穿透到场景物体中。缩放失效Canvas的缩放模式Scale With Screen Size等对子物体的Particle System不生效导致在不同分辨率下粒子大小错位。交互问题粒子区域无法正确响应UGUI的射线检测如点击。ParticleEffectForUGUI 的核心就是作为一个“翻译官”和“管理者”弥合了这两套系统之间的鸿沟。2.2 ParticleEffectForUGUI 的核心组件UIParticle插件引入了一个核心组件UIParticle。你可以把它理解为一个“粒子容器”或“粒子代理”。它的工作流程如下空间转换UIParticle组件会接管其下所有子节点中的Particle System。它将这些粒子系统的模拟空间从默认的世界/局部空间转换到其所在的RectTransform的局部空间。这意味着粒子的出生、运动、缩放都将以这个UI节点为基准。渲染劫持UIParticle不会让粒子系统用自己的渲染器直接渲染。相反它会将每一帧粒子渲染所需的数据如顶点、颜色、UV等抓取出来。网格重建抓取到的粒子数据会被重新组装成网格Mesh。CanvasRenderer提交最后这个网格通过UIParticle组件自身的CanvasRenderer提交给UGUI的渲染管线。这样一来这个“粒子”就变成了一个标准的UI可绘制元素其渲染顺序完全由它在Canvas下的层级位置决定并且可以完美适配Canvas的各种缩放模式。注意UIParticle组件本身并不运行粒子系统的更新逻辑。粒子系统的Play(),Stop(), 生命周期、速度等仍然由原始的Particle System组件控制。UIParticle只负责每帧去“采样”并“重绘”它们。2.3 性能考量与实现机制选择这种“抓取-重绘”的机制带来了巨大的灵活性但也引入了额外的CPU开销网格重建。因此插件提供了几种渲染模式在UIParticle组件的Render Mode中设置Mesh默认模式为所有粒子生成一个统一的网格合批效率高适用于大多数情况。Trail Mesh专门用于处理粒子拖尾提供更好的渲染质量。None不进行渲染用于调试或特殊情况。理解了这个原理你就明白为什么使用了UIParticle后粒子就能乖乖地待在UI层里并且随着Canvas缩放了。这是一种以少量CPU开销换取极大开发便利和效果稳定性的经典方案。3. 完整实操流程从零到一创建UI粒子效果理论说再多不如动手做一遍。下面我将以一个“按钮点击爆炸火花”效果为例带你走完整个流程。3.1 环境准备与插件导入首先你需要拥有这个插件。它可以通过Unity的Package Manager从Git URL添加或者从Asset Store购买/下载后导入。通过Package Manager导入推荐在Unity编辑器中打开Window - Package Manager。点击左上角的号选择Add package from git URL...。输入插件的Git仓库地址例如https://github.com/mob-sakai/ParticleEffectForUGUI.git。你可以在其GitHub页面找到最新地址。点击AddUnity会自动下载并导入插件。导入成功后你会在菜单栏看到GameObject - UI - Particle System (UI)的选项并且组件列表里能找到UI - UIParticle组件。3.2 创建基础UI粒子系统创建UI按钮在Hierarchy中右键 -UI - Button创建一个标准的按钮。添加UIParticle容器选中刚才创建的Button在Inspector面板最下方点击Add Component搜索并添加UIParticle组件。此时这个Button就具备了容纳和渲染UI粒子的能力。创建粒子系统子物体在Hierarchy中右键点击Button选择Create Empty重命名为ClickEffect。然后为这个空物体添加一个Particle System组件。关联粒子系统确保ClickEffect物体是Button的子物体。你会发现ClickEffect上的Particle System组件图标可能有一个小小的“UI”标识这表示它已被上层的UIParticle组件检测到并管理。你也可以在Button的UIParticle组件的Particles列表里手动将ClickEffect拖拽进去。现在你的结构应该类似于Button (带有Button组件和UIParticle组件) - ClickEffect (带有Particle System组件)。3.3 设计与配置粒子效果接下来是发挥创意的部分。选中ClickEffect物体在Particle System组件中进行配置目标是制作一个点击瞬间爆发的小型火花效果。一个基础的点击火花参数配置参考Duration持续时间: 0.5秒短暂爆发。Looping循环: 取消勾选。Start Lifetime起始生命周期: 0.3 ~ 0.5秒火花快速消失。Start Speed起始速度: 2 ~ 5中等爆发速度。Start Size起始大小: 0.5 ~ 2.0并开启随机 between Two Constants大小不一更自然。Emission发射:Rate over Time随时间发射速率: 0我们不持续发射。Bursts爆发: 点击号添加一个爆发设置Time为0.0秒Count为15~25一次点击爆发的火花数量。Shape形状: 选择Sphere并将Radius设置为一个很小的值比如0.1让火花从一个点附近爆发。Renderer渲染器:Render Mode渲染模式: 选择Billboard始终面向摄像机。Material材质: 这是关键你需要一个支持UI渲染的Shader。ParticleEffectForUGUI插件自带了一些。在Materials列表里点击圆圈图标搜索UI Particle通常会有一个UI-Particle-Additive或类似的材质。选择它。这个材质使用的Shader是专门为UIParticle优化过的。Color over Lifetime生命周期内颜色: 启用并设置一个从亮黄色/白色到透明色的渐变模拟火花熄灭。Size over Lifetime生命周期内大小: 启用使用一个从大到小的曲线模拟火花扩散后衰减。调整参数时可以点击Scene视图上方的Particle Effect预览按钮一个带播放图标的小圆圈来实时查看效果。你会发现无论你怎么移动或缩放Canvas这个火花效果都牢牢地“粘”在按钮上。3.4 通过脚本触发粒子效果静态的粒子没用我们需要在点击按钮时触发它。为Button添加一个触发脚本。在ClickEffect物体上或者单独创建一个脚本例如命名为UIButtonParticle。编写脚本获取粒子系统组件并在按钮点击时播放。using UnityEngine; using UnityEngine.UI; public class UIButtonParticle : MonoBehaviour { // 持有对粒子系统的引用 public ParticleSystem clickParticle; private Button button; void Start() { button GetComponentButton(); if (button ! null) { // 为按钮添加点击监听 button.onClick.AddListener(OnButtonClicked); } // 如果未在Inspector中指定尝试从子物体查找 if (clickParticle null) { clickParticle GetComponentInChildrenParticleSystem(); } // 初始时停止粒子避免自动播放 if (clickParticle ! null) { clickParticle.Stop(true, ParticleSystemStopBehavior.StopEmittingAndClear); } } void OnButtonClicked() { if (clickParticle ! null) { // 每次点击前先清除上一轮残留的粒子避免重叠 clickParticle.Stop(true, ParticleSystemStopBehavior.StopEmittingAndClear); // 然后重新播放 clickParticle.Play(); } else { Debug.LogWarning(Click particle system is not assigned on gameObject.name); } } void OnDestroy() { // 防止内存泄漏移除监听 if (button ! null) { button.onClick.RemoveListener(OnButtonClicked); } } }将这个脚本挂载到你的Button物体上。在Inspector中将ClickEffect物体拖拽到脚本的Click Particle字段上完成关联。现在运行游戏点击按钮你应该能看到火花在按钮位置或作为按钮子物体的位置迸发出来。效果完全集成在UI层内不会被其他3D物体或UI遮挡错乱。4. 高级技巧与性能优化实战掌握了基础用法我们来看看如何做出更复杂的效果并保证性能。4.1 多层级粒子与渲染排序一个复杂的UI特效往往由多层粒子组成底层光晕、中间的主体火花、顶层的亮星。在UIParticle体系下如何控制它们的层级方法一利用Hierarchy顺序这是最直接的方法。UIParticle提交的网格其渲染顺序由它在Canvas下的子物体顺序决定。你可以创建多个空物体每个下面挂一个不同效果的Particle System然后通过调整这些空物体在Hierarchy中的上下顺序来控制谁在前谁在后。排在上面的后渲染显示在前面。方法二使用多个UIParticle组件一个GameObject上可以挂载多个UIParticle组件。每个组件可以管理一组粒子系统并且每个UIParticle组件都有自己的CanvasRenderer。你可以通过调整这些UIParticle组件在Inspector中的顺序或者脚本设置sortingOrder来进行更精细的排序控制。不过这会增加Draw Call需权衡使用。实操心得对于简单的两层粒子用Hierarchy顺序就够了。对于需要和UI图片、文字穿插排序的复杂效果可能需要将粒子系统拆分到不同的父节点甚至使用多个Canvas来管理不同的渲染排序组Sorting Layer。4.2 动画曲线与自定义材质的高级应用使用Texture Sheet Animation纹理表动画这是制作序列帧动画类UI特效如一个精致的魔法阵旋转、一个燃烧的火焰图标的神器。你需要一张包含多帧的纹理图雪碧图。在Particle System中启用此模块设置好Tiles行列数粒子就会按序列播放这些帧。结合UIParticle你可以轻松实现动态UI图标。自定义材质与Shader插件自带的UI-Particle-Additive叠加和UI-Particle-AlphaBlended透明混合材质能满足大部分需求。但如果你需要扭曲、溶解、流动等特殊效果就需要自定义Shader。关键点是你的Shader需要支持UI Particle的渲染管线。通常可以从插件提供的Shader代码如UIAdditive.shader作为模板开始修改确保其包含必要的属性如_ClipRectUI遮罩等。控制粒子发射位置通过脚本你可以动态修改子物体Particle System的Shape模块参数或者控制其Transform位置来实现粒子从特定UI位置如一个动态移动的进度条末端发射的效果。4.3 性能瓶颈分析与优化策略UI粒子虽好但滥用会导致性能下降尤其在移动设备上。以下是关键的优化点粒子数量是头号杀手时刻谨记“少即是多”。一个按钮点击效果5-15颗粒子足以表现一个全屏奖励动画粒子总数也应尽量控制在100-200以内。充分利用Start Lifetime短命、Emission Rate低速率来减少同时存活的粒子数。合并绘制调用Draw CallUIParticle会尽量将同一节点下管理的所有粒子合并到一个Draw Call中。优化策略是将使用相同材质Material的多个粒子系统放在同一个父物体下并由同一个UIParticle组件管理。避免为每个小小的粒子效果都单独创建一个顶层的UIParticle。避免Overdraw过度绘制大量使用Additive叠加Shader的粒子叠加在一起会导致屏幕像素被反复计算多次在低端GPU上压力很大。适当混合使用Alpha Blended和Additive或者降低粒子的初始透明度和大小。使用对象池管理频繁触发的粒子对于像按钮点击、连续攻击飘字这类高频触发的效果频繁地Instantiate和Destroy粒子预制体会产生GC垃圾回收压力。应该实现一个简单的对象池预先创建好几个粒子系统实例播放完后将其重置并放回池中下次需要时从池中取出而不是新建。在不可见时停止模拟如果某个UI粒子特效所在的界面或区域暂时不可见如弹窗被关闭记得通过脚本调用ParticleSystem.Stop()并Clear()或者直接禁用整个包含UIParticle的GameObject。这可以节省不必要的每帧更新和渲染开销。5. 常见问题排查与疑难解答实录在实际项目中你肯定会遇到一些“坑”。下面是我总结的常见问题及解决方法。5.1 粒子效果不显示或显示异常问题现象可能原因解决方案完全看不到粒子1.UIParticle组件未启用。2. 粒子系统未关联到UIParticle的Particles列表。3. 粒子材质Shader不兼容使用了标准粒子Shader。1. 检查UIParticle组件勾选框。2. 将粒子系统物体拖入列表或确保它是UIParticle游戏对象的子级。3. 将材质替换为插件提供的UI-Particle-*系列材质。粒子位置错乱不在UI上粒子系统可能正在使用World空间模拟。在粒子系统组件中将Simulation Space设置为Local这是与UIParticle配合工作的标准模式。粒子大小异常不随Canvas缩放UIParticle的Scale模式设置不当。在UIParticle组件上调整Scale参数。通常Scale1会跟随Canvas缩放Scale0则使用粒子系统自身大小。需要根据Canvas的渲染模式Screen Space - Overlay/Camera进行测试调整。粒子被其他UI元素错误遮挡渲染顺序问题。粒子所在的UIParticle节点在Hierarchy中的顺序可能太靠下。将包含UIParticle的节点在Hierarchy中向上移动使其在渲染顺序上位于需要它显示在前面的其他UI元素之上。5.2 性能相关问题问题游戏运行时UI界面打开后感觉明显卡顿Profiler显示Canvas.BuildBatch或UI.Particle.Update耗时很高。排查打开Unity的Window - Analysis - Profiler。重现卡顿场景在Profiler的CPU使用率区域查看是哪一部分占用高。如果是Canvas.BuildBatch说明UI网格重建频繁可能是UIParticle管理的粒子顶点变化太剧烈或者UI布局频繁改变。如果是UI.Particle.Update说明UIParticle组件本身或它管理的粒子系统更新开销大。解决减少单个特效的粒子最大数量Max Particles。检查是否有粒子系统在持续高频率发射Emission Rate将其改为Burst爆发式或降低速率。合并使用相同材质的UIParticle。对于非当前界面的UI粒子确保已停止并禁用。5.3 与UI交互、遮罩的兼容性问题问题粒子效果跑到了UI ScrollView的边界外面或者没有被Mask组件正确裁剪。原因与解决UIParticle默认支持RectMask2D性能更好和Mask组件。确保你的UIParticle节点在需要遮罩的父节点之下。对于复杂的嵌套遮罩可能需要检查UIParticle组件上的Maskable属性是否被勾选以及粒子材质是否支持Stencil模板测试插件自带的材质通常都支持。5.4 打包后效果不一致问题在编辑器里运行正常打包尤其是移动端后粒子效果没了或者材质变粉红Missing Shader。解决这是典型的Shader没有被打包进去的问题。确保你使用的自定义粒子材质如果是基于插件Shader修改的所关联的Shader在Project Settings - Graphics - Always Included Shaders列表中。更稳妥的做法是将这些Shader所在的Shader Variant Collection添加到Project Settings - Graphics - Shader Preloading中并进行预编译。最后分享一个我个人的小技巧对于需要频繁触发且要求精确位置同步的UI粒子比如跟随手指拖拽的轨迹光点单纯将粒子系统作为UI子物体会因为UI的布局计算Layout产生一帧的延迟。我的做法是使用一个独立的UIParticle然后通过脚本在LateUpdate中根据目标UI元素的RectTransform.anchoredPosition动态设置这个UIParticle的位置。这样可以确保粒子视觉上与UI元素完全同步避免拖影感。这需要一点额外的代码但对于追求极致体验的效果来说是值得的。

相关新闻

Spring Boot+Vue+MySQL构建保险合同管理系统全栈实践

Spring Boot+Vue+MySQL构建保险合同管理系统全栈实践

1. 项目概述:可盈保险合同管理系统的技术架构与价值这个基于Spring BootVueMySQL的保险合同管理系统,是我在金融科技领域实施过最典型的全栈项目之一。系统采用前后端分离架构,后端基于Spring Boot 2.7实现业务逻辑和RESTful API,…

2026/8/4 2:37:53 阅读更多 →
华为 VRP 交换机运维知识点

华为 VRP 交换机运维知识点

一、接口基础与运维查询命令1. Interface 接口概念1.1 区分 Interface / PortPort:物理硬件端口,设备面板可见光口 / 电口;Interface:软件层面统一接口对象,包含物理接口 逻辑虚拟接口,日常运维二者口语混…

2026/8/4 2:37:53 阅读更多 →
基于Deepseek与FusionApp的轻量级影视CMS开发实践

基于Deepseek与FusionApp的轻量级影视CMS开发实践

1. 项目概述:基于Deepseek与FusionApp的轻量级影视CMS开发这个项目本质上是一个利用Deepseek AI能力与FusionApp框架快速搭建的影视内容管理系统(CMS)。作为从业十余年的全栈开发者,我实测发现这种组合能在3天内完成传统团队2周的…

2026/8/4 2:37:53 阅读更多 →

最新新闻

关于编译器报警告--scanf的返回值被忽略-程序却能正常运行的理解

关于编译器报警告--scanf的返回值被忽略-程序却能正常运行的理解

关于编译器报警告–scanf的返回值被忽略-程序却能正常运行的理解 一.scanf的返回值被忽略是何意味 scanf的返回值被忽略: scanf () 函数本身有返回值,但是你写代码时没有接收、也没有判断这个返回值,编译器给出警告。 ⚠️警告 ≠ 报错&…

2026/8/4 3:30:16 阅读更多 →
Pytest命令行参数高效使用指南

Pytest命令行参数高效使用指南

1. Pytest命令行参数核心价值解析作为Python生态中最主流的测试框架,Pytest的强大之处往往体现在其命令行参数的灵活运用上。我在自动化测试实践中发现,90%的初级使用者仅会使用基础的pytest命令执行用例,而忽略了参数化执行带来的效率提升。…

2026/8/4 3:29:15 阅读更多 →
群晖NAS系统空间不足排查与清理全攻略:从日志到Docker的深度优化

群晖NAS系统空间不足排查与清理全攻略:从日志到Docker的深度优化

1. 项目概述:当你的数字仓库发出红色警报“群晖系统空间不足”——这行出现在你NAS管理界面上的提示,对任何一个深度依赖家庭或小型办公数据中心的用户来说,都无异于一记警钟。它不像手机存储满了那么简单,删几张照片就能解决。群…

2026/8/4 3:29:15 阅读更多 →
微信智能客服系统:架构设计与技术实现

微信智能客服系统:架构设计与技术实现

1. 项目概述:微信智能客服系统的核心价值在当今快节奏的商业环境中,客户服务响应速度直接影响用户体验和企业口碑。传统客服模式存在明显的时间限制和人力成本问题,而基于微信生态的智能客服系统恰好能解决这些痛点。这个开源项目提供了一个完…

2026/8/4 3:29:15 阅读更多 →
C#混淆随机种子使用详解与恒盾加密大师教程

C#混淆随机种子使用详解与恒盾加密大师教程

在使用恒盾C#混淆加密大师处理 C# DLL 或 EXE 文件时,即使输入文件和保护选项完全相同,多次处理得到的结果也可能不同。这种随机性有助于避免每次构建给出完全一致的混淆结果,但在问题排查、版本回归和自动化发布等场景中,有时反而…

2026/8/4 3:29:15 阅读更多 →
零门槛!全网通用去水印技巧

零门槛!全网通用去水印技巧

零门槛!全网通用去水印技巧,新手也能一键搞定 日常做素材整理、自媒体创作、学习资料汇总时,图片、视频、截图自带的水印真的特别影响观感。很多人为了去除水印,要么花高价付费会员,要么下载一堆带广告的工具&#xff…

2026/8/4 3:29:15 阅读更多 →

日新闻

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 阅读更多 →