reckfellENGINE

GpuParticles2D

Двумерный излучатель частиц.

На этой странице
class GpuParticles2DReckfellSharpНаследует Entity2D

Двумерный излучатель частиц.

Узел 2D-частиц, используемый для создания различных систем частиц и эффектов. GpuParticles2D содержит излучатель, который генерирует некоторое количество частиц с заданной скоростью. Используйте свойство GpuParticles2D.ProcessMaterial, чтобы добавить ParticleProcessMaterial для настройки внешнего вида и поведения частиц. В качестве альтернативы вы можете добавить ShaderMaterial, который будет применен ко всем частицам. 2D-частицы могут опционально сталкиваться с узлами LightOccluder2D, но они не сталкиваются с узлами PhysicsBody2D.

Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.

Конструкторы1

GpuParticles2DКонструктор
# GpuParticles2D
C#
public GpuParticles2D();

Свойства26

AmountСвойство
# Amount
C#
public int Amount { get; set; }

Количество частиц, подлежащих выбросам в рамках одного цикла выбросов. (amount * amount_ratio) / lifetime Более высокие значения увеличивают требования к ГПУ, даже если не все частицы видны в данный момент времени или если GpuParticles2D.AmountRatio уменьшается. Примечание: Изменение этого значения приведет к возобновлению работы системы частиц. GpuParticles2D.AmountRatio вместо этого.

AmountRatioСвойство
# AmountRatio
C#
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Свойство
# CollisionBaseSize
C#
public float CollisionBaseSize { get; set; }

Множитель для радиуса столкновения частиц. 1.0 Если при столкновении частицы погружаются в землю, увеличивайте это значение. float При столкновении понижайте это значение. ParticleProcessMaterial.CollisionMode это ParticleProcessMaterial.CollisionModeEnum.Rigid или ParticleProcessMaterial.CollisionModeEnum.HideOnContact. Примечание: Частицы всегда имеют сферическую форму столкновения.

DrawOrderСвойство
# DrawOrder
C#
public GpuParticles2D.DrawOrderEnum DrawOrder { get; set; }

Порядок отрисовки частиц.

EmittingСвойство
# Emitting
C#
public bool Emitting { get; set; }

Разрешает появление новых частиц. false не удаляет уже живущие частицы: они продолжают существовать до завершения жизни. Это не эквивалент полной паузы или Restart. Для OneShot отслеживайте Finished, а не считайте Emitting=false доказательством пустого экрана.

ExplosivenessСвойство
# Explosiveness
C#
public float Explosiveness { get; set; }

Насколько быстро выбрасываются частицы в цикле эмиссии. Если больше 0, то будет разрыв в эмиссии до начала следующего цикла.

FixedFpsСвойство
# FixedFps
C#
public int FixedFps { get; set; }

Частота кадров системы частиц зафиксирована на значении. Например, изменение значения на 2 заставит частицы рендериться со скоростью 2 кадра в секунду. Обратите внимание, что это не замедляет симуляцию самой системы частиц.

FractDeltaСвойство
# FractDelta
C#
public bool FractDelta { get; set; }

Если true, то выполняется дробный расчет дельты, который обеспечивает более плавный эффект отображения частиц.

InterpToEndСвойство
# InterpToEnd
C#
public float InterpToEnd { get; set; }

Заставляет все частицы в этом узле интерполироваться к концу своего жизненного цикла. Примечание: Это работает только при использовании с ParticleProcessMaterial. Это необходимо вручную реализовать для шейдеров пользовательских процессов.

InterpolateСвойство
# Interpolate
C#
public bool Interpolate { get; set; }

Включает интерполяцию частиц, которая делает движение частиц более плавным, когда их GpuParticles2D.FixedFps ниже частоты обновления экрана.

LifetimeСвойство
# Lifetime
C#
public double Lifetime { get; set; }

Количество времени, в течение которого каждая частица будет существовать (в секундах). Эффективная скорость эмиссии равна (amount * amount_ratio) / lifetime частиц в секунду.

LocalCoordsСвойство
# LocalCoords
C#
public bool LocalCoords { get; set; }

