news 2026/8/27 9:19:05

Unity性能优化_粒子特效(Particle System)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Unity性能优化_粒子特效(Particle System)

对CPU和GPU来讲,是一个性能消耗的大户。

以下记录一些针对移动端的优化方式与思考。

优化方式

一 限制同屏Max粒子数

数量尽可能少,推荐30-50个粒子系统,300-500个总粒子数(2021年)。

二 设计复杂度

避免粒子发射器之间的嵌套迭代,控制在1-2层。

三 面积占比

尽可能小,过大会影响像素填充率。

四 贴图
  • 降低分辨率
  • 很小的粒子,考虑去掉Alpha通道

半透将产生大量的Overdraw。一般来说,Overdraw可能是粒子特效消耗性能的最大因素。

五 Shader

发布移动端,Shader用Mobile平台的。

六 光照计算复杂度
  • 不接收阴影,不产生阴影
  • 去掉灯光相关设置
七 Render Mode

Billboard优先于Mesh类型。

对于Mesh类型:

  • DCC软件合并Mesh
  • 勾选Unity的Static选项
  • 如果骨骼,骨骼数量少于30
  • 建议同一时间不超过5个,单个顶点不超过500
  • GPU实例化(Enable Mesh GPU Instancing)
  • 取消脚本交互&物理碰撞(注意去掉Mesh Collider)

八 限制发射速率 Loop Duration

如果周期很小,就会不断的生成发射器,对CPU也有一定影响。

九 剔除&可见性更新

可以在Unity的剔除系统中嵌入CullingGroup,这样就可以使用边界球创建剔除区域。

当该区域变为可见或不可见时会发送一条通知,以便不可见时暂停粒子系统并在重新可见时恢复。

这样做的缺点是,屏幕之外的粒子会是静止的,这可能对某些效果有影响。避免这个缺点的方法是将粒子系统模拟快进一些来伪装粒子系统在不可见时仍然工作的假象。

参考:Unity小技巧:粒子系统性能-剔除(转) - 其他资源 - Powered by Discuz!

十 批处理
  • 粒子单独使用一个layer,合批的效果会更好。
  • 减少材质数量,用一个atlas纹理,便于合批,在shader中使用纹理坐标偏移。
  • 深度排序,通过修改Order in Layer减少粒子渲染的穿插从而增大合批的概率。但通常由于相机的运动、粒子系统的分散分布等原因造成粒子系统之间的穿插,能够动态拼合的数量往往都是很少的。
十一 性能分级 & LOD & AIGC

传统做法:在性能分级的时候,就是直接关闭/开启某些特效。
更理想的情况应该是Lod,但是人为预制将带来可观的工作量。
所以是否可以利用AI实时预处理呢?

Profiler指标

ParticleSystem.particleCount

可以通过此统计同屏的粒子总数。如果是不想继续产生粒子,可以在逻辑中统计,然后根据需求使用pause等方式来控制粒子继续产生。

ParticleSystem.ScheduleGeometryJobs

是指在Culling之前主线程要等待子线程计算Particle的位置,然后才能Culling。往往在战斗界面开销较高。

  • 考虑在中低端设备上尽可能降低粒子系统的复杂程度。
  • 采用剔除方式,降低不必要的粒子系统Schedule开销。
ParticleSystem.Draw

调用次数对应的是粒子系统的DrawCall数量。

  • 考虑减少粒子系统的数量。
  • 可以通过使用TextureSheetAnimation的方式,或者通过修改Order in Layer减少粒子渲染的穿插从而增大合批的概率。

更多方案

一 序列帧

考虑替换为序列帧实现,比如一些细小的蝴蝶或蜜蜂群的效果。

二 Job化 & DOTS
三 Visual Effect Graph

如果要创建包含大量粒子的视觉效果并且需要高度可自定义的行为,请使用 Visual Effect Graph 而不是内置粒子系统。

Visual Effect Graph 利用 GPU 模拟粒子行为,可模拟的粒子数量远远超过内置粒子系统。

参考

Particle systems in Unity – Unity 手册 (unity3d.com)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/27 9:18:56

MATLAB高温防护服热传导建模实战:从数模竞赛到工程复现

1. 这不是一篇“论文赏析”,而是一套可复现的高温防护服热传导建模实战手册 高教社杯数模竞赛里,2018年A题“高温作业专用服装设计”是公认的“硬骨头”——它不考编程炫技,不拼算法新奇,而是把一整套工程热物理建模能力塞进4天72…

作者头像 李华
网站建设 2026/8/27 9:16:25

驳斥关于 ML-KEM 的误解

1. 引言 最近,人们对 NIST 的后量子密码加密标准 ML-KEM、IETF 的相关标准产生了一些担忧,还有许多阴谋论声称恶意行为者操纵了标准化流程。作为一个几乎参与了这一标准化流程各个层面的人,Sophie Schmieg 想快速驳斥自己听到的种种无稽之谈…

作者头像 李华
网站建设 2026/8/27 9:15:30

蓝牙传感器开发新范式:Lynx库如何统一固件与App数据链路

1. 项目背景与核心价值 1.1 从手机直连传感器说起 做过物联网开发的朋友应该都有同感:真正把一颗传感器变成"能用手机直接看到数据"的东西,中间那层开发工程量远比想象中大。传统做法是买一块开发板、写固件、配协议栈、调射频参数&#xff0…

作者头像 李华
网站建设 2026/8/27 9:14:50

生物医学信号处理(北京工业大学)第二章

1.数字滤波器定义:指输入、输出均为数字信号,通过一定运算关系改变输入信号所含频率成分或者滤除某些频率成分。2.数字滤波器实现方法:采用数字逻辑电路或者计算机程序。3.数字滤波器分类:(1)按照单位冲激响…

作者头像 李华
网站建设 2026/8/27 9:14:25

SPADE框架:可执行环境+自对弈+共进化,让AI自己生成训练环境

最近在调研大模型后训练(post-training)与智能体训练方案时,我注意到一个非常有意思的方向:让 AI 自己生成训练环境,然后通过自对弈持续进化。这个思路的核心框架之一便是 SPADE,它把“可执行代码环境”“自…

作者头像 李华
网站建设 2026/8/27 9:13:02

用 Python 驱动 COMSOL 自动化仿真:6 行代码跑通

用 Python 驱动 COMSOL 自动化仿真:6 行代码跑通 【免费下载链接】MPh Pythonic scripting interface for Comsol Multiphysics 项目地址: https://gitcode.com/gh_mirrors/mp/MPh 做 parameter sweep 的人对这个循环再熟悉不过:打开 GUI&#xf…

作者头像 李华