目录
前言
一、如何获取 VFX Graph 示例内容?
二、Output Event Handlers:让特效与游戏逻辑深度交互
2.1 什么是 Output Event?
2.2 内置事件处理器脚本
三、深入使用 VFXOutputEventPrefabSpawn
3.1 工作流程
3.2 属性绑定处理器示例
四、Learning Templates:系统化学习 VFX Graph
五、Visual Effect Graph Additions:开箱即用的高质量资源
5.1 包含内容
5.2 典型应用场景
结语
前言
Unity 的Visual Effect Graph(VFX Graph)不仅是一个强大的 GPU 粒子系统,更是一个高度可扩展的视觉特效创作平台。为了帮助开发者快速入门并掌握其高级功能,Unity 官方提供了丰富的示例内容(Sample Content),涵盖从基础模板、实用节点到事件响应脚本的完整生态。
这些示例不仅可直接用于项目开发,还能作为学习 VFX Graph 核心概念(如 Output Events、Prefab 池化、属性绑定等)的最佳实践参考。
本文将系统介绍VFX Graph 提供的三类核心示例资源:
- Output Event Handlers(输出事件处理器)
- Learning Templates(学习模板)
- Visual Effect Graph Additions(附加资源包)
并详细解析其使用方法与应用场景,助你高效构建电影级实时特效。
一、如何获取 VFX Graph 示例内容?
在导入示例前,请确保已安装Visual Effect Graph 包:
- 打开Window > Package Manager;
- 在左上角Packages下拉菜单中选择Unity Registry或In Project;
- 若未看到Visual Effect Graph,请进入Edit > Project Settings > Package Manager;
- 在Advanced Settings中勾选Show Dependencies,即可显示该包;
- 在包列表中点击Visual Effect Graph;
- 在详情页的Samples区域,点击Import按钮导入所需示例。
✅ 所有导入的示例将统一存放在项目根目录下的
Samples/文件夹中,便于管理与复用。
二、Output Event Handlers:让特效与游戏逻辑深度交互
2.1 什么是 Output Event?
在 VFX Graph 中,Output Context(输出上下文)可以发送Output Events(输出事件),用于通知外部系统“某个粒子行为已触发”(如爆炸命中、粒子消亡等)。而Output Event Handlers正是一组 MonoBehaviour 脚本,用于监听这些事件并执行对应操作。
2.2 内置事件处理器脚本
| 脚本名称 | 功能说明 |
|---|---|
VFXOutputEventCMCameraShake | 接收到指定名称的事件后,通过Cinemachine Impulse Source触发相机震动; ✅ 支持 Editor 预览(需勾选Execute in Editor)。 |
VFXOutputEventPlayAudio | 播放指定AudioSource的声音;常用于爆炸、撞击等音效同步。 |
VFXOutputEventPrefabSpawn | 从对象池中生成 Prefab,并根据事件属性设置位置、旋转、缩放与生命周期; 支持通过子脚本动态配置 Prefab 内部组件。 |
VFXOutputEventRigidBody | 对指定 RigidBody 施加力或冲量,实现物理交互(如爆炸推动物体); ⚠️ 注意:文档中重复列出两次,实际为同一脚本。 |
VFXOutputEventUnityEvent | 触发标准UnityEvent,可连接任意方法(如 UI 反馈、成就解锁等)。 |
📌 所有脚本均需挂载在包含VisualEffect 组件的 GameObject 上,并指定要监听的事件名称(需与 VFX Graph 中 Output Context 发送的事件名一致)。
三、深入使用VFXOutputEventPrefabSpawn
这是最强大的事件处理器之一,专为高性能 Prefab 实例化设计,采用对象池机制避免频繁 Instantiate/Destroy 带来的性能开销。
3.1 工作流程
- 组件启用时,自动将所有池内 Prefab 设为
SetActive(false)(隐藏); - 收到匹配的 Output Event 后:
- 从池中取出一个空闲 Prefab;
- 根据事件属性设置其位置、旋转、缩放(需勾选对应选项);
- 若启用Use Lifetime,则启动协程,在指定时间后自动禁用该 Prefab(归还池中);
- 自动查找 Prefab 内所有
VFXOutputEventPrefabAttributeHandler子脚本,并调用其Bind()方法进行属性绑定。
3.2 属性绑定处理器示例
官方提供两个典型 Handler:
VFXOutputEventPrefabAttributeHandler_Light
将事件中的color属性映射到 Light 组件的颜色,并通过Brightness Scale参数控制亮度强度。VFXOutputEventPrefabAttributeHandler_RigidBodyVelocity
将事件中的velocity属性赋值给 RigidBody 的velocity,实现粒子速度驱动物理运动。
💡 开发者可继承
VFXOutputEventPrefabAttributeHandler创建自定义 Handler,实现任意组件的数据同步(如 ParticleSystem、Animator、Custom Script 等)。
四、Learning Templates:系统化学习 VFX Graph
Learning Templates是一套专为教学设计的示例集合,包含:
- URP 与 HDRP 双渲染管线场景;
- 分类清晰的 VFX 资源(如流体、火焰、魔法、环境特效);
- 交互式展示面板:点击特效即可查看说明、参数解释及官方文档链接。
📘 适用人群:初学者快速理解 Context、Blocks、Operators 的作用;中级用户学习高级技巧(如 Strip 粒子、Mesh 输出、自定义 Shader)。
建议从LearningTemplates/Scenes/中打开对应管线的场景,逐个体验并查看.vfx文件内部结构。
五、Visual Effect Graph Additions:开箱即用的高质量资源
此示例包聚焦于实用工具与美术资源,帮助开发者复现传统粒子系统行为或加速原型开发:
5.1 包含内容
- Flipbook 纹理集:多套 CC0 协议授权的序列帧贴图(烟雾、火花、魔法等);
- 示例 VFX 图:演示如何使用特定节点(如 Noise、Curl、Collision);
- 可复用 Subgraph 与 Shader:如软粒子(Soft Particles)、运动矢量采样(Motion Vector Sampling);
- Flipbook 采样助手:
- 支持线性切割或基于运动矢量的动态切割,提升 Flipbook 动画流畅度。
5.2 典型应用场景
- 使用Soft Particles Helper实现粒子与场景深度融合(避免“穿模”);
- 利用Flipbook Motion Vector Sampler让高速移动的粒子保持动画连贯性;
- 直接拖拽 CC0 纹理到项目中,快速搭建特效原型。
✅ 所有资源均可自由用于商业项目(CC0 = 无版权要求)。
结语
Unity Visual Effect Graph 的示例内容远不止“代码片段”,而是一个完整的学习-开发-优化闭环生态系统。无论是通过Output Event Handlers实现游戏逻辑联动,还是借助Learning Templates系统掌握核心概念,亦或是利用Additions 资源包快速产出高质量特效,都能显著降低开发门槛,提升创作效率。