Выбирает пространство симуляции. При true уже выпущенные частицы следуют трансформации эмиттера; при false остаются в мировом canvas-пространстве при последующем перемещении эмиттера. Выбирайте до запуска эффекта и отдельно учитывайте область видимости.

OneShotСвойство
# OneShot
C#
public bool OneShot { get; set; }

Если true, происходит только один цикл эмиссии. Если установить true во время цикла, эмиссия прекратится в конце цикла.

PreprocessСвойство
# Preprocess
C#
public double Preprocess { get; set; }

Система частиц запускается так, как будто она уже работала столько секунд. Примечание: Это может быть очень затратно, если установлено большое число, так как это требует запуска шейдера частиц количество раз, равное GpuParticles2D.FixedFps (или 30, если GpuParticles2D.FixedFps равен 0) для каждой секунды. В крайних случаях это может даже привести к сбою графического процессора из-за объема работы, выполненной за один кадр.

ProcessMaterialСвойство
# ProcessMaterial
C#
public Material ProcessMaterial { get; set; }

Материал симуляции, например ParticleProcessMaterial или ShaderMaterial с particle-шейдером; это не материал отрисовки CanvasItem. При назначении ParticleProcessMaterial с выключенным DisableZ и стандартной гравитацией (0,-9.8,0) реализация включает DisableZ и меняет гравитацию на (0,98,0). Общий ресурс при этом тоже изменяется. Задавайте нужные 2D-параметры явно до назначения.

RandomnessСвойство
# Randomness
C#
public float Randomness { get; set; }

Коэффициент случайности времени жизни излучения.

SeedСвойство
# Seed
C#
public uint Seed { get; set; }

Устанавливает случайное семя, используемое системой частиц. Действует только если GpuParticles2D.UseFixedSeed равен true.

SpeedScaleСвойство
# SpeedScale
C#
public double SpeedScale { get; set; }

Коэффициент масштабирования скорости работы системы частиц. Значение 0 может использоваться для остановки частиц.

SubEmitterСвойство
# SubEmitter
C#
public EntityPath SubEmitter { get; set; }

Путь к другому узлу GpuParticles2D, который будет использоваться как субэмиттер (см. ParticleProcessMaterial.SubEmitterMode). Субэмиттеры можно использовать для достижения таких эффектов, как фейерверк, искры при столкновении, пузыри, лопающиеся в каплях воды, и многое другое. Примечание: Когда задан GpuParticles2D.SubEmitter, целевой узел GpuParticles2D больше не будет испускать частицы самостоятельно.

TextureСвойство
# Texture
C#
public Texture2D Texture { get; set; }

Текстура частиц. Если null, частицы будут квадратами размером 1×1 пиксель. Примечание: Чтобы использовать текстуру флипбука/атласа спрайтов, назначьте новый CanvasItemMaterial свойству CanvasItem.Material GpuParticles2D, затем включите CanvasItemMaterial.ParticlesAnimation и установите CanvasItemMaterial.ParticlesAnimHFrames, CanvasItemMaterial.ParticlesAnimVFrames и CanvasItemMaterial.ParticlesAnimLoop для соответствия текстуре флипбука/атласа спрайтов.

TrailEnabledСвойство
# TrailEnabled
C#
public bool TrailEnabled { get; set; }

Если true, включает следы частиц с использованием системы скиннинга сетки. Примечание: В отличие от GpuParticles3D, количество секций и подразделений следа задается свойствами GpuParticles2D.TrailSections и GpuParticles2D.TrailSectionSubdivisions.

TrailLifetimeСвойство
# TrailLifetime
C#
public double TrailLifetime { get; set; }

Количество времени, которое должен представлять след частицы (в секундах). Действует только если GpuParticles2D.TrailEnabled равен true.

TrailSectionSubdivisionsСвойство
# TrailSectionSubdivisions
C#
public int TrailSectionSubdivisions { get; set; }

Количество подразделений, используемых для рендеринга следа частиц. Более высокие значения могут привести к более плавным кривым следа за счет производительности из-за повышенной сложности сетки. См. также GpuParticles2D.TrailSections. Действует только если GpuParticles2D.TrailEnabled имеет значение true.

