GpuParticles2D
Двумерный излучатель частиц.
Двумерный излучатель частиц.
Узел 2D-частиц, используемый для создания различных систем частиц и эффектов. GpuParticles2D содержит излучатель, который генерирует некоторое количество частиц с заданной скоростью.
Используйте свойство GpuParticles2D.ProcessMaterial, чтобы добавить ParticleProcessMaterial для настройки внешнего вида и поведения частиц. В качестве альтернативы вы можете добавить ShaderMaterial, который будет применен ко всем частицам.
2D-частицы могут опционально сталкиваться с узлами LightOccluder2D, но они не сталкиваются с узлами PhysicsBody2D.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
GpuParticles2DКонструктор
public GpuParticles2D();Свойства26
AmountСвойство
public int Amount { get; set; }Количество частиц, подлежащих выбросам в рамках одного цикла выбросов. (amount * amount_ratio) / lifetime Более высокие значения увеличивают требования к ГПУ, даже если не все частицы видны в данный момент времени или если GpuParticles2D.AmountRatio уменьшается.
Примечание: Изменение этого значения приведет к возобновлению работы системы частиц. GpuParticles2D.AmountRatio вместо этого.
AmountRatioСвойство
public float AmountRatio { get; set; }Соотношение частиц, которые должны быть фактически испущены. Если установлено значение ниже 1.0, это установит количество испускаемых частиц за время жизни на amount * amount_ratio. В отличие от изменения GpuParticles2D.Amount, изменение GpuParticles2D.AmountRatio во время испускания не влияет на уже испущенные частицы и не приводит к перезапуску системы частиц. GpuParticles2D.AmountRatio можно использовать для создания эффектов, которые заставляют количество испускаемых частиц меняться со временем.
Примечание: Уменьшение GpuParticles2D.AmountRatio не дает выигрыша в производительности, поскольку ресурсы должны быть выделены и обработаны для общего GpuParticles2D.Amount частиц независимо от GpuParticles2D.AmountRatio. Если вы не собираетесь изменять количество испускаемых частиц во время испускания частиц, убедитесь, что GpuParticles2D.AmountRatio установлено на 1 и вместо этого измените GpuParticles2D.Amount по своему усмотрению.
CollisionBaseSizeСвойство
public float CollisionBaseSize { get; set; }Множитель для радиуса столкновения частиц. 1.0 Если при столкновении частицы погружаются в землю, увеличивайте это значение. float При столкновении понижайте это значение. ParticleProcessMaterial.CollisionMode это ParticleProcessMaterial.CollisionModeEnum.Rigid или ParticleProcessMaterial.CollisionModeEnum.HideOnContact.
Примечание: Частицы всегда имеют сферическую форму столкновения.
DrawOrderСвойство
public GpuParticles2D.DrawOrderEnum DrawOrder { get; set; }Порядок отрисовки частиц.
EmittingСвойство
public bool Emitting { get; set; }Разрешает появление новых частиц. false не удаляет уже живущие частицы: они продолжают существовать до завершения жизни. Это не эквивалент полной паузы или Restart. Для OneShot отслеживайте Finished, а не считайте Emitting=false доказательством пустого экрана.
ExplosivenessСвойство
public float Explosiveness { get; set; }Насколько быстро выбрасываются частицы в цикле эмиссии. Если больше 0, то будет разрыв в эмиссии до начала следующего цикла.
FixedFpsСвойство
public int FixedFps { get; set; }Частота кадров системы частиц зафиксирована на значении. Например, изменение значения на 2 заставит частицы рендериться со скоростью 2 кадра в секунду. Обратите внимание, что это не замедляет симуляцию самой системы частиц.
FractDeltaСвойство
public bool FractDelta { get; set; }Если true, то выполняется дробный расчет дельты, который обеспечивает более плавный эффект отображения частиц.
InterpToEndСвойство
public float InterpToEnd { get; set; }Заставляет все частицы в этом узле интерполироваться к концу своего жизненного цикла.
Примечание: Это работает только при использовании с ParticleProcessMaterial. Это необходимо вручную реализовать для шейдеров пользовательских процессов.
InterpolateСвойство
public bool Interpolate { get; set; }Включает интерполяцию частиц, которая делает движение частиц более плавным, когда их GpuParticles2D.FixedFps ниже частоты обновления экрана.
LifetimeСвойство
public double Lifetime { get; set; }Количество времени, в течение которого каждая частица будет существовать (в секундах). Эффективная скорость эмиссии равна (amount * amount_ratio) / lifetime частиц в секунду.
LocalCoordsСвойство
public bool LocalCoords { get; set; }Выбирает пространство симуляции. При true уже выпущенные частицы следуют трансформации эмиттера; при false остаются в мировом canvas-пространстве при последующем перемещении эмиттера. Выбирайте до запуска эффекта и отдельно учитывайте область видимости.
OneShotСвойство
public bool OneShot { get; set; }Если true, происходит только один цикл эмиссии. Если установить true во время цикла, эмиссия прекратится в конце цикла.
PreprocessСвойство
public double Preprocess { get; set; }Система частиц запускается так, как будто она уже работала столько секунд.
Примечание: Это может быть очень затратно, если установлено большое число, так как это требует запуска шейдера частиц количество раз, равное GpuParticles2D.FixedFps (или 30, если GpuParticles2D.FixedFps равен 0) для каждой секунды. В крайних случаях это может даже привести к сбою графического процессора из-за объема работы, выполненной за один кадр.
ProcessMaterialСвойство
public Material ProcessMaterial { get; set; }Материал симуляции, например ParticleProcessMaterial или ShaderMaterial с particle-шейдером; это не материал отрисовки CanvasItem. При назначении ParticleProcessMaterial с выключенным DisableZ и стандартной гравитацией (0,-9.8,0) реализация включает DisableZ и меняет гравитацию на (0,98,0). Общий ресурс при этом тоже изменяется. Задавайте нужные 2D-параметры явно до назначения.
RandomnessСвойство
public float Randomness { get; set; }Коэффициент случайности времени жизни излучения.
SeedСвойство
public uint Seed { get; set; }Устанавливает случайное семя, используемое системой частиц. Действует только если GpuParticles2D.UseFixedSeed равен true.
SpeedScaleСвойство
public double SpeedScale { get; set; }Коэффициент масштабирования скорости работы системы частиц. Значение 0 может использоваться для остановки частиц.
SubEmitterСвойство
public EntityPath SubEmitter { get; set; }Путь к другому узлу GpuParticles2D, который будет использоваться как субэмиттер (см. ParticleProcessMaterial.SubEmitterMode). Субэмиттеры можно использовать для достижения таких эффектов, как фейерверк, искры при столкновении, пузыри, лопающиеся в каплях воды, и многое другое.
Примечание: Когда задан GpuParticles2D.SubEmitter, целевой узел GpuParticles2D больше не будет испускать частицы самостоятельно.
TextureСвойство
public Texture2D Texture { get; set; }Текстура частиц. Если null, частицы будут квадратами размером 1×1 пиксель.
Примечание: Чтобы использовать текстуру флипбука/атласа спрайтов, назначьте новый CanvasItemMaterial свойству CanvasItem.Material GpuParticles2D, затем включите CanvasItemMaterial.ParticlesAnimation и установите CanvasItemMaterial.ParticlesAnimHFrames, CanvasItemMaterial.ParticlesAnimVFrames и CanvasItemMaterial.ParticlesAnimLoop для соответствия текстуре флипбука/атласа спрайтов.
TrailEnabledСвойство
public bool TrailEnabled { get; set; }Если true, включает следы частиц с использованием системы скиннинга сетки.
Примечание: В отличие от GpuParticles3D, количество секций и подразделений следа задается свойствами GpuParticles2D.TrailSections и GpuParticles2D.TrailSectionSubdivisions.
TrailLifetimeСвойство
public double TrailLifetime { get; set; }Количество времени, которое должен представлять след частицы (в секундах). Действует только если GpuParticles2D.TrailEnabled равен true.
TrailSectionSubdivisionsСвойство
public int TrailSectionSubdivisions { get; set; }Количество подразделений, используемых для рендеринга следа частиц. Более высокие значения могут привести к более плавным кривым следа за счет производительности из-за повышенной сложности сетки. См. также GpuParticles2D.TrailSections. Действует только если GpuParticles2D.TrailEnabled имеет значение true.
TrailSectionsСвойство
public int TrailSections { get; set; }Количество секций, используемых для рендеринга следа частиц. Более высокие значения могут привести к более плавным кривым следа за счет производительности из-за повышенной сложности сетки. См. также GpuParticles2D.TrailSectionSubdivisions. Действует только если GpuParticles2D.TrailEnabled имеет значение true.
UseFixedSeedСвойство
public bool UseFixedSeed { get; set; }Если true, частицы будут использовать одно и то же семя для каждой симуляции, используя семя, определенное в GpuParticles2D.Seed. Это полезно в ситуациях, когда визуальный результат должен быть согласованным между повторами, например, при использовании режима Создатель кино.
VisibilityRectСвойство
public Rect2 VisibilityRect { get; set; }Заданная область видимости GPU-эффекта. Используется для culling; не задаёт траекторию и не является физической или обрезающей границей каждой частицы. Рассчитайте запас под всю жизнь, размеры текстуры и движение эмиттера. В проверенном Compatibility CaptureRect ошибается для 2D, поэтому пример задаёт консервативную область явно.
Методы59
CaptureRectRect2
public Rect2 CaptureRect();Запрашивает текущие границы частиц у рендерера. В проверенной сборке 1.0.0 Compatibility/OpenGL вызов для 2D воспроизвёл ошибки чтения буфера и пустой Rect2. Не используйте такой результат как доказательство отсутствия частиц или как надёжную основу VisibilityRect.
Явные границы для полного примера.
Rect2Rect2 от рендерера. В воспроизведённом OpenGL-сбое он пустой при видимых частицах. Другие backend этим вызовом не проверены.
ConvertFromParticlesvoid
public void ConvertFromParticles(Entity particles);Устанавливает свойства этого узла в соответствии с заданным узлом CpuParticles2D.
| Имя | Тип | По умолчанию |
|---|---|---|
particles | Entity | — |
EmitParticlevoid
public void EmitParticle(Transform2D xform, Vector2 velocity, Color color, Color custom, uint flags);Одна частица. xform, velocity, color и custom применяются в зависимости от стоимости flagsСм. GpuParticles2D.EmitFlags.
По умолчанию ParticleProcessMaterial должны быть ParticleProcessMaterial.ParticleFlagPreserveColor установлен в true правильно использовать цвет, указанный в этой функции.
Кроме того, она будет использовать содержание custom как (rotation, lifetime, animation, lifetime randomness).
Примечание: GpuParticles2D.EmitParticle , поддерживается только методами "переднего+" и "Мобильного перевода", а не совместимостью.
| Имя | Тип | По умолчанию |
|---|---|---|
xform | Transform2D | — |
velocity | Vector2 | — |
color | Color | — |
custom | Color | — |
flags | uint | — |
GetAmountint
public int GetAmount();intGetAmountRatiofloat
public float GetAmountRatio();floatGetCollisionBaseSizefloat
public float GetCollisionBaseSize();floatGetDrawOrderGpuParticles2D.DrawOrderEnum
public GpuParticles2D.DrawOrderEnum GetDrawOrder();GpuParticles2D.DrawOrderEnumGetExplosivenessRatiofloat
public float GetExplosivenessRatio();floatGetFixedFpsint
public int GetFixedFps();intGetFractionalDeltabool
public bool GetFractionalDelta();boolGetInterpToEndfloat
public float GetInterpToEnd();floatGetInterpolatebool
public bool GetInterpolate();boolGetLifetimedouble
public double GetLifetime();doubleGetOneShotbool
public bool GetOneShot();boolGetPreProcessTimedouble
public double GetPreProcessTime();doubleGetProcessMaterialMaterial
public Material GetProcessMaterial();MaterialGetRandomnessRatiofloat
public float GetRandomnessRatio();floatGetSeeduint
public uint GetSeed();uintGetSpeedScaledouble
public double GetSpeedScale();doubleGetSubEmitterEntityPath
public EntityPath GetSubEmitter();EntityPathGetTextureTexture2D
public Texture2D GetTexture();Texture2DGetTrailLifetimedouble
public double GetTrailLifetime();doubleGetTrailSectionSubdivisionsint
public int GetTrailSectionSubdivisions();intGetTrailSectionsint
public int GetTrailSections();intGetUseFixedSeedbool
public bool GetUseFixedSeed();boolGetUseLocalCoordinatesbool
public bool GetUseLocalCoordinates();boolGetVisibilityRectRect2
public Rect2 GetVisibilityRect();Rect2IsEmittingbool
public bool IsEmitting();boolIsTrailEnabledbool
public bool IsTrailEnabled();boolRequestParticlesProcess2 перегрузки
public void RequestParticlesProcess(float processTime);Запрашивает у частиц дополнительное время обработки в течение одного кадра.
process_time определяет время обработки частиц при включенном излучении. process_time_residual определяет время обработки частиц при выключенном излучении для моделирования. В сочетании с GpuParticles2D.SpeedScale, установленным на 0.0, это полезно для возможности поиска временной шкалы системы частиц.
| Имя | Тип | По умолчанию |
|---|---|---|
processTime | float | — |
public void RequestParticlesProcess(float processTime, float processTimeResidual = 0f);Запрашивает у частиц дополнительное время обработки в течение одного кадра.
process_time определяет время обработки частиц при включенном излучении. process_time_residual определяет время обработки частиц при выключенном излучении для моделирования. В сочетании с GpuParticles2D.SpeedScale, установленным на 0.0, это полезно для возможности поиска временной шкалы системы частиц.
| Имя | Тип | По умолчанию |
|---|---|---|
processTime | float | — |
processTimeResidual | float | 0f |
Restart2 перегрузки
public void Restart();Перезапускает систему частиц. Для явного управления seed используйте перегрузку Restart(bool keepSeed). Перезапуск отличается от простого Emitting=true и начинает эффект заново.
public void Restart(bool keepSeed = false);Сбрасывает состояние симуляции и включает эмиссию. Seed сохраняется при keepSeed=true или UseFixedSeed=true; новое случайное значение выбирается только когда оба флага false. Изменение изображения появляется после обработки/отрисовки кадра.
| Имя | Тип | По умолчанию |
|---|---|---|
keepSeed | bool | false |
keepSeedПри true сохраняет текущий seed. false не принуждает новый seed, если UseFixedSeed уже true. Сохранение seed не гарантирует одинаковые пиксели между CPU/GPU, устройствами или разными конфигурациями.
SetAmountvoid
public void SetAmount(int amount);| Имя | Тип | По умолчанию |
|---|---|---|
amount | int | — |
SetAmountRatiovoid
public void SetAmountRatio(float ratio);| Имя | Тип | По умолчанию |
|---|---|---|
ratio | float | — |
SetCollisionBaseSizevoid
public void SetCollisionBaseSize(float size);| Имя | Тип | По умолчанию |
|---|---|---|
size | float | — |
SetDrawOrdervoid
public void SetDrawOrder(GpuParticles2D.DrawOrderEnum order);| Имя | Тип | По умолчанию |
|---|---|---|
order | GpuParticles2D.DrawOrderEnum | — |
SetEmittingvoid
public void SetEmitting(bool emitting);| Имя | Тип | По умолчанию |
|---|---|---|
emitting | bool | — |
SetExplosivenessRatiovoid
public void SetExplosivenessRatio(float ratio);| Имя | Тип | По умолчанию |
|---|---|---|
ratio | float | — |
SetFixedFpsvoid
public void SetFixedFps(int fps);| Имя | Тип | По умолчанию |
|---|---|---|
fps | int | — |
SetFractionalDeltavoid
public void SetFractionalDelta(bool enable);| Имя | Тип | По умолчанию |
|---|---|---|
enable | bool | — |
SetInterpToEndvoid
public void SetInterpToEnd(float interp);| Имя | Тип | По умолчанию |
|---|---|---|
interp | float | — |
SetInterpolatevoid
public void SetInterpolate(bool enable);| Имя | Тип | По умолчанию |
|---|---|---|
enable | bool | — |
SetLifetimevoid
public void SetLifetime(double secs);| Имя | Тип | По умолчанию |
|---|---|---|
secs | double | — |
SetOneShotvoid
public void SetOneShot(bool secs);| Имя | Тип | По умолчанию |
|---|---|---|
secs | bool | — |
SetPreProcessTimevoid
public void SetPreProcessTime(double secs);| Имя | Тип | По умолчанию |
|---|---|---|
secs | double | — |
SetProcessMaterialvoid
public void SetProcessMaterial(Material material);| Имя | Тип | По умолчанию |
|---|---|---|
material | Material | — |
SetRandomnessRatiovoid
public void SetRandomnessRatio(float ratio);| Имя | Тип | По умолчанию |
|---|---|---|
ratio | float | — |
SetSeedvoid
public void SetSeed(uint seed);| Имя | Тип | По умолчанию |
|---|---|---|
seed | uint | — |
SetSpeedScalevoid
public void SetSpeedScale(double scale);| Имя | Тип | По умолчанию |
|---|---|---|
scale | double | — |
SetSubEmittervoid
public void SetSubEmitter(EntityPath path);| Имя | Тип | По умолчанию |
|---|---|---|
path | EntityPath | — |
SetTexturevoid
public void SetTexture(Texture2D texture);| Имя | Тип | По умолчанию |
|---|---|---|
texture | Texture2D | — |
SetTrailEnabledvoid
public void SetTrailEnabled(bool enabled);| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
SetTrailLifetimevoid
public void SetTrailLifetime(double secs);| Имя | Тип | По умолчанию |
|---|---|---|
secs | double | — |
SetTrailSectionSubdivisionsvoid
public void SetTrailSectionSubdivisions(int subdivisions);| Имя | Тип | По умолчанию |
|---|---|---|
subdivisions | int | — |
SetTrailSectionsvoid
public void SetTrailSections(int sections);| Имя | Тип | По умолчанию |
|---|---|---|
sections | int | — |
SetUseFixedSeedvoid
public void SetUseFixedSeed(bool useFixedSeed);| Имя | Тип | По умолчанию |
|---|---|---|
useFixedSeed | bool | — |
SetUseLocalCoordinatesvoid
public void SetUseLocalCoordinates(bool enable);| Имя | Тип | По умолчанию |
|---|---|---|
enable | bool | — |
SetVisibilityRectvoid
public void SetVisibilityRect(Rect2 visibilityRect);| Имя | Тип | По умолчанию |
|---|---|---|
visibilityRect | Rect2 | — |
Сигналы и события1
FinishedСобытие
public event Action Finished;Вызывается, когда все активные частицы завершили обработку. Чтобы немедленно перезапустить цикл испускания, вызовите GpuParticles2D.Restart.
Этот сигнал никогда не вызывается, когда GpuParticles2D.OneShot отключен, так как частицы будут испускаться и обрабатываться непрерывно.
Примечание: Для эмиттеров GpuParticles2D.OneShot, поскольку частицы вычисляются на GPU, может быть короткий период после получения сигнала, в течение которого установка GpuParticles2D.Emitting на true не перезапустит цикл испускания. Эта задержка устраняется путем вызова GpuParticles2D.Restart.
GpuParticles2D.DrawOrderEnum
| Значение | Описание |
|---|---|
Index = 0 | Частицы рисуются в порядке испускания. |
Lifetime = 1 | Частицы рисуются в порядке оставшегося времени жизни. Другими словами, частица с наибольшим временем жизни рисуется спереди. |
ReverseLifetime = 2 | Частицы рисуются в обратном порядке оставшегося времени жизни. Другими словами, частица с наименьшим временем жизни рисуется спереди. |
GpuParticles2D.EmitFlags
| Значение | Описание |
|---|---|
Color = 8 | Частица начинается с указанного цвета. |
Custom = 16 | Частица начинается с указанных данных |
Position = 1 | Частица стартует в указанной позиции. |
RotationScale = 2 | Частица начинается с указанного поворота и масштаба. |
Velocity = 4 | Частица стартует с заданным вектором скорости, который определяет направление и скорость излучения. |