Output Event Handlers | Visual Effect Graph | 10.2.2
docs.unity3d.com
    Show / Hide Table of Contents

    Output Event Handlers

    A VFXOutputEventAbstractHandler is an API helper that hooks into an Output Event to allow you to execute scripts based on the event.

    The Visual Effect Graph includes a set of example scripts as a sample. For information on how to install the sample, see Installing sample scripts.

    Output Event Handler API

    To create your own output event handler, write a script that extends the UnityEngine.VFX.Utility.VFXOutputEventAbstractHandler class.

    When you write a MonoBehaviour that extends this class, it reduces the amount of code required to perform a hook. This is because the base class does the job of filtering the event and calls the following method :

    override void OnVFXOutputEvent(VFXEventAttribute eventAttribute)

    When you implement this method, Unity calls it every time the event triggers and passes in the event's attributes.

    Example

    The following example teleports a Game Object to the Given position when it receives an event.

    [RequireComponent(typeof(VisualEffect))]
    public class VFXOutputEventTeleportObject : VFXOutputEventAbstractHandler
    {
        public Transform target;
    
        static readonly int kPosition = Shader.PropertyToID("position");
    
        public override void OnVFXOutputEvent(VFXEventAttribute eventAttribute)
        {
            if(target != null)
                target.position = eventAttribute.GetVector3(kPosition);
        }
    }
    

    Installing Sample Scripts

    To help you create your own VFXOutputEventAbstractHandler, the Visual Effect Graph package includes a set of example scripts that you can install via the Package Manager. To do this, select the Visual Effect Graph package then, next to OutputEvent Helpers Sample, click the Import button.

    Using Output Event Helpers

    The OutputEvent Helper scripts are deployed into the project as a Sample contained in the folder : Assets/Samples/Visual Effect Graph/(version)/OutputEvent Helpers/.

    These helpers are MonoBehaviour Scripts that you can add to Game Objects that hold a VisualEffect Component. These scripts will listen for OutputEvents of a given name, and will react to these events by performing various actions.

    Some of these scripts can be safely previewed in editor, while other aren't. The Inspector shall display a Execute in Editor toggle if the script is able to be previewed. Otherwise, you can press the Play button to experience the behavior in play mode.

    The Sample Output Event Helpers are the following:

    • VFXOutputEventCMCameraShake : Upon receiving a given OutputEvent, Triggers a Camera Shake through the Cinemachine Impulse Sources system.
    • VFXOutputEventPlayAudio : Upon receiving a given OutputEvent, Plays a sound from an AudioSource
    • VFXOutputEventPrefabSpawn : Upon receiving a given OutputEvent, Spawns an invisible prefab game object from a pool of prefabs, at a given position, rotation and angle, and manages its life based on the Event lifetime attribute. Spawned Prefabs can also be customized upon spawn with the help of VFXOutputEventPrefabAttributeHandler scripts in order to configure child elements of the prefab (see below).
    • VFXOutputEventRigidBody : Upon receiving a given OutputEvent, applies a force to a RigidBody.
    • VFXOutputEventRigidBody : Upon receiving a given OutputEvent, triggers a UnityEvent

    Using Output Event Prefab Spawn

    The VFXOutputEventPrefabSpawn script handles the spawn of hidden prefabs from a pool. These prefabs are instantiated as invisible, and disabled upon enabling this monobehaviour, and destroyed upon disabling the monobehaviour.

    Upon receiving a given OutputEvent, the system will look for a free (disabled) prefab, and if any available will :

    • enable it

    • set its position from the position attribute, if enabled in the inspector

    • set its rotation from the angle attribute, if enabled in the inspector

    • set its scale from the scale attribute, if enabled in the inspector

    • start a coroutine with a delay (based on the lifetime attribute), that will disable (free) the prefab once elapsed, thus making it available for spawn upon a future OutputEvent

    • search for any VFXOutputEventPrefabAttributeHandler scripts in the prefab instance in order to perform attribute binding.

    VFXOutputEventPrefabAttributeHandler scripts are used to configure parts of the prefab, based on the event that spawned the prefab. Here are two examples bundled with the samples:

    • VFXOutputEventPrefabAttributeHandler_Light : this script, upon prefab spawn, will set the color and the brightness of the light, based on the OutputEvent color attribute and a brightnessScale property.
    • VFXOutputEventPrefabAttributeHandler_RigidBodyVelocity : this script, upon prefab spawn, will set the current rigid body velocity, based on the OutputEvent velocity attribute.
    Back to top
    Copyright © 2023 Unity Technologies — Terms of use
    • Legal
    • Privacy Policy
    • Cookies
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)
    "Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
    Generated by DocFX on 18 October 2023