Skip to content

Particle Emitter 核心

Inspector 中的 Particle Emitter 核心配置

Inspector 直接显示 Duration、Looping、Lifetime、Speed、Size、Color、Simulation Space 与 Max Particles。

ParticleEmitter 会生成独立的 TileParticleParticleConfig 保存编辑数据;每个播放实例拥有自己的 ParticleRuntime,其中包含顶层值、模块 Runtime、Custom Data 和 Renderer override。

核心设置

设置含义
durationEmitter 单次循环长度,单位为 tick。
loopingDuration 结束后开始下一轮。
prewarm第一帧可见前预先模拟的 tick 数。
startDelay每次 Emitter 开始时采样的 Function。
startLifetime新粒子的生命周期。
startSpeed沿 Shape 方向的初始速度大小。
startSize初始 X/Y/Z Size。
startRotation初始 X/Y/Z Rotation。
startColor初始颜色,后续 Color 模块和 Material 逻辑会继续相乘。
maxParticles该 Emitter 同时存活的粒子上限。
parallelUpdate允许符合条件的粒子并行更新。

生成流程

SpawnFrame 会在生成时保存 Emitter Transform 和 Simulation Space 转换。因此即使之后移动 FX root,Local/World/Custom 行为仍能保持一致。

Duration 与结束

非循环 Emitter 会在 Duration 后停止生成,但已有 Particle 或 Trail 仍在播放时,FX 不会结束。循环 Emitter 不会自然结束,拥有它的 Executor 应在合适时机销毁 Runtime。

Prewarm

Prewarm 适合循环 Smoke、Aura 或环境效果,让它们第一帧就像已经运行了一段时间。它会增加启动时的模拟成本,频繁生成的效果不要设置过大。

Parallel Update

Parallel Update 适合大量互相独立的粒子。Photon 对 World/Light 访问和 Sub Emitter 生成做了安全交接,但自定义逻辑不能引入不安全的共享可变状态。粒子较少时,调度成本可能高于收益。

Runtime 访问

java
ParticleEmitter emitter = (ParticleEmitter) runtime.findObject("sparks");
emitter.runtime().startSpeed.set(new Constant(0.2f));
emitter.runtime().maxParticles.set(256);

清除 override 后会恢复编辑器中的设置。详见 Runtime Data Injection

Released under the MIT License.