TrailSectionsСвойство
# TrailSections
C#
public int TrailSections { get; set; }

Количество секций, используемых для рендеринга следа частиц. Более высокие значения могут привести к более плавным кривым следа за счет производительности из-за повышенной сложности сетки. См. также GpuParticles2D.TrailSectionSubdivisions. Действует только если GpuParticles2D.TrailEnabled имеет значение true.

UseFixedSeedСвойство
# UseFixedSeed
C#
public bool UseFixedSeed { get; set; }

Если true, частицы будут использовать одно и то же семя для каждой симуляции, используя семя, определенное в GpuParticles2D.Seed. Это полезно в ситуациях, когда визуальный результат должен быть согласованным между повторами, например, при использовании режима Создатель кино.

VisibilityRectСвойство
# VisibilityRect
C#
public Rect2 VisibilityRect { get; set; }

Заданная область видимости GPU-эффекта. Используется для culling; не задаёт траекторию и не является физической или обрезающей границей каждой частицы. Рассчитайте запас под всю жизнь, размеры текстуры и движение эмиттера. В проверенном Compatibility CaptureRect ошибается для 2D, поэтому пример задаёт консервативную область явно.

Методы59

CaptureRectRect2
# CaptureRect
C#
public Rect2 CaptureRect();

Запрашивает текущие границы частиц у рендерера. В проверенной сборке 1.0.0 Compatibility/OpenGL вызов для 2D воспроизвёл ошибки чтения буфера и пустой Rect2. Не используйте такой результат как доказательство отсутствия частиц или как надёжную основу VisibilityRect.

Явные границы для полного примера.

Возвращает Rect2

Rect2 от рендерера. В воспроизведённом OpenGL-сбое он пустой при видимых частицах. Другие backend этим вызовом не проверены.

ConvertFromParticlesvoid
# ConvertFromParticles
C#
public void ConvertFromParticles(Entity particles);

Устанавливает свойства этого узла в соответствии с заданным узлом CpuParticles2D.

Параметры
ИмяТипПо умолчанию
particlesEntity—
EmitParticlevoid
# EmitParticle
C#
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 , поддерживается только методами "переднего+" и "Мобильного перевода", а не совместимостью.

Параметры
ИмяТипПо умолчанию
xformTransform2D—
velocityVector2—
colorColor—
customColor—
flagsuint—
GetAmountint
# GetAmount
C#
public int GetAmount();
Возвращает int
GetAmountRatiofloat
# GetAmountRatio
C#
public float GetAmountRatio();
Возвращает float
GetCollisionBaseSizefloat
# GetCollisionBaseSize
C#
public float GetCollisionBaseSize();
Возвращает float
GetDrawOrderGpuParticles2D.DrawOrderEnum
# GetDrawOrder
C#
public GpuParticles2D.DrawOrderEnum GetDrawOrder();
Возвращает GpuParticles2D.DrawOrderEnum
GetExplosivenessRatiofloat
# GetExplosivenessRatio
C#
public float GetExplosivenessRatio();
Возвращает float
GetFixedFpsint
# GetFixedFps
C#
public int GetFixedFps();
Возвращает int
GetFractionalDeltabool
# GetFractionalDelta
C#
public bool GetFractionalDelta();
Возвращает bool
GetInterpToEndfloat
# GetInterpToEnd
C#
public float GetInterpToEnd();
Возвращает float
GetInterpolatebool
# GetInterpolate
C#
public bool GetInterpolate();
Возвращает bool
GetLifetimedouble
# GetLifetime
C#
public double GetLifetime();
Возвращает double
GetOneShotbool
# GetOneShot
C#
public bool GetOneShot();
Возвращает bool
GetPreProcessTimedouble
# GetPreProcessTime
C#
public double GetPreProcessTime();
Возвращает double
GetProcessMaterialMaterial
# GetProcessMaterial
C#
public Material GetProcessMaterial();
Возвращает Material
GetRandomnessRatiofloat
# GetRandomnessRatio
C#
public float GetRandomnessRatio();
Возвращает float
GetSeeduint
# GetSeed
C#
public uint GetSeed();
Возвращает uint
GetSpeedScaledouble
# GetSpeedScale
C#
public double GetSpeedScale();
Возвращает double
GetSubEmitterEntityPath
# GetSubEmitter
C#
public EntityPath GetSubEmitter();
Возвращает EntityPath
GetTextureTexture2D
# GetTexture
C#
public Texture2D GetTexture();
Возвращает Texture2D
GetTrailLifetimedouble
# GetTrailLifetime
C#
public double GetTrailLifetime();
Возвращает double
GetTrailSectionSubdivisionsint
# GetTrailSectionSubdivisions
C#
public int GetTrailSectionSubdivisions();
Возвращает int
GetTrailSectionsint
# GetTrailSections
C#
public int GetTrailSections();
Возвращает int
GetUseFixedSeedbool
# GetUseFixedSeed
C#
public bool GetUseFixedSeed();
Возвращает bool
GetUseLocalCoordinatesbool
# GetUseLocalCoordinates
C#
public bool GetUseLocalCoordinates();
Возвращает bool
GetVisibilityRectRect2
# GetVisibilityRect
C#
public Rect2 GetVisibilityRect();
Возвращает Rect2
IsEmittingbool
# IsEmitting
C#
public bool IsEmitting();
Возвращает bool
IsTrailEnabledbool
# IsTrailEnabled
C#
public bool IsTrailEnabled();
Возвращает bool
RequestParticlesProcess2 перегрузки
# RequestParticlesProcess · 1/2
C#
public void RequestParticlesProcess(float processTime);

