AsgineVFX 是一款 GPU 驱动的 Unity 编辑器创作工具,在通用渲染管道上具有与 Unity 6.x 相匹配的运行时。它提供了功能齐全的粒子发射器、贝塞尔光束、附件轨迹、游戏模块(闪电、陨石坑和相机震动)、交换工具和池化补间引擎。粒子在 GPU 上模拟,丝带由 GPU 渲染,每个效果共享一个光晕/发光通道。
Unity 6.xURP 已激活新输入系统(仅限演示)
.unitypackage 拖到项目窗口中)。| 命名空间 | 包含 |
|---|---|
ASParticleSystem | 发射器、序列、区域、数据类型、注册表 |
ASBeamSystem | 光束 |
ASTrailSystem | 附件路径 |
Game.Lightning | 闪电管理器/螺栓,摇滚模块 |
Game.CameraFx | 相机摇杆+预设 |
AsgineVFX.Tweening | 补间引擎(AS_Tween,补间类型) |
AsgineVFX 中包含的主要系统以及每个系统提供的功能。
.asg导入嵌入式层次结构、材质和纹理。ASParticleSystem.ASParticleEmitter — 一个完整的 GPU 粒子发射器。将其添加到游戏对象中;它的变换位置/旋转/比例定义了发射形状和方向。
using ASParticleSystem;
ASParticleEmitter emitter = GetComponent<ASParticleEmitter>();
// Continuous emission is driven by Rate while Enabled is true.
emitter.Enabled = true;
// One-shot burst using the emitter's own EmitCount:
emitter.TriggerEmit();
// Burst with a size scale and a re-timescale (0.5 = whole effect at half speed):
emitter.TriggerEmit(scale: 1.5f, reTimeScale: 0.5f);
// Burst overriding the particle count for this shot only:
emitter.TriggerEmit(countOverride: 64, scale: 1f, reTimeScale: 1f);
// Immediate raw burst / clear all live particles:
emitter.Emit(16);
emitter.Clear();
reTimeScale 缩放镜头的整个时间轴 — EmitDelay、EmitDuration、TimeScale 动画和模拟 — 因此 0.5f 以 50% 的速度播放整个效果。| 成员 | 类型 | 注释 |
|---|---|---|
Color | ASColorSequence | 粒子生命周期的色调(只读参考,编辑其关键点) |
Size、Squash、SquashX/Y、Transparency、 Brightness | ASNumberSequence | 整个生命周期的曲线。 Squash 保留了比例遗留行为;挤压 X/Y 独立缩放任一轴。透明度 0 = 不透明,1 = 不可见。 |
RandomizeSize、RandomSizeMultiplier | bool / ASNumberRange | 可选稳定的每颗粒尺寸乘数。 |
Texture | 纹理 | 雪碧/翻页书纹理 |
CustomMaterial | 材质 | 可选 AsgineVFX、URP 或 Shader Graph 材质(请参阅粒子材质) |
MaterialRenderMode | ASParticleMaterialRenderMode | Auto 选择程序或网格兼容的渲染器;手动模式可用于诊断 |
RenderIntegration | ASParticleRenderIntegration | AsginePass 是默认的高性能渲染器。 Unity2D 使用原生 Unity 渲染器,因此效果可以通过排序层、层中顺序和排序组与 SpriteRenderer 交错,同时粒子模拟保留在 GPU 上。 |
Orientation、FixedDirection | ASParticleOrientation / ASNormalId | FacingCamera / FacingCameraWorldUp / VelocityParallel /速度垂直/固定/交叉。固定保留了真实的面向世界的平面并暴露了方向(前/后/左/右/上/下)。 Crossed 使用两个垂直副本,同时保留两个平面上选定的水平或垂直纹理方向。 |
LightEmission(添加剂混合),LightInfluence(环境光) | 浮动 | 正常到添加剂混合/场景光响应。 Additive Blend 不会创建 Unity Light。 |
SortingLayerId、SortingOrder | int | 在 Unity2D 集成中,这些是原生 Unity 排序值,可以将发射器放置在 SpriteRenderer 之前、之后或之间。在 AsginePass 中,他们在专用通道内订购 AsgineVFX 发射器。 |
ZOffset、LocalTransparencyModifier | 浮点 | 相机深度偏差/全局淡入淡出 |
| 成员 | 类型 | 注释 |
|---|---|---|
Rate、RandomizeRate、RandomRate | float / bool / ASNumberRange | 每秒粒子数。每个循环对随机率进行一次采样,并在整个循环中保持稳定。 |
LoopBehavior、LoopDuration、LoopCount、LoopDelay | enum / float / int | 启用+速率的生命周期发射:无限、一次或固定数量的有源发射循环,具有可选延迟 |
Lifetime、Speed、Rotation、RotSpeed | ASNumberRange | 随机最小值…最大值粒子 |
SpreadAngle | Vector2 | 水平和垂直传播。 Inspector 呈现完整的 0–360° 角度;运行时 API 存储每个轴的半角。 |
EmissionDirection | ASNormalId | 上/下/左/右/前/后 |
Shape、ShapeStyle、ShapeInOut、ShapePartial、EmitterSize、EmitterOffset | 枚举/浮点/ Vector3 | 盒子/球体/圆柱体/圆盘。 Inspector 遵循一个直接序列:形状、生成、方向、流量和传播。 ShapePartial 在上下文中表示为球体覆盖范围、末端半径或内半径。 EmitterOffset 移动本地生成形状而不移动 GameObject。 |
Acceleration、AccelerationX/Y/Z、Drag、RandomDrag | 矢量3/序列/浮点/范围 | 基础加速度加整个生命周期内的每轴加速度;固定或随机指数阻力。 |
LockedToPart, LockedToPartTarget | bool / 变换 | 在移动坐标系中模拟 |
VelocityInheritance、WindAffectsDrag | float / bool | 继承发射器速度/对全局风做出反应 |
MaxParticles | int | GPU 缓冲区容量,限制为每个发射器 4,194,240 个粒子的跨平台计算调度限制。大于配置容量的排放请求受到安全限制。 |
启用粒子执行,以便每个粒子在其生命周期结束时、以绝对秒数或生命周期百分比触发一个事件。它可以触发后续发射器/序列并通知实现 IASParticleExecutionReceiver 的组件。配置 Inspector 时,空的接收器插槽将被安全地忽略并保持可用。非常短的直接自循环和过多的同帧链在冻结客户端之前会被阻止。每个发射器每帧最多传输和分派 1024 个执行事件,与最大粒子数无关,因此异常大的粒子容量无法创建无限制的 GPU 读回。位置跟随行为可以使用事件的ASParticleExecutionContext.Position.
动画书:FlipbookLayout、FlipbookMode(循环/OneShot/PingPong/随机/固定帧)、FlipbookFramerate、FlipbookBlendFrames、FlipbookSizeX/Y、FlipbookStartRandom。 FixFrame 公开一个从零开始的 X/Y 图集坐标(X 向右,Y 从顶行向下)并使用该单元格而不使用动画。
手动拍摄安排:EmitOnAlive、EmitCount、EmitDelay、EmitDuration、TimeScaleStart/End/Duration。 TriggerEmit() 总是开始一个独立的镜头;发射极循环属于 Emission 下的 Enabled + Rate。
LiveParticleCount,LastEmitCount。启用 ShowDiagnostics 进行实时计数。选定的发射器会自动可视化; ShowEmitterBounds 在未选择时保持生成形状可见。旧的 ShowEmissionBounds API 仍然作为兼容性别名。
从一个基础发射器创建一组相关效果,无需重复所有设置。
基础发射器的更改会自动传播到已加载的变体,并在验证和运行时初始化时再次解析。支持变体链;系统会拒绝自身引用和循环链。
.asg 时会解析完整的继承结果并移除基础链接,因此接收者无需原始基础发射器。发射器和光束共享的可重用数据类型。
每个关键点通过线性、缓入、缓出、平滑或步进插值控制通向下一个点的线段。拖动青色线段手柄以直观地塑造曲线。按住 Ctrl/Cmd 键单击可切换关键点,按住 Shift 键单击可选择范围,然后拖动然后将每个选定点移动到一起。值、随机范围、曲线预设和曲线弯曲还可以编辑完整的选择,同时保留相对偏移。按删除/退格键删除选定的内部点。右键单击紧凑预览或完整图形以复制并粘贴完整曲线。 随机范围在关键值周围添加确定性的每粒子变化。
using ASParticleSystem;
// Constant value, or edit keypoints for a curve over t = 0..1
emitter.Size.Keypoints.Clear();
emitter.Size.Keypoints.Add(new ASNumberSequenceKeypoint(0f, 0.2f, 0f)); // time, value, envelope
emitter.Size.Keypoints.Add(new ASNumberSequenceKeypoint(1f, 1.5f, 0f));
emitter.Size.Scale = 2f; // multiplies the whole curve
float v = emitter.Size.Evaluate(0.5f);
emitter.Color.Keypoints.Clear();
emitter.Color.Keypoints.Add(new ASColorSequenceKeypoint(0f, Color.red));
emitter.Color.Keypoints.Add(new ASColorSequenceKeypoint(1f, Color.yellow));
范围字段使用一行紧凑的 Inspector 布局,并提供从与到两个端点。两个值相同时表示固定值,不同时会在两端点之间随机取值。拖动端点标签即可调整;按住 Alt 移动整个区间,按住 Shift 围绕原始中心对称调整,按住 Ctrl/Cmd 吸附。拖动过程中切换修饰键时始终以拖动开始状态为基准。
emitter.Lifetime = new ASNumberRange(2f, 4f); // random min..max
emitter.Speed = new ASNumberRange(5f); // constant
float lo = emitter.Lifetime.Min, hi = emitter.Lifetime.Max;
ASParticleSystem.ASParticleSequence — 将多个发射器分组并将它们作为一个效果一起触发 — 通过一次调用发射整个多发射器 VFX。
using ASParticleSystem;
ASParticleSequence seq = GetComponent<ASParticleSequence>();
seq.Play(); // fires all assigned emitters
seq.Play(scale: 1.2f, timeScale: 0.5f); // scaled + slowed
seq.Clear();检查器字段:playOnAlive、reScale、reTimeScale(默认值由Play()应用)和emitters列表。
ASParticleSystem.ASParticleZone — 影响任何穿过它的粒子的世界空间体积。添加组件,设置其绝对世界空间 Size,然后选择形状和模式。变换位置和旋转放置区域;有意忽略变换比例,因此嵌套或缩放层次结构不会扭曲其尺寸。
| 成员 | 类型 | 注释 |
|---|---|---|
Shape | 盒子/球体 | 体积测试形状 |
Mode | FasterTimeScale / AntiEnter / AntiSpawner / TriggerVFX / 碰撞 / ParticleTrigger | 见下文 |
Size | Vector3 | 绝对世界空间尺寸;忽略 Transform 缩放 |
Center | Vector3 | 区域体积的局部偏移;忽略 Transform 缩放 |
TimeScale | 浮点 | FasterTimeScale 模式的年龄乘数 |
| 模式 | 效果 |
|---|---|
| FasterTimeScale | 内部粒子老化速度更快(淡出区域,因此它们会消失而不是硬消失) |
| AntiEnter | 粒子进入体积后被杀死。GPU 扫描线段测试覆盖帧之间的完整移动路径,防止高速粒子在帧率下降时穿过区域。 |
| AntiSpawner | 体积内产生的粒子被抑制 |
| TriggerVFX | 当匹配的 3D/2D 碰撞器进入时播放指定的粒子序列或粒子发射器。可以使用图层和可选标签过滤器以及 UnityEvent 回调。 |
| 碰撞 | GPU 粒子与长方体或球体体积发生碰撞。弹跳和摩擦控制速度响应,无需 CPU 物理回读。 |
| ParticleTrigger | 在 GPU 上检测粒子从区域外部进入内部的转换,每次进入只触发一次。高速粒子使用扫描线段测试,因此即使在两帧之间穿过整个区域也能触发。精确进入点会启动指定的发射器或序列,无需 Unity Collider。触发事件共用有上限的执行事件传输(每个发射器每帧最多 1024 个事件),避免粒子容量导致无限制的 CPU 回读。 |
激活的发射器会自动拾取粒子影响区域。编辑边界提供与发射器形状相同的六个面控制柄:普通拖动移动单个面,Alt 对称缩放,Shift 保持盒子比例,Ctrl 吸附。球体使用明确的世界空间直径。Inspector 可以创建匹配的 3D/2D Trigger Collider,并在编辑 Size 和 Center 时自动同步。TriggerVFX 后续效果可以在进入对象、区域中心或目标变换位置生成,并支持相对位置偏移。
发射器的CustomMaterial接受原生AsgineVFX粒子材质和普通URP材质,包括URP Shader Graph材质。 MaterialRenderMode.Auto 从材质合同中选择正确的渲染器。
自动模式下无需设置或转换。无效的着色器会安全失败,检查器仅报告可能产生错误结果的配置。
AsgineVFX/Particles/Unlit — 色调、发射和 alpha 截止。AsgineVFX/Particles/Lit — URP 主光、阴影、法线贴图、金属和平滑度控制。AsgineVFX/Particles/Anime — cel 乐队、轮廓轮廓和 alpha 感知边缘光。AsgineVFX/Particles/Dissolve — 动画噪点随发射边缘消失。AsgineVFX/Particles/Distortion — 粒子纹理的动画 UV/热变形。从资产▸创建▸AsgineVFX ▸粒子材质创建它们。这些材料自动使用程序路径。
发射器的纹理会覆盖材质的粒子纹理。如果发射器字段为空,则自动使用材质纹理。
粒子纹理并不都以相同的方式存储透明度。 纹理 Alpha 是具有真实 Alpha 通道的 PNG/TGA 精灵的默认且正确的选择。以 RGB 编码覆盖范围的完全不透明导入纹理会自动标准化,因此自定义着色器图可以使用普通纹理 Alpha 输出。 亮度和Alpha × 亮度仍然是原生AsgineVFX材质的可选艺术模式。
转换是可选的。仅当材质不需要其原始图形或着色器逻辑并且首选较低开销的程序路径时才使用它。将材质渲染模式设置为程序,然后使用转换为AsgineVFX粒子材质。转换器保留原始并将公共表面值复制到单独的材质中。
使用 Assets ▸ Create ▸ AsgineVFX ▸ Shader ▸ Particle Unlit 或 Particle Lit 在选定的项目文件夹中创建一个普通的可编辑 ShaderLab/HLSL 文件。两个启动器都已包含所需的 AsgineVFX 粒子接口、透明 URP 渲染状态、翻页采样、发射器颜色、亮度和透明度处理。
Particle Unlit 是自定义片段效果和发射的干净基础。 粒子光照添加了主光阴影、环境照明、法线贴图采样、金属、平滑度和发射。生成的文件可以直接编辑,无需修改包着色器或从文档复制设置代码。
使用资源▸创建▸AsgineVFX▸着色器图表▸粒子未点亮或粒子点亮。新图形是一个普通的可编辑 URP 着色器图形,具有已连接的透明粒子渲染设置、纹理采样、UV0 和发射器颜色/透明度。打开它并像在常规 Shader Graph 中一样构建效果。
Particle Unlit 是发光、溶解、扭曲和风格化 VFX 的最佳起点。 粒子光照还公开了正常、金属、平滑、发射和环境光遮挡的标准光照输入。
直接分配 URP Shader Graph 材质,并将 材质渲染模式 保留为 自动 。使用透明表面(或有意的 Alpha 剪切),使用 UV0 对粒子纹理进行采样,并在发射器的颜色、亮度和透明度序列影响结果时将图形的颜色和 alpha 乘以标准 顶点颜色 节点。
Auto 为常规 Lit 和 Fresnel 材质提供圆形广告牌法线场,因此表面照明教程在没有 AsgineVFX 特定图形节点的粒子上表现自然。仅针对专为平面卡设计的着色器,将 Material Surface 设置为 Flat。这是光照表示,而不是真正的 3D 几何体;取决于真实体积、背面或网格深度的效果需要网格而不是广告牌。
发射器纹理自动绑定到标准_BaseMap/_MainTex参考。使用不同名称的纹理属性的图形会保留在其材质中指定的纹理。当启用帧混合时,兼容性路径选择最近的翻页书帧;原生 AsgineVFX 着色器保留真正的两帧插值。
该软件包包含 Assets/AsgineVFX/ShaderGraph/SubGraphs 下的可选 Unity 子图。他们使用公共 Shader Graph 资源而不是版本敏感的编辑器扩展。
_MainTex 或 _BaseMap 的 Texture2D 属性。该节点对 UV0 进行采样并返回最终 RGBA、最终 RGB 和最终 Alpha,并已应用发射器的颜色、亮度和透明度。纹理 RGBA 和粒子 RGBA 也单独曝光以实现自定义效果。通过创建节点 ▸ AsgineVFX ▸ 粒子找到两个节点。它们只是为了方便;使用标准 UV0 和顶点颜色节点的图形仍然完全受支持。
VFX Graph 是一个单独的粒子模拟系统而不是材质,因此 VFX Graph 资源无法放置在 CustomMaterial 中。支持 Shader Graph 材质。
ASBeamSystem.ASBeam — 两个附件变换之间的 GPU 带,遵循三次贝塞尔曲线。
using ASBeamSystem;
ASBeam beam = GetComponent<ASBeam>();
beam.Attachment0 = startTransform;
beam.Attachment1 = endTransform;
beam.Width0 = 1f; beam.Width1 = 3f;
beam.CurveSize0 = 4f; // bulge along Attachment0's local +X
beam.FaceCamera = true;
beam.TextureSpeed = new Vector2(1f, 0f); // scroll: x=length, y=width
beam.SetTextureOffset(new Vector2(0.5f, 0f));
| 成员 | 类型 | 注释 |
|---|---|---|
Attachment0/1 | 变换 | 曲线端点;局部 +X(右)轴控制凸出方向。选择光束会直接在场景视图中显示两个附件的颜色编码 +X 箭头和位置手柄。 |
Width0/1、CurveSize0/1、Segments | float/int | 功能区宽度、曲线强度和几何细分。纹理在细分后连续映射,因此增加分段不会将其分割为单独的扇形。 |
FaceCamera | bool | 色带始终面向相机(面向屏幕) |
Color / Transparency / Brightness | ASColorSequence / ASNumberSequence | 沿光束的渐变长度 |
TextureMode、TextureLength、TextureSpeed | 枚举/浮点/Vector2 | 包裹/静态/拉伸;每个轴的滚动速度。停止一个速度轴会将该轴重置为其原始偏移量。 |
LightEmission、LightInfluence、ZOffset | — | 加法混合、环境光响应和渲染深度放置 |
ASTrailSystem.ASTrail — 两个移动附件变换之间的持久功能区。附着距离定义了基础宽度,而存储的路径定义了轨迹形状。
using ASTrailSystem;
ASTrail trail = GetComponent<ASTrail>();
trail.Attachment0 = leftEdge;
trail.Attachment1 = rightEdge;
trail.Lifetime = 0.8f;
trail.MinLength = 0.05f;
trail.MaxLength = 12f;
trail.FaceCamera = false;
// Immediately discard the recorded path.
trail.Clear();
| 成员 | 类型 | 注释 |
|---|---|---|
Attachment0/1 | 变换 | 两个功能区边缘。它们的间隔是步道的底部宽度。选择轨迹会直接在场景视图中显示两个颜色编码的锚点手柄。 |
Enabled | 布尔 | 控制新样本。现有路径段正常结束其生命周期。 |
Lifetime | 浮点 | 记录点保持可见的时间。 |
MinLength | float | 记录新的稳定路径点之前的最小移动。 |
MaxLength | float | 可选的世界空间路径限制;零禁用长度限制。 |
MaxPoints | int | 记录路径的硬内存和几何限制。 |
FaceCamera | bool | 色带朝向相机;否则,附件对定义其平面。 |
WidthScale | ASNumberSequence | 将附件宽度乘以标准化轨迹年龄。 |
Color / Transparency / Brightness | 序列 | 从最新端向过期端评估结束。 |
TextureMode | AStextureMode | 拉伸适合在可见轨迹上重复, Wrap 锚点在当前开始处重复,而 Static 将 UV 标记为行进距离。 |
TextureLength、TextureSpeed | float/Vector2 | 重复长度和可选 UV滚动。 |
Game.Lightning.ASLightningManager — 一个汇集的、自动计时的闪电系统。通过其惰性单例访问它。
using Game.Lightning;
ASLightningBolt bolt = ASLightningManager.Instance.Spawn(from, to, partCount: 30);
bolt.MinRadius = 1f;
bolt.MaxRadius = 2.5f;
bolt.Thickness = 1.1f;
bolt.PulseSpeed = 10f;
bolt.FadeLength = 0.4f;
bolt.Color = solidGradient; // UnityEngine.Gradient
// Attach continuously-emitting sparks to a bolt:
ASLightningManager.Instance.AttachSparks(bolt, maxSparkCount: 6);
bolt.Restart(); bolt.Kill();
Bolt 调整字段包括 MinRadius/MaxRadius、Thickness、Frequency、AnimationSpeed、PulseSpeed、PulseLength、FadeLength、 MinTransparency/MaxTransparency、CurveSize0/1 和 Color。螺栓被集中起来——自由生成。
Game.Lightning.ASRockModule — 产生随缓升和下沉的碎片/火山口岩石。懒惰单例。
using Game.Lightning;
// center, radius, size, [amount], [angleStep]
ASRockModule.Instance.Crater(hitPoint, radius: 8f, size: 1.8f);
ASRockModule.Instance.Crater(hitPoint, 16.5f, 1.8f, amount: 24, angleStep: 15f);
Game.CameraFx.ASCameraShaker — 附加位置/旋转抖动。将组件放在您的相机设备上;它会暴露您每帧添加到基本姿势上的 PositionShake 和 RotationShake。
using Game.CameraFx;
ASCameraShaker.Instance.Shake(ASCameraShakePresets.Lightning());
ASCameraShaker.Instance.Shake(ASCameraShakePresets.Explosion());
ASCameraShaker.Instance.Shake(ASCameraShakePresets.Bump());
// Apply in your camera LateUpdate:
cam.position = basePos + ASCameraShaker.Instance.PositionShake;
cam.rotation = baseRot * ASCameraShaker.Instance.RotationShake;
AsgineVFX.Tweening.AS_Tween 是一个集中式、池化的补间引擎,用于轻量级游戏和 VFX 动画。它支持类型插值、延迟、缓动、重复、向前/向后播放、完成回调和三个时间源。
using AsgineVFX.Tweening;
TweenInfo settings = new TweenInfo(
time: 0.4f,
style: EasingStyle.Back,
direction: EasingDirection.Out,
repeatCount: 0,
reverses: false,
delayTime: 0.1f);
TweenFloat tween = AS_Tween.Create(
v => light.intensity = v,
0f, 5f,
settings,
target: light,
TweenUpdateMode.Scaled);
tween.OnCompleted = () => Debug.Log("Tween finished");
tween.Play();
AS_Tween.Create(...) 已键入 float、Vector2、Vector3、Color、Quaternion、Rect 和 bool 的重载。提供的设置器每次更新都会接收内插值。
| 字段 | 功能 |
|---|---|
Time | 一次向前或向后通过的持续时间(以秒为单位)。 |
Style | 线性、正弦、四重、三次、夸脱、五重、指数、圆形、弹跳、弹性或返回。 |
Direction | In、Out或InOut. |
RepeatCount | 第一遍后的额外重复; 0 播放一次,-1 无限期重复。 |
Reverses | 在完成该循环之前每次向前传递后向后播放。 |
DelayTime | 插补开始前的延迟。 |
Scaled使用Time.deltaTime并遵循游戏时间尺度。Unscaled 使用 Time.unscaledDeltaTime,对于 UI 和暂停菜单很有用。Fixed 使用 Time.fixedDeltaTime,对于物理相关的动画很有用。TweenHandle handle = new TweenHandle(tween)
.OnCompleted(() => Debug.Log("Done"))
.Play();
if (handle.IsActive)
{
handle.Pause();
}
handle.Cancel();
AS_Tween.KillByTarget(light); // cancels every tween owned by this target
TweenHandle 而不是保留跨帧的原始补间参考;该句柄通过内部版本检测回收的实例。TweenSequence 是同步补间组。调用 Play() 一起启动每个成员,并且该序列在每个成员完成后调用其完成回调。 Append() 和 Join() 都向同一个并行组添加补间;当个别成员稍后开始时,请使用每个补间的 DelayTime。取消序列会取消所有成员作为一个整体。
AsgineVFX 使用自己的 .asg 模型格式。将 .asg 文件放入项目中,会通过 ScriptedImporter 自动构建包含的发射器、光束和轨迹层次结构 - 无需手动导入窗口。较旧的受支持容器版本会在导入期间迁移;新导出使用当前格式。
ASParticleSystem.ASParticleRegistry — 渲染功能从中读取的静态集线器。大部分是内部的,但暴露了全球风:
ASParticleSystem.ASParticleRegistry.GlobalWind = new Vector3(2f, 0f, 0f);
// affects emitters with WindAffectsDrag = true
AsgineVFX 是许可软件。适用的条款取决于购买的版本及其分销渠道;拥有该包永远不会转让产品、源代码、程序集、工具或包文件的所有权。
LICENSE.txt(当该文件存在时)的约束。LICENSE.txt 以获取包含私人版本的信息。透明度说明:在准备和编辑本文档期间使用了人工智能辅助工具。最终内容已由发布者审核。
AsgineVFX は、ユニバーサル レンダー パイプライン上の Unity 6.x に一致するランタイムを備えた GPU 駆動の Unity エディター オーサリング ツールです。フル機能のパーティクル エミッター、ベジェ ビーム、アタッチメント トレイル、ゲームプレイ モジュール (稲妻、クレーター、カメラ シェイク)、交換ツール、およびプールされたトゥイーン エンジンを提供します。パーティクルは GPU でシミュレートされ、リボンは GPU でレンダリングされ、すべてのエフェクトが 1 つのブルーム/グロー パスを共有します。
Unity 6.xURP アクティブ新しい入力システム (デモのみ)
.unitypackage をプロジェクト ウィンドウにドラッグします)。| 名前空間 | には |
|---|---|
ASParticleSystem | エミッタ、シーケンス、ゾーン、データ型、レジストリ |
ASBeamSystem | ビーム |
ASTrailSystem | アタッチメントトレイル |
Game.Lightning | ライトニングマネージャー/ボルト、ロックモジュール |
Game.CameraFx | カメラ シェーカー + プリセット |
AsgineVFX.Tweening | トゥイーン エンジン (AS_Tween、トゥイーン タイプ) |
AsgineVFX に含まれる主要なシステムと、それぞれが提供する機能。
.asgインポート。ASParticleSystem.ASParticleEmitter — 完全な GPU パーティクル エミッター。それをゲームオブジェクトに追加します。その変換位置/回転/スケールは、放出の形状と方向を定義します。
using ASParticleSystem;
ASParticleEmitter emitter = GetComponent<ASParticleEmitter>();
// Continuous emission is driven by Rate while Enabled is true.
emitter.Enabled = true;
// One-shot burst using the emitter's own EmitCount:
emitter.TriggerEmit();
// Burst with a size scale and a re-timescale (0.5 = whole effect at half speed):
emitter.TriggerEmit(scale: 1.5f, reTimeScale: 0.5f);
// Burst overriding the particle count for this shot only:
emitter.TriggerEmit(countOverride: 64, scale: 1f, reTimeScale: 1f);
// Immediate raw burst / clear all live particles:
emitter.Emit(16);
emitter.Clear();
reTimeScale はショットのタイムライン全体 (EmitDelay、EmitDuration、TimeScale アニメーション、シミュレーション) をスケールするため、0.5f はエフェクト全体を 50% の速度で再生します。| メンバー | タイプ | メモ |
|---|---|---|
Color | ASColorSequence | パーティクルの存続期間にわたる色合い (読み取り専用の参照、キーポイントの編集) |
Size、Squash、SquashX/Y、Transparency、 Brightness | ASNumberSequence | 存続期間にわたる曲線。 Squash は比例的な従来の動作を保持します。スカッシュ X/Y はどちらかの軸を独立してスケールします。透明度 0 = 不透明、1 = 不可視。 |
RandomizeSize、RandomSizeMultiplier | bool / ASNumberRange | オプションの安定したパーティクルごとのサイズ乗数。 |
Texture | テクスチャ | スプライト/フリップブック テクスチャ |
CustomMaterial | マテリアル | オプションの AsgineVFX、URP、またはシェーダー グラフ マテリアル (パーティクル マテリアルを参照) |
MaterialRenderMode | ASParticlematerialRenderMode | プロシージャルまたはメッシュ互換レンダラーを自動選択します。診断には手動モードが利用可能です |
RenderIntegration | ASParticleRenderIntegration | AsginePass は、デフォルトの高性能レンダラーです。 Unity2D はネイティブ Unity レンダラーを使用するため、パーティクル シミュレーションが GPU 上に残っている間、エフェクトはソーティング レイヤー、オーダー イン レイヤー、およびソーティング グループを通じて SpriteRenderer とインターリーブできます。 |
Orientation、FixedDirection | ASParticleOrientation / ASNormalId | FacingCamera / FacingCameraWorldUp / VelocityParallel /速度垂直/固定/交差。修正済みは、実際の世界に面した平面を保持し、方向 (前/後/左/右/上/下) を公開します。 Crossed は、選択した水平または垂直のテクスチャ方向を両方の平面で維持しながら、2 つの垂直コピーを使用します。 |
LightEmission (加算ブレンド)、LightInfluence (環境光) | フロート | 通常から加算へのブレンド / シーンライトの応答。 Additive Blend では Unity Light は作成されません。 |
SortingLayerId、SortingOrder | int | Unity2D 統合では、これらはネイティブの Unity ソート値であり、SpriteRenderer の前、後ろ、または間にエミッターを配置できます。 AsginePass では、専用パス内の AsgineVFX エミッターを注文します。 |
ZOffset、LocalTransparencyModifier | フロート | カメラ方向の深度バイアス/グローバル フェード |
| メンバー | タイプ | メモ |
|---|---|---|
Rate、RandomizeRate、RandomRate | float / bool / ASNumberRange | 1 秒あたりのパーティクル数。ランダム レートはループごとに 1 回サンプリングされ、ループ全体を通じて安定したままになります。 |
LoopBehavior、LoopDuration、LoopCount、LoopDelay | enum / float / int | 有効 + レートのライフサイクル放出: 無限、1 回、またはオプションの遅延を伴う固定数のアクティブ放出ループ |
Lifetime、Speed、Rotation、RotSpeed | ASNumberRange | ランダムな最小…最大粒子 |
SpreadAngle | Vector2 | 水平方向と垂直方向の広がり。インスペクターは 0 ~ 360° の完全な角度を表示します。ランタイム API は軸ごとの半角を保存します。 |
EmissionDirection | ASNormalId | 上/下/左/右/前/後ろ |
Shape、ShapeStyle、ShapeInOut、ShapePartial、EmitterSize、EmitterOffset | enum / float / Vector3 | ボックス/球/円柱/ディスク。インスペクターは 1 つの直接シーケンスに従います: Shape、Spawn、Direction、Flow、およびスプレッド。 ShapePartial は、コンテキストに応じて、Sphere Coverage、End Radius、または Inner Radius として表示されます。 EmitterOffset は、GameObject を移動せずに、ローカルのスポーン シェイプを移動します。 |
Acceleration、AccelerationX/Y/Z、Drag、RandomDrag | Vector3 / sequence / float / range | 基本加速度プラス寿命にわたる軸ごとの加速度。固定またはランダム化された指数関数的抗力。 |
LockedToPart、LockedToPartTarget | bool / Transform | 移動フレームでシミュレート |
VelocityInheritance、WindAffectsDrag | float / bool | エミッタ速度を継承 / グローバルに反応風 |
MaxParticles | int | GPU バッファー容量。エミッターあたり 4,194,240 パーティクルのクロスプラットフォームのコンピューティング ディスパッチ制限に制限されます。構成された容量を超える排出リクエストは安全に制限されます。 |
パーティクル実行を有効にすると、ライフタイムの終了時、絶対秒数、またはライフタイムのパーセンテージでパーティクルごとに 1 つのイベントが発生します。次のエミッター/シーケンスをトリガーし、IASParticleExecutionReceiver を実装しているコンポーネントに通知できます。空の受信機スロットは安全に無視され、インスペクターの構成中は使用可能なままになります。非常に短い直接自己ループと過剰な同一フレーム チェーンは、クライアントがフリーズする前にブロックされます。最大パーティクル数に関係なく、エミッターごとに 1 フレーム最大 1024 個の実行イベントが転送およびディスパッチされるため、異常に大きいパーティクル容量では無制限の GPU リードバックを作成できません。位置追従動作では、イベントの ASParticleExecutionContext.Position.
フリップブック: FlipbookLayout、FlipbookMode (ループ/ワンショット/ピンポン/ランダム/固定フレーム)、FlipbookFramerate、FlipbookBlendFrames、FlipbookSizeX/Y、FlipbookStartRandom。 FixedFrame は、ゼロベースの X/Y アトラス座標 (X は右、Y は上の行から下) を公開し、アニメーションなしでそのセルを使用します。
手動ショット スケジュール: EmitOnAlive、EmitCount、EmitDelay、EmitDuration、TimeScaleStart/End/Duration。 TriggerEmit() は常に 1 つの独立したショットを開始します。エミッタ ループは、[Emission] の [Enabled] + [Rate] に属します。
LiveParticleCount、LastEmitCount。ライブカウントの ShowDiagnostics を有効にします。選択したエミッタは自動的に視覚化されます。 ShowEmitterBounds は、選択されていない間もスポーン シェイプを表示したままにします。古い ShowEmissionBounds API は互換性エイリアスとして残ります。
すべての設定を複製せずに、1つのベースエミッターから関連するエフェクトを作成できます。
ベースの変更は読み込み済みのバリアントへ自動的に反映され、検証時とランタイム初期化時にも再解決されます。バリアントの連鎖に対応し、自己参照と循環参照は拒否されます。
.asg 書き出し時には継承結果を完全に解決してベースへのリンクを削除するため、受信者は元のベースエミッターを必要としません。エミッタとビームによって共有される再利用可能なデータ型。
各キーポイントは、リニア補間、イーズイン補間、イーズアウト補間、スムーズ補間、またはステップ補間を使用して、次のポイントにつながるセグメントを制御します。シアンのセグメント ハンドルをドラッグして、視覚的に曲線を形成します。 Ctrl/Cmd キーを押しながらクリックするとキーポイントを切り替え、Shift キーを押しながらクリックして範囲を選択し、ドラッグして選択したすべてのポイントをまとめて移動します。値、ランダム範囲、カーブプリセット、およびカーブベンドも、相対オフセットを維持しながら選択範囲全体を編集します。選択した内部ポイントを削除するには、Delete/Backspace キーを押します。コンパクト プレビューまたはグラフ全体を右クリックして、完全な曲線をコピーして貼り付けます。 ランダム範囲は、キー値の周りに決定論的なパーティクルごとの変動を追加します。
using ASParticleSystem;
// Constant value, or edit keypoints for a curve over t = 0..1
emitter.Size.Keypoints.Clear();
emitter.Size.Keypoints.Add(new ASNumberSequenceKeypoint(0f, 0.2f, 0f)); // time, value, envelope
emitter.Size.Keypoints.Add(new ASNumberSequenceKeypoint(1f, 1.5f, 0f));
emitter.Size.Scale = 2f; // multiplies the whole curve
float v = emitter.Size.Evaluate(0.5f);
emitter.Color.Keypoints.Clear();
emitter.Color.Keypoints.Add(new ASColorSequenceKeypoint(0f, Color.red));
emitter.Color.Keypoints.Add(new ASColorSequenceKeypoint(1f, Color.yellow));
範囲フィールドは1行のコンパクトな Inspector 表示で、開始と終了の端点を持ちます。同じ値なら固定値、異なる値なら両端点の間からランダムに選ばれます。端点ラベルをドラッグして調整し、Alt で区間全体を移動、Shift で元の中心を基準に対称リサイズ、Ctrl/Cmd でスナップできます。ドラッグ中に修飾キーを切り替えても、常にドラッグ開始時の状態から計算されます。
emitter.Lifetime = new ASNumberRange(2f, 4f); // random min..max
emitter.Speed = new ASNumberRange(5f); // constant
float lo = emitter.Lifetime.Min, hi = emitter.Lifetime.Max;
ASParticleSystem.ASParticleSequence — 複数のエミッターをグループ化し、1 つのエフェクトとしてトリガーします — 1 回の呼び出しからマルチエミッター全体の VFX を発射します。
using ASParticleSystem;
ASParticleSequence seq = GetComponent<ASParticleSequence>();
seq.Play(); // fires all assigned emitters
seq.Play(scale: 1.2f, timeScale: 0.5f); // scaled + slowed
seq.Clear();インスペクター フィールド: playOnAlive、reScale、reTimeScale (デフォルトは Play() によって適用されます)、および emitters リスト。
ASParticleSystem.ASParticleZone — 通過するパーティクルに影響を与えるワールド空間ボリューム。コンポーネントを追加し、その絶対ワールド空間 Size を設定してから、形状とモードを選択します。位置と回転を変換してゾーンを配置します。変換スケールは意図的に無視されるため、ネストされた階層またはスケールされた階層によってその次元が歪められません。
| メンバー | タイプ | メモ |
|---|---|---|
Shape | ボックス/球体 | 体積テスト形状 |
Mode | FasterTimeScale / AntiEnter / AntiSpawner / TriggerVFX / Collision / ParticleTrigger | 下記参照 |
Size | Vector3 | 絶対ワールド空間寸法。Transform スケールは無視 |
Center | Vector3 | ゾーンボリュームのローカルオフセット。Transform スケールは無視 |
TimeScale | float | FasterTimeScale モードの年齢乗数 |
| モード | 効果 |
|---|---|
| FasterTimeScale | 内部のパーティクルはより速く老化します (フェードアウト ゾーンなので、激しく消えるのではなく消滅します) |
| AntiEnter | パーティクルはボリュームに入るとキルされます。GPU のスイープ線分テストがフレーム間の移動全体を検査し、フレーム低下時に高速パーティクルがすり抜けるのを防ぎます。 |
| AntiSpawner | ボリューム内でスポーンされたパーティクルは抑制されます |
| TriggerVFX | 一致する 3D/2D コライダーが入ったときに、割り当てられたパーティクル シーケンスまたはパーティクル エミッタを再生します。レイヤーおよびオプションのタグ フィルターと UnityEvent コールバックが利用可能です。 |
| 衝突 | GPU パーティクルがボックスまたは球体ボリュームと衝突します。バウンスと摩擦は、CPU 物理学リードバックなしで速度応答を制御します。 |
| ParticleTrigger | GPU 上でゾーン外から内部への遷移を検出し、進入ごとに 1 回だけ実行します。高速パーティクルにはスイープ線分テストを使用するため、2 フレーム間でゾーン全体を通過してもトリガーできます。Unity Collider を必要とせず、正確な進入点から割り当てたエミッターまたはシーケンスを開始します。トリガーイベントは上限付きの実行イベント転送を共有し(エミッターごとに 1 フレーム最大 1024 件)、パーティクル容量による無制限な CPU リードバックを防ぎます。 |
パーティクルに影響するゾーンは、アクティブなエミッターによって自動的に検出されます。境界を編集ではエミッター形状と同じ 6 つの面ハンドルを使用できます。通常ドラッグは 1 面、Alt は対称、Shift はボックスの比率維持、Ctrl はスナップです。球体は明確なワールド空間直径で表示されます。Inspector は一致する 3D/2D Trigger Collider を作成し、Size と Center の編集に自動同期します。TriggerVFX の後続エフェクトは、進入オブジェクト、ゾーン中心、またはターゲット Transform に生成でき、相対位置オフセットにも対応します。
エミッターの CustomMaterial は、ネイティブ AsgineVFX パーティクル マテリアルと、URP シェーダー グラフ マテリアルを含む通常の URP マテリアルの両方を受け入れます。 MaterialRenderMode.Auto は、マテリアル コントラクトから正しいレンダラーを選択します。
自動モードでは設定や変換は必要ありません。無効なシェーダは安全に失敗し、インスペクタは誤った結果を生成する可能性のある構成のみを報告します。
AsgineVFX/Particles/Unlit — ティント、発光、アルファ カットオフ。AsgineVFX/Particles/Lit — URP のメインライト、シャドウ、法線マップ、メタリックおよび滑らかさのコントロール。AsgineVFX/Particles/Anime — セルバンド、シルエットアウトライン、アルファ認識リムライト。AsgineVFX/Particles/Dissolve — アニメーション化されたノイズは放射エッジでディゾルブされます。AsgineVFX/Particles/Distortion — パーティクル テクスチャのアニメーション化された UV/熱歪み。アセット ▸ 作成 ▸ AsgineVFX ▸ パーティクル マテリアル から作成します。これらのマテリアルは自動的にプロシージャル パスを使用します。
エミッタのテクスチャは、マテリアルのパーティクル テクスチャをオーバーライドします。エミッタフィールドが空の場合、マテリアルテクスチャが自動的に使用されます。
パーティクル テクスチャはすべて同じ方法で透明度を保存するわけではありません。 テクスチャ アルファ は、リアル アルファ チャネルを持つ PNG/TGA スプライトのデフォルトで正しい選択です。 RGB でカバレッジをエンコードする完全に不透明なインポートされたテクスチャは自動的に正規化されるため、カスタム シェーダー グラフは通常のテクスチャ アルファ出力を使用できます。 ルミナンスおよびアルファ × ルミナンスは、ネイティブ AsgineVFX マテリアルのオプションのアーティスティック モードのままです。
変換はオプションです。マテリアルが元のグラフまたはシェーダ ロジックを必要とせず、オーバーヘッドの低いプロシージャ パスが優先される場合にのみ使用してください。 マテリアル レンダー モードをプロシージャルに設定し、AsgineVFX パーティクル マテリアルに変換を使用します。コンバータはオリジナルを保存し、共通の表面値を別のマテリアルにコピーします。
Assets ▸ Create ▸ AsgineVFX ▸ Shader ▸ Particle Unlit または Particle Lit を使用して、選択したプロジェクト フォルダーに通常の編集可能な ShaderLab/HLSL ファイルを作成します。どちらのスターターにも、必要な AsgineVFX パーティクル インターフェイス、透明な URP レンダリング ステート、フリップブック サンプリング、エミッター カラー、明るさ、透明度の処理がすでに含まれています。
Particle Unlit は、カスタム フラグメント エフェクトと放出のためのクリーンなベースです。 Particle Lit は、メインライトのシャドウ、アンビエント照明、法線マップのサンプリング、メタリック、滑らかさ、発光を追加します。生成されたファイルは、パッケージ シェーダを変更したり、ドキュメントからセットアップ コードをコピーしたりせずに、直接編集できます。
アセット ▸ 作成 ▸ AsgineVFX ▸ シェーダー グラフ ▸ パーティクル非点灯 または パーティクル点灯 を使用します。新しいグラフは、透明パーティクルのレンダリング設定、テクスチャ サンプリング、UV0、およびエミッタのカラー/透明度がすでに接続されている通常の編集可能な URP シェーダ グラフです。これを開いて、通常のシェーダー グラフとまったく同じようにエフェクトを構築します。
Particle Unlit は、グロー、ディゾルブ、ディストーション、様式化された VFX の開始点として最適です。 Particle Lit はさらに、ノーマル、メタリック、スムーズネス、エミッション、アンビエント オクルージョンの標準 Lit 入力を公開します。
URP シェーダー グラフ マテリアルを直接割り当て、マテリアル レンダー モードを自動のままにしておきます。エミッタのカラー、明るさ、透明度シーケンスが結果に影響を与える必要がある場合は、透明サーフェス (または意図的なアルファ クリッピング) を使用し、UV0 でパーティクル テクスチャをサンプリングし、標準の 頂点カラー ノードでグラフのカラーとアルファを乗算します。
Auto は、丸いビルボード法線フィールドを通常の Lit マテリアルとフレネル マテリアルに提供するため、サーフェス ライティング チュートリアルは AsgineVFX 固有のグラフ ノードなしでパーティクル上で自然に動作します。平面カード用に意図的に設計されたシェーダの場合のみ、マテリアル サーフェスをフラットに設定します。これは照明表現であり、実際の 3D ジオメトリではありません。真のボリューム、背面、またはメッシュの深さに依存するエフェクトには、ビルボードではなくメッシュが必要です。
エミッタ テクスチャは、標準の _BaseMap/_MainTex リファレンスに自動的にバインドされます。別の名前のテクスチャ プロパティを使用するグラフでは、そのマテリアルに割り当てられたテクスチャが維持されます。フレーム ブレンディングが有効な場合、互換性パスは最も近いフリップブック フレームを選択します。ネイティブ AsgineVFX シェーダは、真の 2 フレーム補間を保持します。
パッケージには、Assets/AsgineVFX/ShaderGraph/SubGraphs の下にオプションの Unity サブグラフが含まれています。これらは、バージョン依存のエディター拡張機能ではなく、パブリック シェーダー グラフ アセットを使用します。
_MainTex または _BaseMap である Texture2D プロパティを接続します。このノードは UV0 をサンプリングし、エミッターの色、明るさ、透明度がすでに適用されている最終 RGBA、最終 RGB、および最終アルファを返します。テクスチャ RGBA とパーティクル RGBA も、カスタム エフェクト用に個別に公開されます。ノードの作成 ▸ AsgineVFX ▸ パーティクル で両方のノードを見つけます。それらは単なる便宜的なものです。標準の UV0 ノードと頂点カラー ノードを使用するグラフは引き続き完全にサポートされます。
VFX グラフはマテリアルではなく別個のパーティクル シミュレーション システムであるため、VFX グラフ アセットを CustomMaterial に配置することはできません。シェーダーグラフマテリアルがサポートされています。
ASBeamSystem.ASBeam — 3次ベジェ曲線に従う、2 つのアタッチメント変換間の GPU リボン。
using ASBeamSystem;
ASBeam beam = GetComponent<ASBeam>();
beam.Attachment0 = startTransform;
beam.Attachment1 = endTransform;
beam.Width0 = 1f; beam.Width1 = 3f;
beam.CurveSize0 = 4f; // bulge along Attachment0's local +X
beam.FaceCamera = true;
beam.TextureSpeed = new Vector2(1f, 0f); // scroll: x=length, y=width
beam.SetTextureOffset(new Vector2(0.5f, 0f));
| メンバー | タイプ | メモ |
|---|---|---|
Attachment0/1 | 変換 | カーブの終点;ローカルの +X (右) 軸はバルジの方向を制御します。ビームを選択すると、色分けされた +X 矢印と両方のアタッチメントの位置ハンドルがシーン ビューに直接表示されます。 |
Width0/1、CurveSize0/1、Segments | float/int | リボンの幅、曲線の強度、およびジオメトリ テッセレーション。テクスチャはテッセレーション後に継続的にマッピングされるため、セグメントを増やしても個別のファンに分割されません。 |
FaceCamera | bool | リボンは常にカメラの方向を向いています (画面側) |
Color / Transparency / Brightness | ASColorSequence / ASNumberSequence | ビームに沿ったグラデーション長さ |
TextureMode、TextureLength、TextureSpeed | enum/float/Vector2 | ラップ/静的/ストレッチ;軸ごとのスクロール速度。 1 つの速度軸を停止すると、その軸が元のオフセットにリセットされます。 |
LightEmission、LightInfluence、ZOffset | — | 加算ブレンディング、環境光応答およびレンダリング深度配置 |
ASTrailSystem.ASTrail — 2 つの移動するアタッチメント トランスフォーム間の永続的なリボン。アタッチメントの距離はベースの幅を定義し、保存されたパスはトレイルの形状を定義します。
using ASTrailSystem;
ASTrail trail = GetComponent<ASTrail>();
trail.Attachment0 = leftEdge;
trail.Attachment1 = rightEdge;
trail.Lifetime = 0.8f;
trail.MinLength = 0.05f;
trail.MaxLength = 12f;
trail.FaceCamera = false;
// Immediately discard the recorded path.
trail.Clear();
| メンバー | タイプ | メモ |
|---|---|---|
Attachment0/1 | リボンの 2 つのエッジを変換します。それらの間隔がトレイルの基本幅になります。トレイルを選択すると、色分けされた両方のアンカー ハンドルがシーン ビューに直接表示されます。 | |
Enabled | bool | 新しいサンプルを制御します。既存のトレイル セグメントは正常に寿命を終了します。 |
Lifetime | float | 記録されたポイントが表示され続ける期間。 |
MinLength | float | 新しい安定パスポイントが記録される前の最小移動。 |
MaxLength | float | オプションのワールド空間パス制限。ゼロは長さ制限を無効にします。 |
MaxPoints | int | 記録されたパスのハード メモリとジオメトリ制限。 |
FaceCamera | bool | リボンをカメラの方向に向けます。それ以外の場合は、アタッチメント ペアがその平面を定義します。 |
WidthScale | ASNumberSequence | 正規化された痕跡年齢にアタッチメント幅を乗算します。 |
Color / Transparency / Brightness | sequence | 新しい端から期限切れに向かって評価終了。 |
TextureMode | ASTextureMode | Stretchは、表示されているトレイル全体に繰り返しをフィットさせます。 ラップアンカーは現在の開始位置で繰り返し、スタティックは移動距離に合わせてUVをスタンプし続けます。 |
TextureLength、TextureSpeed | float/Vector2 | リピート長とオプションの UV スクロール。 |
Game.Lightning.ASLightningManager — プールされた自動カチカチ雷システム。遅延シングルトンを通じてアクセスします。
using Game.Lightning;
ASLightningBolt bolt = ASLightningManager.Instance.Spawn(from, to, partCount: 30);
bolt.MinRadius = 1f;
bolt.MaxRadius = 2.5f;
bolt.Thickness = 1.1f;
bolt.PulseSpeed = 10f;
bolt.FadeLength = 0.4f;
bolt.Color = solidGradient; // UnityEngine.Gradient
// Attach continuously-emitting sparks to a bolt:
ASLightningManager.Instance.AttachSparks(bolt, maxSparkCount: 6);
bolt.Restart(); bolt.Kill();
ボルト調整フィールドには、MinRadius/MaxRadius、Thickness、Frequency、AnimationSpeed、PulseSpeed、PulseLength、FadeLength、 MinTransparency/MaxTransparency、CurveSize0/1、Color。ボルトはプールされており、自由に生成されます。
Game.Lightning.ASRockModule — 緩やかに上昇したり沈んだりする破片/クレーターの岩を生成します。怠惰なシングルトン。
using Game.Lightning;
// center, radius, size, [amount], [angleStep]
ASRockModule.Instance.Crater(hitPoint, radius: 8f, size: 1.8f);
ASRockModule.Instance.Crater(hitPoint, 16.5f, 1.8f, amount: 24, angleStep: 15f);
Game.CameraFx.ASCameraShaker — 追加の位置/回転シェイク。コンポーネントをカメラ リグに置きます。各フレームでベース ポーズに追加する PositionShake と RotationShake が公開されます。
using Game.CameraFx;
ASCameraShaker.Instance.Shake(ASCameraShakePresets.Lightning());
ASCameraShaker.Instance.Shake(ASCameraShakePresets.Explosion());
ASCameraShaker.Instance.Shake(ASCameraShakePresets.Bump());
// Apply in your camera LateUpdate:
cam.position = basePos + ASCameraShaker.Instance.PositionShake;
cam.rotation = baseRot * ASCameraShaker.Instance.RotationShake;
AsgineVFX.Tweening.AS_Tween は、軽量のゲームプレイと VFX アニメーションのための集中型プール型トゥイーン エンジンです。型付き補間、遅延、イージング、リピート、順方向/逆方向再生、完了コールバック、および 3 つのタイム ソースをサポートします。
using AsgineVFX.Tweening;
TweenInfo settings = new TweenInfo(
time: 0.4f,
style: EasingStyle.Back,
direction: EasingDirection.Out,
repeatCount: 0,
reverses: false,
delayTime: 0.1f);
TweenFloat tween = AS_Tween.Create(
v => light.intensity = v,
0f, 5f,
settings,
target: light,
TweenUpdateMode.Scaled);
tween.OnCompleted = () => Debug.Log("Tween finished");
tween.Play();
AS_Tween.Create(...) には、float、Vector2、Vector3、Color、Quaternion、Rect、および bool の型付きオーバーロードがあります。提供されたセッターは、更新ごとに補間値を受け取ります。
| フィールド | 関数 |
|---|---|
Time | 1 回の前方または後方パスの継続時間 (秒単位)。 |
Style | リニア、サイン、クワッド、キュービック、クォート、クイント、指数関数、円形、バウンス、エラスティック、またはバック。 |
Direction | In、Out、または InOut。 |
RepeatCount | 最初のパス後の追加の繰り返し。 0 は 1 回再生され、-1 は無期限に繰り返されます。 |
Reverses | 各順方向パスの後、そのループが完了する前に逆方向に再生されます。 |
DelayTime | 補間開始前の遅延。 |
ScaledはTime.deltaTimeを使用し、ゲームの時間スケールに従います。Unscaled は、UI や一時停止メニューに便利な Time.unscaledDeltaTime を使用します。Fixed は Time.fixedDeltaTime を使用しており、物理関連のアニメーションに役立ちます。TweenHandle handle = new TweenHandle(tween)
.OnCompleted(() => Debug.Log("Done"))
.Play();
if (handle.IsActive)
{
handle.Pause();
}
handle.Cancel();
AS_Tween.KillByTarget(light); // cancels every tween owned by this target
TweenHandle を保持します。ハンドルは、内部バージョンを通じてリサイクルされたインスタンスを検出します。TweenSequence は同時トゥイーン グループです。 Play() を呼び出すとすべてのメンバーが同時に開始され、シーケンスはすべてのメンバーが終了した後に完了コールバックを呼び出します。 Append() と Join() は両方とも、この同じ並列グループにトゥイーンを追加します。個々のメンバーが後で開始する必要がある場合は、各トゥイーンの DelayTime を使用します。シーケンスをキャンセルすると、すべてのメンバーが 1 つのユニットとしてキャンセルされます。
AsgineVFX は独自の .asg モデル形式を使用します。 .asg ファイルをプロジェクトにドロップすると、含まれるエミッター、ビーム、トレイルの階層が ScriptedImporter を通じて自動的に構築されます。手動のインポート ウィンドウは必要ありません。サポートされている古いコンテナのバージョンはインポート中に移行されます。新しいエクスポートでは現在の形式が使用されます。
ASParticleSystem.ASParticleRegistry — レンダリング機能の読み取り元となる静的ハブ。ほとんどが国内向けですが、世界規模の風にさらされています:
ASParticleSystem.ASParticleRegistry.GlobalWind = new Vector3(2f, 0f, 0f);
// affects emitters with WindAffectsDrag = true
AsgineVFX はライセンスを取得したソフトウェアです。適用される条件は、購入したエディションとその販売チャネルによって異なります。パッケージを所有しても、製品、ソース、アセンブリ、ツール、またはパッケージ ファイルの所有権が譲渡されることはありません。
LICENSE.txt ファイルが存在する場合、そのファイルがさらに適用されます。LICENSE.txt を参照してください。透明性に関する注記: このドキュメントの作成と編集には AI 支援ツールが使用されました。最終的なコンテンツは発行者によって審査されました。
AsgineVFX는 유니버설 렌더 파이프라인의 Unity 6.x에 적합한 런타임을 갖춘 GPU 기반 Unity 편집기 제작 도구입니다. 모든 기능을 갖춘 입자 방출기, 베지어 빔, 부착 트레일, 게임플레이 모듈(번개, 분화구 및 카메라 셰이크), 교환 도구 및 풀링된 트윈 엔진을 제공합니다. 입자는 GPU에서 시뮬레이션되고, 리본은 GPU로 렌더링되며, 모든 효과는 하나의 블룸/글로우 패스를 공유합니다.
Unity 6.xURP 활성새로운 입력 시스템(데모 전용)
.unitypackage를 프로젝트 창으로 드래그).| 네임스페이스 | 포함 |
|---|---|
ASParticleSystem | 이미터, 시퀀스, 존, 데이터 유형, 레지스트리 |
ASBeamSystem | 빔 |
ASTrailSystem | 어태치먼트 트레일 |
Game.Lightning | 라이트닝 매니저/볼트, 록 모듈 |
Game.CameraFx | 카메라 셰이커 + 사전 설정 |
AsgineVFX.Tweening | 트윈 엔진(AS_Tween, 트윈 유형) |
AsgineVFX에 포함된 주요 시스템과 각 시스템이 제공하는 기능입니다.
.asg 가져오기.ASParticleSystem.ASParticleEmitter — 전체 GPU 입자 방출기. GameObject에 추가하세요. 변환 위치/회전/크기는 방출 모양과 방향을 정의합니다.
using ASParticleSystem;
ASParticleEmitter emitter = GetComponent<ASParticleEmitter>();
// Continuous emission is driven by Rate while Enabled is true.
emitter.Enabled = true;
// One-shot burst using the emitter's own EmitCount:
emitter.TriggerEmit();
// Burst with a size scale and a re-timescale (0.5 = whole effect at half speed):
emitter.TriggerEmit(scale: 1.5f, reTimeScale: 0.5f);
// Burst overriding the particle count for this shot only:
emitter.TriggerEmit(countOverride: 64, scale: 1f, reTimeScale: 1f);
// Immediate raw burst / clear all live particles:
emitter.Emit(16);
emitter.Clear();
reTimeScale는 샷의 전체 타임라인(EmitDelay, EmitDuration, TimeScale 애니메이션 및 시뮬레이션)의 크기를 조정하므로 0.5f는 전체 효과를 50% 속도로 재생합니다.| 멤버 | 유형 | 참고 |
|---|---|---|
Color | ASColorSequence | 입자 수명에 따른 색조(읽기 전용 참조, 키포인트 편집) |
Size, Squash, SquashX/Y, Transparency, Brightness | ASNumberSequence | 수명 동안의 곡선. Squash는 비례적인 레거시 동작을 유지합니다. 스쿼시 X/Y는 각 축의 크기를 독립적으로 조정합니다. 투명도 0 = 불투명, 1 = 보이지 않음. |
RandomizeSize, RandomSizeMultiplier | bool / ASNumberRange | 옵션으로 안정적인 입자당 크기 승수. |
Texture | 텍스처 | 스프라이트/플립북 텍스처 |
CustomMaterial | 재료 | AsgineVFX, URP 또는 셰이더 그래프 재료 옵션(입자 재료 참조) |
MaterialRenderMode | ASParticleMaterialRenderMode | 절차적 또는 메시 호환 렌더러를 자동 선택합니다. 진단에는 수동 모드를 사용할 수 있습니다. |
RenderIntegration | ASParticleRenderIntegration | AsginePass는 기본 고성능 렌더러입니다. Unity2D는 기본 Unity 렌더러를 사용하므로 파티클 시뮬레이션이 GPU에 남아 있는 동안 효과가 Sorting Layer, Order in Layer 및 SortingGroup을 통해 SpriteRenderers와 인터리브될 수 있습니다. |
Orientation, FixedDirection | ASParticleOrientation / ASNormalId | FacingCamera / FacingCameraWorldUp / VelocityParallel / 속도수직 / 고정 / 교차. 고정은 실제 세계를 향한 평면을 유지하고 방향(앞/뒤/왼쪽/오른쪽/위/아래)을 노출합니다. Crossed는 두 평면에서 선택한 가로 또는 세로 텍스처 방향을 유지하면서 두 개의 수직 복사본을 사용합니다. |
LightEmission(추가 혼합), LightInfluence(환경 조명) | float | 일반-추가 블렌딩/장면-광 응답. Additive Blend는 Unity Light를 생성하지 않습니다. |
SortingLayerId, SortingOrder | int | Unity2D 통합에서 이는 기본 Unity 정렬 값이며 SpriteRenderer 앞, 뒤 또는 사이에 이미터를 배치할 수 있습니다. AsginePass에서는 전용 패스 내부에서 AsgineVFX 이미터를 주문합니다. |
ZOffset, LocalTransparencyModifier | float | 카메라 방향으로 깊이 바이어스/글로벌 페이드 |
| 멤버 | 유형 | 참고 |
|---|---|---|
Rate, RandomizeRate, RandomRate | float / bool / ASNumberRange | 초당 입자 수입니다. 무작위 속도는 루프당 한 번씩 샘플링되며 해당 루프 전체에서 안정적으로 유지됩니다. |
LoopBehavior, LoopDuration, LoopCount, LoopDelay | enum / float / int | 활성화 + 속도에 대한 수명 주기 방출: 무한, 1회 또는 선택적 지연이 있는 고정된 수의 활성 방출 루프 |
Lifetime, Speed, Rotation, RotSpeed | ASNumber범위 | 임의 최소…최대 당 입자 |
SpreadAngle | Vector2 | 수평 및 수직 확산. Inspector는 완전한 0~360° 각도를 제공합니다. 런타임 API는 축당 반각을 저장합니다. |
EmissionDirection | ASNormalId | 위 / 아래 / 왼쪽 / 오른쪽 / 앞 / 뒤 |
Shape, ShapeStyle, ShapeInOut, ShapePartial, EmitterSize, EmitterOffset | 열거형 / 부동 소수점 / Vector3 | 상자/구/원통/디스크. 검사기는 하나의 직접적인 순서를 따릅니다: 모양, 생성, 방향, 흐름 및 확산. ShapePartial은 상황에 따라 Sphere Coverage, End Radius 또는 Inner Radius로 표시됩니다. EmitterOffset은 GameObject를 이동하지 않고 로컬 생성 모양을 이동합니다. |
Acceleration, AccelerationX/Y/Z, Drag, RandomDrag | Vector3 / 시퀀스 / 부동 / 범위 | 축당 기본 가속도 더하기 평생 동안의 가속; 고정 또는 무작위 지수 드래그. |
LockedToPart, LockedToPartTarget | bool / 변환 | 이동 프레임에서 시뮬레이션 |
VelocityInheritance, WindAffectsDrag | float / bool | 이미터 속도 상속 / 전역 바람에 반응 |
MaxParticles | int | GPU 버퍼 용량은 이미터당 입자 4,194,240개의 교차 플랫폼 컴퓨팅 디스패치 제한으로 고정됩니다. 구성된 용량보다 큰 방출 요청은 안전하게 제한됩니다. |
입자 실행을 활성화하면 수명이 끝날 때, 절대 시간(초) 또는 수명 비율에 따라 입자당 하나의 이벤트가 발생합니다. 다음 이미터/시퀀스를 트리거하고 IASParticleExecutionReceiver를 구현하는 구성 요소에 알릴 수 있습니다. 빈 수신기 슬롯은 안전하게 무시되며 Inspector가 구성되는 동안 사용 가능한 상태로 유지됩니다. 매우 짧은 직접 자체 루프와 과도한 동일 프레임 체인은 클라이언트를 정지시키기 전에 차단됩니다. Max Particles와 관계없이 이미터당 프레임마다 최대 1024개의 실행 이벤트가 전송 및 전달되므로 비정상적으로 큰 입자 용량은 무제한 GPU 리드백을 생성할 수 없습니다. 위치 추적 동작은 이벤트의 ASParticleExecutionContext.Position를 사용할 수 있습니다.
플립북: FlipbookLayout, FlipbookMode (Loop/OneShot/PingPong/Random/FixedFrame), FlipbookFramerate, FlipbookBlendFrames, FlipbookSizeX/Y, FlipbookStartRandom. FixFrame은 0부터 시작하는 X/Y 아틀라스 좌표(오른쪽 X, 맨 위 행에서 Y 아래)를 노출하고 애니메이션 없이 해당 셀을 사용합니다.
수동 촬영 예약: EmitOnAlive, EmitCount, EmitDelay, EmitDuration, TimeScaleStart/End/Duration. TriggerEmit() 항상 하나의 독립적인 샷을 시작합니다. 이미터 루핑은 Emission 아래 Enabled + Rate에 속합니다.
LiveParticleCount, LastEmitCount. 라이브 카운트를 위해 ShowDiagnostics를 활성화합니다. 선택한 이미터가 자동으로 시각화됩니다. ShowEmitterBounds 선택되지 않은 동안 생성 모양이 계속 표시됩니다. 이전 ShowEmissionBounds API는 호환성 별칭으로 남아 있습니다.
모든 설정을 복제하지 않고 하나의 기본 이미터에서 관련 효과들을 만들 수 있습니다.
기본 이미터의 변경 사항은 로드된 배리언트에 자동으로 전파되며 검증 및 런타임 초기화 때 다시 확인됩니다. 배리언트 체인을 지원하며 자기 참조와 순환 체인은 거부됩니다.
.asg 내보내기는 완성된 상속 결과를 저장하고 기본 링크를 제거하므로 받는 사람은 원본 기본 이미터가 필요하지 않습니다.이미터와 빔이 공유하는 재사용 가능한 데이터 유형입니다.
각 키포인트는 선형, Ease In, Ease Out, Smooth 또는 Step 보간을 사용하여 다음 점으로 이어지는 세그먼트를 제어합니다. 청록색 세그먼트 핸들을 드래그하여 시각적으로 곡선 모양을 만듭니다. Ctrl/Cmd 키를 누른 채 클릭하면 키포인트가 전환되고, Shift 키를 누른 채 클릭하면 범위가 선택되며 드래그한 다음 선택한 모든 포인트가 함께 이동됩니다. 값, 임의 범위, 곡선 사전 설정 및 곡선 굽힘도 상대 오프셋을 유지하면서 전체 선택을 편집합니다. 선택한 내부 점을 제거하려면 삭제/백스페이스를 누르세요. 전체 곡선을 복사하고 붙여넣으려면 압축 미리보기 또는 전체 그래프를 마우스 오른쪽 버튼으로 클릭하세요. 임의 범위는 키 값 주위에 결정론적 입자별 변형을 추가합니다.
using ASParticleSystem;
// Constant value, or edit keypoints for a curve over t = 0..1
emitter.Size.Keypoints.Clear();
emitter.Size.Keypoints.Add(new ASNumberSequenceKeypoint(0f, 0.2f, 0f)); // time, value, envelope
emitter.Size.Keypoints.Add(new ASNumberSequenceKeypoint(1f, 1.5f, 0f));
emitter.Size.Scale = 2f; // multiplies the whole curve
float v = emitter.Size.Evaluate(0.5f);
emitter.Color.Keypoints.Clear();
emitter.Color.Keypoints.Add(new ASColorSequenceKeypoint(0f, Color.red));
emitter.Color.Keypoints.Add(new ASColorSequenceKeypoint(1f, Color.yellow));
범위 필드는 한 줄의 간결한 Inspector 레이아웃으로 시작과 끝 지점을 제공합니다. 두 값이 같으면 고정값이며 다르면 두 끝점 사이에서 무작위로 선택됩니다. 끝점 레이블을 드래그하여 조절하고, Alt로 전체 구간을 이동하며, Shift로 원래 중심을 기준으로 대칭 조절하고, Ctrl/Cmd로 스냅할 수 있습니다. 드래그 중 보조 키를 바꾸어도 항상 드래그 시작 상태를 기준으로 계산됩니다.
emitter.Lifetime = new ASNumberRange(2f, 4f); // random min..max
emitter.Speed = new ASNumberRange(5f); // constant
float lo = emitter.Lifetime.Min, hi = emitter.Lifetime.Max;
ASParticleSystem.ASParticleSequence — 여러 이미터를 그룹화하고 하나의 효과로 함께 트리거합니다. 단일 호출에서 전체 다중 이미터 VFX를 실행합니다.
using ASParticleSystem;
ASParticleSequence seq = GetComponent<ASParticleSequence>();
seq.Play(); // fires all assigned emitters
seq.Play(scale: 1.2f, timeScale: 0.5f); // scaled + slowed
seq.Clear();검사기 필드: playOnAlive, reScale, reTimeScale(Play()에 의해 적용되는 기본값) 및 emitters 목록.
ASParticleSystem.ASParticleZone — 통과하는 모든 입자에 영향을 미치는 세계 공간 볼륨입니다. 구성 요소를 추가하고 절대 세계 공간 Size을 설정한 다음 모양과 모드를 선택합니다. 위치를 변환하고 회전하여 영역을 배치합니다. 변환 배율은 의도적으로 무시되므로 중첩되거나 배율이 조정된 계층이 해당 크기를 왜곡하지 않습니다.
| 멤버 | 유형 | 참고 |
|---|---|---|
Shape | 상자/구체 | 볼륨 테스트 형상 |
Mode | FasterTimeScale / AntiEnter / AntiSpawner / TriggerVFX / 충돌 / ParticleTrigger | 아래 참조 |
Size | Vector3 | 절대 월드 공간 크기. Transform 스케일 무시 |
Center | Vector3 | 영역 볼륨의 로컬 오프셋. Transform 스케일 무시 |
TimeScale | float | FasterTimeScale 모드의 수명 승수 |
| 모드 | 효과 |
|---|---|
| FasterTimeScale | 입자가 더 빨리 노화됨(페이드 아웃 영역으로 인해 세게 사라지는 대신 사라짐) |
| AntiEnter | 입자가 볼륨에 들어가면 제거됩니다. GPU 스윕 선분 검사가 프레임 사이의 전체 이동 경로를 검사하여 프레임 저하 시 빠른 파티클이 영역을 통과하는 것을 방지합니다. |
| AntiSpawner | 볼륨 내부에 생성된 입자가 억제됩니다. |
| TriggerVFX | 일치하는 3D/2D 충돌체가 들어올 때 할당된 입자 시퀀스 또는 입자 방출기를 재생합니다. 레이어 및 선택적 태그 필터와 UnityEvent 콜백을 사용할 수 있습니다. |
| 충돌 | GPU 입자가 상자 또는 구 볼륨과 충돌합니다. 바운스 및 마찰은 CPU 물리적 리드백 없이 속도 응답을 제어합니다. |
| ParticleTrigger | GPU에서 영역 외부에서 내부로 들어오는 전환을 감지하여 진입할 때마다 한 번만 실행합니다. 빠른 파티클은 스윕 선분 검사를 사용하므로 두 프레임 사이에 영역 전체를 통과해도 트리거됩니다. Unity Collider 없이 정확한 진입 지점에서 지정된 이미터 또는 시퀀스를 시작합니다. 트리거 이벤트는 제한된 실행 이벤트 전송을 공유하며(이미터당 프레임마다 최대 1024개), 파티클 용량으로 인해 무제한 CPU 리드백이 발생하지 않도록 합니다. |
파티클 영향 영역은 활성 이미터가 자동으로 감지합니다. 경계 편집은 이미터 모양과 동일한 6개 면 핸들을 제공합니다. 일반 드래그는 한 면, Alt는 대칭 크기 조절, Shift는 상자 비율 유지, Ctrl는 스냅입니다. 구는 명확한 월드 공간 지름으로 표시됩니다. Inspector는 일치하는 3D/2D Trigger Collider를 만들고 Size 및 Center 편집에 자동으로 동기화합니다. TriggerVFX 후속 효과는 진입 오브젝트, 영역 중심 또는 대상 Transform에서 생성할 수 있으며 상대 위치 오프셋도 지원합니다.
이미터의 CustomMaterial는 기본 AsgineVFX 입자 재료와 URP 셰이더 그래프 재료를 포함한 일반 URP 재료를 모두 허용합니다. MaterialRenderMode.Auto는 머티리얼 계약에서 올바른 렌더러를 선택합니다.
자동 모드에서는 설정이나 변환이 필요하지 않습니다. 유효하지 않은 셰이더는 안전하게 실패하며 검사기는 잘못된 결과를 생성할 수 있는 구성만 보고합니다.
AsgineVFX/Particles/Unlit — 색조, 방출 및 알파 차단.AsgineVFX/Particles/Lit — URP 주 조명, 그림자, 노멀 맵, 금속성 및 부드러움 컨트롤.AsgineVFX/Particles/Anime — 셀 밴드, 실루엣 윤곽선 및 알파 인식 림 라이트.AsgineVFX/Particles/Dissolve — 애니메이션 노이즈가 방출 가장자리로 디졸브됩니다.AsgineVFX/Particles/Distortion — 입자 텍스처의 애니메이션 UV/열 왜곡.자산 ▸ 생성 ▸ AsgineVFX ▸ 입자 재질에서 생성합니다. 이러한 재질은 자동으로 절차 경로를 사용합니다.
이미터의 텍스처는 재질의 입자 텍스처를 재정의합니다. 이미터 필드가 비어 있으면 머티리얼 텍스처가 자동으로 사용됩니다.
입자 텍스처가 모두 같은 방식으로 투명도를 저장하는 것은 아닙니다. 텍스처 알파는 실제 알파 채널이 있는 PNG/TGA 스프라이트에 대한 기본적이고 올바른 선택입니다. RGB로 적용 범위를 인코딩하는 완전히 불투명하게 가져온 텍스처는 자동으로 정규화되므로 사용자 정의 셰이더 그래프는 일반 텍스처 알파 출력을 사용할 수 있습니다. 휘도 및 알파 × 휘도는 기본 AsgineVFX 재질에 대한 선택적 예술적 모드로 유지됩니다.
변환은 선택 사항입니다. 재질에 원본 그래프나 셰이더 로직이 필요하지 않고 오버헤드가 낮은 절차 경로가 선호되는 경우에만 사용하세요. 머티리얼 렌더 모드를 절차적로 설정한 다음 AsgineVFX 파티클 머티리얼로 변환을 사용합니다. 변환기는 원본을 보존하고 공통 표면 값을 별도의 재질로 복사합니다.
자산 ▸ 생성 ▸ AsgineVFX ▸ Shader ▸ Particle Unlit 또는 Particle Lit를 사용하여 선택한 프로젝트 폴더에 일반 편집 가능한 ShaderLab/HLSL 파일을 생성합니다. 두 스타터 모두 필수 AsgineVFX 파티클 인터페이스, 투명 URP 렌더 상태, 플립북 샘플링, 이미터 색상, 밝기 및 투명도 처리 기능을 이미 포함하고 있습니다.
입자 꺼짐는 사용자 정의 조각 효과 및 방출을 위한 깔끔한 기반입니다. 파티클 조명은 주 조명 그림자, 주변 조명, 노멀 맵 샘플링, 금속성, 부드러움 및 방출을 추가합니다. 생성된 파일은 패키지 셰이더를 수정하거나 설명서에서 설정 코드를 복사하지 않고도 직접 편집할 수 있습니다.
자산 ▸ 생성 ▸ AsgineVFX ▸ 셰이더 그래프 ▸ 입자 꺼짐 또는 입자 켜짐을 사용합니다. 새 그래프는 투명 입자 렌더 설정, 텍스처 샘플링, UV0 및 이미터 색상/투명도가 이미 연결된 일반 편집 가능한 URP 셰이더 그래프입니다. 이를 열고 일반 셰이더 그래프에서와 똑같이 효과를 구축하세요.
파티클 언릿은 글로우, 디졸브, 왜곡 및 스타일화된 VFX를 위한 최고의 시작점입니다. 파티클 조명은 일반, 금속성, 부드러움, 방출 및 주변 폐색에 대한 표준 조명 입력을 추가로 노출합니다.
URP 셰이더 그래프 재료를 직접 할당하고 재료 렌더 모드를 자동로 둡니다. 투명 표면(또는 의도적인 알파 클리핑)을 사용하고, UV0으로 입자 텍스처를 샘플링하고, 이미터의 색상, 밝기 및 투명도 시퀀스가 결과에 영향을 미칠 때 그래프의 색상과 알파에 표준 정점 색상 노드를 곱합니다.
일반 Lit 및 Fresnel 재질에 둥근 빌보드 법선 필드를 자동으로 제공하므로 표면 조명 튜토리얼은 AsgineVFX 관련 그래프 노드 없이 입자에서 자연스럽게 동작합니다. 평면 카드용으로 의도적으로 설계된 셰이더에 대해서만 재료 표면을 플랫로 설정합니다. 이는 실제 3D 형상이 아닌 조명 표현입니다. 실제 볼륨, 뒷면 또는 메시 깊이에 의존하는 효과에는 빌보드가 아닌 메시가 필요합니다.
이미터 텍스처는 표준 _BaseMap/_MainTex 참조에 자동으로 바인딩됩니다. 다른 이름의 텍스처 속성을 사용하는 그래프는 해당 재질에 할당된 텍스처를 유지합니다. 호환성 경로는 프레임 블렌딩이 활성화된 경우 가장 가까운 플립북 프레임을 선택합니다. 기본 AsgineVFX 셰이더는 진정한 2프레임 보간을 유지합니다.
패키지에는 Assets/AsgineVFX/ShaderGraph/SubGraphs 아래에 선택적 Unity 하위 그래프가 포함되어 있습니다. 버전에 민감한 편집기 확장 대신 공개 셰이더 그래프 자산을 사용합니다.
_MainTex 또는 _BaseMap인 Texture2D 속성을 연결합니다. 노드는 UV0을 샘플링하고 이미 터의 색상, 밝기 및 투명도가 적용된 최종 RGBA, 최종 RGB 및 최종 알파를 반환합니다. 텍스처 RGBA와 입자 RGBA도 맞춤 효과를 위해 별도로 노출됩니다.노드 생성 ▸ AsgineVFX ▸ 입자를 통해 두 노드를 모두 찾습니다. 이는 편의를 위한 것일 뿐입니다. 표준 UV0 및 Vertex Color 노드를 사용하는 그래프는 계속 완벽하게 지원됩니다.
VFX 그래프는 머티리얼이 아닌 별도의 파티클 시뮬레이션 시스템이므로 VFX 그래프 에셋을 CustomMaterial에 배치할 수 없습니다. 셰이더 그래프 재질이 지원됩니다.
ASBeamSystem.ASBeam - 3차 베지어 곡선을 따르는 두 개의 부착 변환 사이의 GPU 리본입니다.
using ASBeamSystem;
ASBeam beam = GetComponent<ASBeam>();
beam.Attachment0 = startTransform;
beam.Attachment1 = endTransform;
beam.Width0 = 1f; beam.Width1 = 3f;
beam.CurveSize0 = 4f; // bulge along Attachment0's local +X
beam.FaceCamera = true;
beam.TextureSpeed = new Vector2(1f, 0f); // scroll: x=length, y=width
beam.SetTextureOffset(new Vector2(0.5f, 0f));
| 멤버 | 유형 | 참고 |
|---|---|---|
Attachment0/1 | 변형 | 곡선 끝점; 로컬 +X(오른쪽) 축은 벌지 방향을 제어합니다. 빔을 선택하면 두 부착물에 대한 색상으로 구분된 +X 화살표와 위치 핸들이 장면 뷰에 직접 표시됩니다. |
Width0/1, CurveSize0/1, Segments | float/int | 리본 너비, 곡선 강도 및 기하학 테셀레이션. 텍스처는 테셀레이션 후에 연속적으로 매핑되므로 세그먼트를 늘려도 별도의 팬으로 분할되지 않습니다. |
FaceCamera | bool | 리본은 항상 카메라를 향합니다(화면 방향) |
Color / Transparency / Brightness | ASColorSequence / ASNumberSequence | 빔을 따른 그라데이션 길이 |
TextureMode, TextureLength, TextureSpeed | 열거형/부동 소수점/벡터2 | 줄바꿈/정적/늘이기; 축당 스크롤 속도. 하나의 속도 축을 정지하면 해당 축이 원래 오프셋으로 재설정됩니다. |
LightEmission, LightInfluence, ZOffset | — | 추가 블렌딩, 환경 조명 응답 및 렌더링 깊이 배치 |
ASTrailSystem.ASTrail - 두 개의 움직이는 부착물 변환 사이에 지속적인 리본이 있습니다. 부착 거리는 기본 너비를 정의하고 저장된 경로는 트레일 모양을 정의합니다.
using ASTrailSystem;
ASTrail trail = GetComponent<ASTrail>();
trail.Attachment0 = leftEdge;
trail.Attachment1 = rightEdge;
trail.Lifetime = 0.8f;
trail.MinLength = 0.05f;
trail.MaxLength = 12f;
trail.FaceCamera = false;
// Immediately discard the recorded path.
trail.Clear();
| 멤버 | 유형 | 참고 |
|---|---|---|
Attachment0/1 | 변환 | 두 개의 리본 가장자리. 이들의 분리는 트레일의 기본 너비입니다. 트레일을 선택하면 색상으로 구분된 앵커 핸들이 모두 장면 보기에 직접 표시됩니다. |
Enabled | bool | 새 샘플을 제어합니다. 기존 트레일 세그먼트의 수명이 정상적으로 종료됩니다. |
Lifetime | float | 기록된 포인트가 표시되는 기간. |
MinLength | float | 새 안정 경로 지점이 기록되기 전의 최소 이동입니다. |
MaxLength | float | 선택적 세계 공간 경로 제한; 0은 길이 제한을 비활성화합니다. |
MaxPoints | int | 기록된 경로에 대한 하드 메모리 및 형상 제한입니다. |
FaceCamera | bool | 리본이 카메라를 향하도록 합니다. 그렇지 않으면 부착 쌍이 해당 평면을 정의합니다. |
WidthScale | ASNumberSequence | 정규화된 트레일 기간에 부착 너비를 곱합니다. |
Color / Transparency / Brightness | 시퀀스 | 최신 끝부터 만료된 쪽으로 평가됩니다. 종료됩니다. |
TextureMode | ASTextureMode | 스트레치는 보이는 트레일 전체에 걸쳐 반복을 맞춥니다. 랩 앵커는 현재 시작에서 반복하고 정적는 이동 거리에 UV 스탬프를 유지합니다. |
TextureLength, TextureSpeed | float/Vector2 | 길이를 반복하고 선택적 UV 스크롤링을 수행합니다. |
Game.Lightning.ASLightningManager — 풀링된 자체 틱 번개 시스템입니다. 게으른 싱글톤을 통해 액세스합니다.
using Game.Lightning;
ASLightningBolt bolt = ASLightningManager.Instance.Spawn(from, to, partCount: 30);
bolt.MinRadius = 1f;
bolt.MaxRadius = 2.5f;
bolt.Thickness = 1.1f;
bolt.PulseSpeed = 10f;
bolt.FadeLength = 0.4f;
bolt.Color = solidGradient; // UnityEngine.Gradient
// Attach continuously-emitting sparks to a bolt:
ASLightningManager.Instance.AttachSparks(bolt, maxSparkCount: 6);
bolt.Restart(); bolt.Kill();
볼트 튜닝 필드에는 MinRadius/MaxRadius, Thickness, Frequency, AnimationSpeed, PulseSpeed, PulseLength, FadeLength, MinTransparency/MaxTransparency, CurveSize0/1 및 Color. 볼트는 풀링되어 있으며 자유롭게 생성됩니다.
Game.Lightning.ASRockModule — 여유로움에 따라 오르락내리락하는 잔해/화구암을 생성합니다. 게으른 싱글톤.
using Game.Lightning;
// center, radius, size, [amount], [angleStep]
ASRockModule.Instance.Crater(hitPoint, radius: 8f, size: 1.8f);
ASRockModule.Instance.Crater(hitPoint, 16.5f, 1.8f, amount: 24, angleStep: 15f);
Game.CameraFx.ASCameraShaker — 추가 위치/회전 흔들림. 카메라 장비에 구성 요소를 놓습니다. 매 프레임마다 기본 포즈에 추가하는 PositionShake 및 RotationShake를 노출합니다.
using Game.CameraFx;
ASCameraShaker.Instance.Shake(ASCameraShakePresets.Lightning());
ASCameraShaker.Instance.Shake(ASCameraShakePresets.Explosion());
ASCameraShaker.Instance.Shake(ASCameraShakePresets.Bump());
// Apply in your camera LateUpdate:
cam.position = basePos + ASCameraShaker.Instance.PositionShake;
cam.rotation = baseRot * ASCameraShaker.Instance.RotationShake;
AsgineVFX.Tweening.AS_Tween는 가벼운 게임플레이와 VFX 애니메이션을 위한 중앙 집중식 풀링 트윈 엔진입니다. 형식화된 보간, 지연, 완화, 반복, 앞으로/뒤로 재생, 완료 콜백 및 세 가지 시간 소스를 지원합니다.
using AsgineVFX.Tweening;
TweenInfo settings = new TweenInfo(
time: 0.4f,
style: EasingStyle.Back,
direction: EasingDirection.Out,
repeatCount: 0,
reverses: false,
delayTime: 0.1f);
TweenFloat tween = AS_Tween.Create(
v => light.intensity = v,
0f, 5f,
settings,
target: light,
TweenUpdateMode.Scaled);
tween.OnCompleted = () => Debug.Log("Tween finished");
tween.Play();
AS_Tween.Create(...)에는 float, Vector2, Vector3, Color, Quaternion, Rect 및 bool에 대한 오버로드가 입력되었습니다. 제공된 setter는 업데이트할 때마다 보간된 값을 받습니다.
| 필드 | 기능 |
|---|---|
Time | 1개의 정방향 또는 역방향 패스 기간(초). |
Style | 선형, 사인, 쿼드, 3차, 쿼트, 5중, 지수, 원형, 바운스, 탄성 또는 역. |
Direction | In, Out 또는 InOut. |
RepeatCount | 첫 번째 패스 후 추가 반복; 0는 한 번 재생되고 -1는 무한 반복됩니다. |
Reverses | 해당 루프를 완료하기 전에 모든 정방향 패스 후에 뒤로 재생합니다. |
DelayTime | 보간이 시작되기 전의 지연입니다. |
Scaled는 Time.deltaTime를 사용하며 게임 시간 척도를 따릅니다.Unscaled는 UI 및 일시정지 메뉴에 유용한 Time.unscaledDeltaTime를 사용합니다.Fixed는 물리 관련 애니메이션에 유용한 Time.fixedDeltaTime를 사용합니다.TweenHandle handle = new TweenHandle(tween)
.OnCompleted(() => Debug.Log("Done"))
.Play();
if (handle.IsActive)
{
handle.Pause();
}
handle.Cancel();
AS_Tween.KillByTarget(light); // cancels every tween owned by this target
TweenHandle를 유지합니다. 핸들은 내부 버전을 통해 재활용 인스턴스를 감지합니다.TweenSequence는 동시 트윈 그룹입니다. Play()를 호출하면 모든 멤버가 함께 시작되고 시퀀스는 모든 멤버가 완료된 후 완료 콜백을 호출합니다. Append() 및 Join() 모두 이 동일한 병렬 그룹에 트윈을 추가합니다. 개별 멤버가 나중에 시작해야 하는 경우 각 트윈의 DelayTime를 사용하십시오. 순서를 취소하면 모든 멤버가 하나의 단위로 취소됩니다.
AsgineVFX는 자체 .asg 모델 형식을 사용합니다. .asg 파일을 프로젝트에 놓으면 포함된 이미터, 빔 및 트레일 계층 구조가 ScriptedImporter를 통해 자동으로 구축되므로 수동 가져오기 창이 필요하지 않습니다. 지원되는 이전 컨테이너 버전은 가져오기 중에 마이그레이션됩니다. 새로운 내보내기는 현재 형식을 사용합니다.
ASParticleSystem.ASParticleRegistry — 렌더링 기능이 읽는 정적 허브입니다. 대부분 내부이지만 전체적인 바람이 노출됩니다:
ASParticleSystem.ASParticleRegistry.GlobalWind = new Vector3(2f, 0f, 0f);
// affects emitters with WindAffectsDrag = true
AsgineVFX는 라이선스 소프트웨어입니다. 적용 가능한 조건은 구매한 에디션과 배포 채널에 따라 다릅니다. 패키지를 소유한다고 해서 제품, 소스, 어셈블리, 도구 또는 패키지 파일의 소유권이 이전되는 것은 아닙니다.
LICENSE.txt에 의해 추가로 관리됩니다.LICENSE.txt(포함된 경우)를 참조하세요.투명성 참고 사항: 이 문서를 준비하고 편집하는 동안 AI 지원 도구가 사용되었습니다. 최종 콘텐츠는 출판사의 검토를 거쳤습니다.