版本: Unity 6 (6000.0)
语言English
  • C#

ParticleSystem

UnityEngine 中的类

/

继承自:Component

/

实现于:UnityEngine.ParticleSystemModule

建议修改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实会阅读用户提出的每个建议更改,并在适用时进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

切换到手册

描述

内置粒子系统的脚本接口。Unity 功能强大且用途广泛的粒子系统实现。

常规参数

粒子系统的常规参数保存在一个特殊的 Main 模块中。这些参数在 Inspector 中所有其他模块的上方可见。



在脚本中,可以通过 ParticleSystem.main 访问这些参数。

访问模块属性

粒子系统属性按其所属的模块进行分组,例如 ParticleSystem.noiseParticleSystem.emission。这些属性是结构体,但其行为与普通的 C# 结构体不同。它们只是与本机代码的直接接口,因此与普通的 C# 结构体相比,了解如何使用它们非常重要。

主要区别在于,无需将结构体重新赋值回 Particle System 组件。当您设置模块结构体上的任何属性时,Unity 会立即将该值分配给粒子系统。

此外,由于每个模块都是一个结构体,因此必须先将其缓存在局部变量中,然后才能为该模块分配任何新值。例如,不要使用
ParticleSystem.emission.enabled = true; // 无法编译
而应使用
var emission = ParticleSystem.emission; // 将模块存储在局部变量中
emission.enabled = true; // 将新值直接应用于粒子系统


模块效果乘数

每个模块都具有特殊的乘数属性,允许您更改曲线的整体效果,而无需编辑曲线本身。这些乘数属性都以其影响的曲线命名 - 例如 ParticleSystem.emission.rateMultiplier 控制给定系统中 ParticleSystem.emission.rate 的整体效果。

常量值速记

参数支持用于简单常量值的速记表示法。要为参数设置常量值,您只需为其分配一个数字即可。无需在 ParticleSystemCurveMode.Constant 模式下创建 MinMaxCurveMinMaxGradient 对象。

例如,不要使用
var emission = ParticleSystem.emission;
emission.rate = new ParticleSystem.MinMaxCurve(5.0f);
而应使用
var emission = ParticleSystem.emission;
emission.rate = 5.0f;

性能说明:当设置粒子模块上的属性时,设置会立即传递到本机代码中。这提供了最佳性能。这意味着设置模块结构体上的属性不会在脚本中设置某些内容,这些内容需要设置回粒子系统;所有操作都会自动完成。

其他资源:Particle

属性

collision粒子系统的 CollisionModule 的脚本接口。
colorBySpeed粒子系统的 ColorByLifetimeModule 的脚本接口。
colorOverLifetime粒子系统的 ColorOverLifetimeModule 的脚本接口。
customData粒子系统的 CustomDataModule 的脚本接口。
emission粒子系统的 EmissionModule 的脚本接口。
externalForces粒子系统的 ExternalForcesModule 的脚本接口。
forceOverLifetime粒子系统的 ForceOverLifetimeModule 的脚本接口。
has3DParticleRotations确定粒子系统是否仅围绕 Z 轴旋转其粒子,或者系统是否为 X、Y 和 Z 轴指定单独的值。
hasNonUniformParticleSizes确定粒子系统是否对宽度和高度(以及使用网格时的深度)使用单个值,或者系统是否为每个轴指定不同的值。
inheritVelocity粒子系统的 InheritVelocityModule 的脚本接口。
isEmitting确定粒子系统是否正在发射粒子。当发射模块完成、已暂停或使用 Stop 且带有 StopEmitting 标志停止系统时,粒子系统可能会停止发射。通过调用 Play 恢复发射。
isPaused确定粒子系统是否已暂停。
isPlaying确定粒子系统是否正在播放。
isStopped确定粒子系统是否处于停止状态。
lifetimeByEmitterSpeed粒子系统 Lifetime By Emitter Speed 模块的脚本接口。
lights粒子系统的 LightsModule 的脚本接口。
limitVelocityOverLifetime粒子系统的 LimitVelocityOverLifetimeModule 的脚本接口。
main访问主要的粒子系统设置。
noise粒子系统的 NoiseModule 的脚本接口。
particleCount当前粒子数量(只读)。此数量不包括子粒子系统的粒子。
proceduralSimulationSupported确定此系统是否支持过程模拟。
randomSeed覆盖用于粒子系统发射的随机种子。
rotationBySpeed粒子系统的 RotationBySpeedModule 的脚本接口。
rotationOverLifetime粒子系统的 RotationOverLifetimeModule 的脚本接口。
shape粒子系统的 ShapeModule 的脚本接口。
sizeBySpeed粒子系统的 SizeBySpeedModule 的脚本接口。
sizeOverLifetime粒子系统的 SizeOverLifetimeModule 的脚本接口。
subEmitters粒子系统的 SubEmittersModule 的脚本接口。
textureSheetAnimation粒子系统的 TextureSheetAnimationModule 的脚本接口。
time以秒为单位的播放位置。
totalTime以秒为单位的总播放时间,包括“开始延迟”设置。
trails粒子系统的 TrailsModule 的脚本接口。
trigger粒子系统的 TriggerModule 的脚本接口。
useAutoRandomSeed控制粒子系统是否使用自动生成的随机数来播种随机数生成器。
velocityOverLifetime粒子系统的 VelocityOverLifetimeModule 的脚本接口。