Запрашивает у частиц дополнительное время обработки в течение одного кадра. process_time определяет время обработки частиц при включенном излучении. process_time_residual определяет время обработки частиц при выключенном излучении для моделирования. В сочетании с GpuParticles2D.SpeedScale, установленным на 0.0, это полезно для возможности поиска временной шкалы системы частиц.

Параметры
ИмяТипПо умолчанию
processTimefloat—
# RequestParticlesProcess · 2/2
C#
public void RequestParticlesProcess(float processTime, float processTimeResidual = 0f);

Запрашивает у частиц дополнительное время обработки в течение одного кадра. process_time определяет время обработки частиц при включенном излучении. process_time_residual определяет время обработки частиц при выключенном излучении для моделирования. В сочетании с GpuParticles2D.SpeedScale, установленным на 0.0, это полезно для возможности поиска временной шкалы системы частиц.

Параметры
ИмяТипПо умолчанию
processTimefloat—
processTimeResidualfloat0f
Restart2 перегрузки
# Restart · 1/2
C#
public void Restart();

Перезапускает систему частиц. Для явного управления seed используйте перегрузку Restart(bool keepSeed). Перезапуск отличается от простого Emitting=true и начинает эффект заново.

# Restart · 2/2
C#
public void Restart(bool keepSeed = false);

Сбрасывает состояние симуляции и включает эмиссию. Seed сохраняется при keepSeed=true или UseFixedSeed=true; новое случайное значение выбирается только когда оба флага false. Изменение изображения появляется после обработки/отрисовки кадра.

Параметры
ИмяТипПо умолчанию
keepSeedboolfalse
keepSeed

При true сохраняет текущий seed. false не принуждает новый seed, если UseFixedSeed уже true. Сохранение seed не гарантирует одинаковые пиксели между CPU/GPU, устройствами или разными конфигурациями.

