草庐IT

详解Unity中的粒子系统Particle System (二)

梦小天幼 2025-06-30 原文

前言

上一篇我们简要讲述了粒子系统是什么,如何添加,以及基本模块的介绍,以及对于曲线和颜色编辑器的讲解。从本篇开始,我们将按照模块结构讲解下去,本篇主要讲粒子系统的主模块,该模块主要是控制粒子的初始状态和全局属性的,以下是关于该模块的介绍,请大家指正。

目录

本系列提要

Unity粒子系统专题博客共分成十二篇来讲解: 【本篇为第二篇】

前排提醒:本文仅代表个人观点,以供交流学习,若有不同意见请评论留言,笔者一定好好学习,天天向上。

Unity版本[2019.4.10f1] 梦小天幼 & 禁止转载

视频讲解:
【详解Unity】粒子系统(二) | Particle System | 主模块讲解 | 哔哩哔哩


一、粒子系统主模块

1.阅读前注意事项

注1:由于参数过多且个别参数难以理解,所以本篇的所有参数都作为四级目录存在,方便读者定位查阅

2.参考图

3.参数讲解

Duration

粒子系统运行的时间长度(秒)

Looping

若启用此属性,系统将重复播放粒子,也就是开启循环模式(无论是Scene窗口还是运行时)

Prewarm

若启用此属性,则粒子系统会在播放前进行预加载,比如漫天星河有3000颗粒子,但按照粒子发射速率,估计要好多秒,勾选此项,一旦播放就会达到预设置的Max Particles(下面有这个属性的介绍)

Start Delay

粒子系统发射前将延迟播放一段时间(秒)

Start Lifetime

每个粒子的初始生命周期(秒),指粒子被创建出来到自动销毁的这段时间

Start Speed

每个粒子的初始速度

3D Start Size

若要分别控制每个轴的大小,请启用该属性

Start Size

每个粒子的初始大小,按照给定值等比缩放,若要单独控制三个轴请启用3D Start Size

3D Start Rotation

若要分别控制每个轴的旋转角度,请启用该属性

Start Rotation

每个粒子的初始旋转角度,按照给定值等比缩放,若要单独控制三个轴请启用3D Start Rotation

Flip Rotation

使一些粒子以相反的方向旋转,数值在0-1之间,数值越大,翻转越多

这里不要懵,这个属性和上一个Start Rotation是一对,如果上一个属性有值,比如45,那么下面这个属性就是让一些粒子反转度数为-45,如果这里的值是0.1,那就是让10%的粒子反转,如果值为1,则是全部反转

Start Color

每个粒子的初始颜色

Gravity Modifier

缩放物理系统的重力值,值为零会关闭重力,想要让粒子受到物理系统的重力影响,将值设为1即可

Simulation Space

当前粒子系统的参照坐标,一共三个选项,世界、局部、自定义

自定义坐标可选择一个物体,将参照这个物体的坐标作为参照

Simulation Speed

调整粒子系统的更新速度

把粒子特效比作一个视频,值为0.3就是按照0.3倍速播放,值为1则是原速播放

Delta Time

在 Scaled 和 Unscaled 之间进行选择,其中的 Scaled 使用 Time Scale 值,而 Unscaled 将忽略该值。

Scaling Mode

选择如何使用transform中的缩放
1.Hierarchy 粒子跟随父级进行缩放
2.Local 忽略父级缩放
3.Shape 整体缩放是按照当前粒子的发射Shape来缩放的,且不影响粒子本身缩放,选Local则会影响粒子本身缩放

这里缩放了整体,但粒子本身并没有变扁

Play On Awake

若启用该属性,则粒子被创建时就开始播放

Emitter Velocity

发射器速率,使用哪种组件方法来计算速度(.translate .velocity)
Rigidbody
Transform

Max Particles

系统同时允许的最多粒子数,如果到达该值,则移除生命周期最长的粒子(活得最久的)

Auto Random Seed

若启用该属性,则每次初始化发射粒子,粒子各自位置不一样。也就是随机。

Random Seed

若禁用Auto Random Seed,则该值生效,该值用于创建唯一的可重复的粒子效果。

比如拿到我的世界随机种子,就可以生成一个一模一样的世界,该值如果不变,则粒子初始位置永远一致

Stop Action

当所有粒子的生命周期都结束时,系统自动执行下列某个操作
1.Disable 禁用当前对象
2.Destroy 销毁当前对象
3.CallBack 将 OnParticleSystemStopped 回调函数发送给附加到游戏对象的任何脚本
注:若Looping处于激活状态,则该属性不生效(因为你都循环了,我就没法结束了)

Culling Mode