公共方法

AllocateAxisOfRotationAttribute确保已分配 axisOfRotations 粒子属性数组。
AllocateCustomDataAttribute确保已分配 customData1 和 customData2 粒子属性数组。
AllocateMeshIndexAttribute确保已分配 meshIndices 粒子属性数组。
Clear删除粒子系统中的所有粒子。
Emit立即发射 count 个粒子。
GetCustomParticleData获取自定义每个粒子数据的流。
GetParticles获取此粒子系统的粒子。
GetPlaybackState返回与粒子系统的当前内部状态相关的所有数据。
GetTrails返回与粒子系统轨迹的当前内部状态相关的所有数据。
IsAlive粒子系统是否包含任何活动粒子,或者它是否会产生更多粒子?
Pause暂停系统,以便不再发射新粒子,并且不更新现有粒子。
Play启动粒子系统。
SetCustomParticleData设置自定义每个粒子数据的流。
SetParticles设置此粒子系统的粒子。
SetPlaybackState使用此方法和对 ParticleSystem.GetPlaybackState 的早期调用的结果,以便将粒子系统恢复到 playbackState 对象中存储的状态。
SetTrails使用此方法和对 ParticleSystem.GetTrails 的早期调用的结果,以便将粒子系统恢复到 Trails 对象中存储的状态。
Simulate通过在给定时间段内模拟粒子来快速转发粒子系统,然后将其暂停。
Stop使用提供的停止行为停止播放粒子系统。
TriggerSubEmitter触发粒子系统所有粒子上的指定子发射器。

静态方法

ResetPreMappedBufferMemory重置用于高效渲染粒子系统的预留图形内存的缓存。
SetMaximumPreMappedBufferCounts限制 Unity 为高效渲染粒子系统预留的图形内存量。

继承的成员

属性

gameObject此组件所附加到的游戏对象。组件始终附加到游戏对象。
tag此游戏对象的标签。
transform附加到此 GameObject 的 Transform。
hideFlags对象是否应隐藏、与场景一起保存或可由用户修改?
name对象的名称。

公共方法

BroadcastMessage在该游戏对象或其任何子对象中的每个 MonoBehaviour 上调用名为 methodName 的方法。
CompareTag将 GameObject 的标签与定义的标签进行比较。
GetComponent获取与指定组件位于同一 GameObject 上的类型为 T 的组件的引用。
GetComponentInChildren获取与指定组件位于同一 GameObject 上的类型为 T 的组件的引用,或获取 GameObject 的任何子对象的引用。
GetComponentIndex获取组件在其父 GameObject 上的索引。
GetComponentInParent获取与指定组件位于同一 GameObject 上的类型为 T 的组件的引用,或获取 GameObject 的任何父对象的引用。
GetComponents获取与指定组件位于同一 GameObject 上的所有类型为 T 的组件的引用。
GetComponentsInChildren获取与指定组件位于同一 GameObject 上的所有类型为 T 的组件的引用,以及 GameObject 的任何子对象的引用。
GetComponentsInParent获取与指定组件位于同一 GameObject 上的所有类型为 T 的组件的引用,以及 GameObject 的任何父对象的引用。
SendMessage在该游戏对象中的每个 MonoBehaviour 上调用名为 methodName 的方法。
SendMessageUpwards在该游戏对象和行为的每个祖先上的每个 MonoBehaviour 上调用名为 methodName 的方法。
TryGetComponent获取指定类型的组件(如果存在)。
GetInstanceID获取对象的实例 ID。
ToString返回对象的名称。

静态方法

Destroy

移除一个游戏对象、组件或资源。
DestroyImmediate立即销毁对象 obj。强烈建议使用 Destroy 代替。
DontDestroyOnLoad加载新场景时不要销毁目标对象。
FindAnyObjectByType检索任何已加载的类型为 type 的活动对象。
FindFirstObjectByType检索第一个已加载的类型为 type 的活动对象。
FindObjectsByType检索所有已加载的类型为 type 的对象的列表。
Instantiate克隆对象 original 并返回克隆体。
InstantiateAsync捕获原始对象(必须与某些游戏对象相关)的快照,并返回 AsyncInstantiateOperation。

运算符

bool对象是否存在?
operator !=比较两个对象是否引用不同的对象。
operator ==比较两个对象引用是否指向同一个对象。