SetAmountvoid
# SetAmount
C#
public void SetAmount(int amount);
Параметры
ИмяТипПо умолчанию
amountint—
SetAmountRatiovoid
# SetAmountRatio
C#
public void SetAmountRatio(float ratio);
Параметры
ИмяТипПо умолчанию
ratiofloat—
SetCollisionBaseSizevoid
# SetCollisionBaseSize
C#
public void SetCollisionBaseSize(float size);
Параметры
ИмяТипПо умолчанию
sizefloat—
SetDrawOrdervoid
# SetDrawOrder
C#
public void SetDrawOrder(GpuParticles2D.DrawOrderEnum order);
Параметры
ИмяТипПо умолчанию
orderGpuParticles2D.DrawOrderEnum—
SetEmittingvoid
# SetEmitting
C#
public void SetEmitting(bool emitting);
Параметры
ИмяТипПо умолчанию
emittingbool—
SetExplosivenessRatiovoid
# SetExplosivenessRatio
C#
public void SetExplosivenessRatio(float ratio);
Параметры
ИмяТипПо умолчанию
ratiofloat—
SetFixedFpsvoid
# SetFixedFps
C#
public void SetFixedFps(int fps);
Параметры
ИмяТипПо умолчанию
fpsint—
SetFractionalDeltavoid
# SetFractionalDelta
C#
public void SetFractionalDelta(bool enable);
Параметры
ИмяТипПо умолчанию
enablebool—
SetInterpToEndvoid
# SetInterpToEnd
C#
public void SetInterpToEnd(float interp);
Параметры
ИмяТипПо умолчанию
interpfloat—
SetInterpolatevoid
# SetInterpolate
C#
public void SetInterpolate(bool enable);
Параметры
ИмяТипПо умолчанию
enablebool—
SetLifetimevoid
# SetLifetime
C#
public void SetLifetime(double secs);
Параметры
ИмяТипПо умолчанию
secsdouble—
SetOneShotvoid
# SetOneShot
C#
public void SetOneShot(bool secs);
Параметры
ИмяТипПо умолчанию
secsbool—
SetPreProcessTimevoid
# SetPreProcessTime
C#
public void SetPreProcessTime(double secs);
Параметры
ИмяТипПо умолчанию
secsdouble—
SetProcessMaterialvoid
# SetProcessMaterial
C#
public void SetProcessMaterial(Material material);
Параметры
ИмяТипПо умолчанию
materialMaterial—
SetRandomnessRatiovoid
# SetRandomnessRatio
C#
public void SetRandomnessRatio(float ratio);
Параметры
ИмяТипПо умолчанию
ratiofloat—
SetSeedvoid
# SetSeed
C#
public void SetSeed(uint seed);
Параметры
ИмяТипПо умолчанию
seeduint—
SetSpeedScalevoid
# SetSpeedScale
C#
public void SetSpeedScale(double scale);
Параметры
ИмяТипПо умолчанию
scaledouble—
SetSubEmittervoid
# SetSubEmitter
C#
public void SetSubEmitter(EntityPath path);
Параметры
ИмяТипПо умолчанию
pathEntityPath—
SetTexturevoid
# SetTexture
C#
public void SetTexture(Texture2D texture);
Параметры
ИмяТипПо умолчанию
textureTexture2D—
SetTrailEnabledvoid
# SetTrailEnabled
C#
public void SetTrailEnabled(bool enabled);
Параметры
ИмяТипПо умолчанию
enabledbool—
SetTrailLifetimevoid
# SetTrailLifetime
C#
public void SetTrailLifetime(double secs);
Параметры
ИмяТипПо умолчанию
secsdouble—
SetTrailSectionSubdivisionsvoid
# SetTrailSectionSubdivisions
C#
public void SetTrailSectionSubdivisions(int subdivisions);
Параметры
ИмяТипПо умолчанию
subdivisionsint—
SetTrailSectionsvoid
# SetTrailSections
C#
public void SetTrailSections(int sections);
Параметры
ИмяТипПо умолчанию
sectionsint—
SetUseFixedSeedvoid
# SetUseFixedSeed
C#
public void SetUseFixedSeed(bool useFixedSeed);
Параметры
ИмяТипПо умолчанию
useFixedSeedbool—
SetUseLocalCoordinatesvoid
# SetUseLocalCoordinates
C#
public void SetUseLocalCoordinates(bool enable);
Параметры
ИмяТипПо умолчанию
enablebool—
SetVisibilityRectvoid
# SetVisibilityRect
C#
public void SetVisibilityRect(Rect2 visibilityRect);
Параметры
ИмяТипПо умолчанию
visibilityRectRect2—

Сигналы и события1

FinishedСобытие
# Finished
C#
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

Частица начинается с указанных данных CUSTOM.

Position = 1

Частица стартует в указанной позиции.

RotationScale = 2

Частица начинается с указанного поворота и масштаба.

Velocity = 4

Частица стартует с заданным вектором скорости, который определяет направление и скорость излучения.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.