当粒子特效不在摄像机范围内时是否暂停粒子系统模拟
1.Automatic 自动模式(如果是单次播放则不暂停,如果是循环(Looping)播放则暂停模拟)
2.Pause And Catch-up 暂停但是没有完全暂停(暂停模拟,但当再次注视时则演算出它应该在的位置)
3.Pause 暂停模拟
4.Always Simulate 总是模拟

Ring Buffer Mode

粒子不会在它们的生命周期结束时死亡,而是会一直存活到最大粒子缓冲区(Max Particles)满,届时新的粒子将取代旧的粒子。
1.Disabled 禁用该模式
2.Pause Until Replaced 暂停直到替换
3.Loop Until Replaced 循环直到替换(Particle lifetimes may loop between a fade-in and fade-out time, in order to use curves for the entire time they are alive. Values are in the 0-1 range / 粒子的生命周期可能在渐入渐出时间之间循环,以便在它们活着的整个时间内使用曲线。取值范围是0 ~ 1 / 这里不理解,贴出原文,你们自己理解吧)


二、总结和参考资料

1.总结

无总结

2.参考资料

[1].Unity官方.官方手册-粒子系统模块-Main module
[2].菜鸟MAY.2018.1粒子系统概述

有关详解Unity中的粒子系统Particle System (二)的更多相关文章

  1. 电脑0x0000001A蓝屏错误怎么U盘重装系统教学 - 2

      电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。  准备工作:  1、U盘一个(尽量使用8G以上的U盘)。  2、一台正常联网可使用的电脑。  3、ghost或ISO系统镜像文件(Win10系统下载_Win10专业版_windows10正式版下载-系统之家)。  4、在本页面下载U盘启动盘制作工具:系统之家U盘启动工具。  U盘启动盘制作步骤:  注意:制作期间,U盘会被格式化,因此U盘中的重要文件请注

  2. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  3. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  4. FOHEART H1数据手套驱动Optitrack光学动捕双手运动(Unity3D) - 2

    本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01  客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02  数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit

  5. unity---接入Admob - 2

    目录1.AdmobSDK下载地址2.将下载好的unityPackagesdk导入到unity里​编辑 3.解析依赖到项目中

  6. Unity 3D 制作开关门动画,旋转门制作,推拉门制作,门把手动画制作 - 2

    Unity自动旋转动画1.开门需要门把手先动,门再动2.关门需要门先动,门把手再动3.中途播放过程中不可以再次进行操作觉得太复杂?查看我的文章开关门简易进阶版效果:如果这个门可以直接打开的话,就不需要放置"门把手"如果门把手还有钥匙需要旋转,那就可以把钥匙放在门把手的"门把手",理论上是可以无限套娃的可调整参数有:角度,反向,轴向,速度运行时点击Test进行测试自己写的代码比较垃圾,命名与结构比较拉,高手轻点喷,新手有类似的需求可以拿去做参考上代码usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;u

  7. kvm虚拟机安装centos7基于ubuntu20.04系统 - 2

    需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc

  8. ruby - 在没有基准或时间的情况下用 Ruby 测量用户时间或系统时间 - 2

    因为我现在正在做一些时间测量,我想知道是否可以在不使用Benchmark类或命令行实用程序time的情况下测量用户时间或系统时间。使用Time类只显示挂钟时间,而不显示系统和用户时间,但是我正在寻找具有相同灵active的解决方案,例如time=TimeUtility.now#somecodeuser,system,real=TimeUtility.now-time原因是我有点不喜欢Benchmark,因为它不能只返回数字(编辑:我错了-它可以。请参阅下面的答案。)。当然,我可以解析输出,但感觉不对。*NIX系统的time实用程序也应该可以解决我的问题,但我想知道是否已经在Ruby中实

  9. ruby - 以毫秒为单位获取当前系统时间 - 2

    在Ruby中,以毫秒为单位获取自纪元(1970)以来的当前系统时间的正确方法是什么?我试过了Time.now.to_i,好像不是我想要的结果。我需要结果显示毫秒并且使用long类型,而不是float或double。 最佳答案 (Time.now.to_f*1000).to_iTime.now.to_f显示包含十进制数字的时间。要获得毫秒数,只需将时间乘以1000。 关于ruby-以毫秒为单位获取当前系统时间,我们在StackOverflow上找到一个类似的问题:

  10. ruby-on-rails - 如何构建复杂的 Rails 系统 - 2

    关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭8年前。Improvethisquestion我们有以下(以及更多)系统,我们将数据从一个应用推送/拉取到另一个:托管CRM(InsideSales.com)Asterisk电话系统(内部)横幅广告系统(openx,我们托管)潜在客户生成系统(自行开发)电子商务商店(spree,我们托管)工作板(本土)一些工作网站抓取+入站工作提要电子邮件传送系统(如Mailchimp,自主开发)事件管理系统(如eventbrite,自主开发)仪表板系统(大量图表和

随机推荐