# SendEvent

> Use this method to send a custom named event.

## Definition

* **Type:** Method
* **Namespace:** [UnityEngine.VFX](/engine/6000.6/script-reference/unityengine/vfx.md)
* **Assembly:** UnityEngine.VFXModule

## SendEvent(int, VFXEventAttribute)

Use this method to send a custom named event.

```csharp
public void SendEvent(int eventNameID, VFXEventAttribute eventAttribute)
```

### Parameters

**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): The ID of the event. This is the same ID that [Shader.PropertyToID](/engine/6000.6/script-reference/unityengine/shader/propertytoid.md) returns.**** (\[VFXEventAttribute]\(/engine/6000.6/script-reference/unityengine/vfx/vfxeventattribute)): Can be null or a VFXEventAttribute. To create a VFXEventAttribute, use [VisualEffect.CreateVFXEventAttribute](/engine/6000.6/script-reference/unityengine/vfx/visualeffect/createvfxeventattribute.md).

### Examples

```csharp
// The following example triggers the default visual effect play event once every second.
using UnityEngine;
using UnityEngine.VFX;
public class SendEventExample : MonoBehaviour
{
    public VisualEffect m_VisualEffect;
    private float m_Waiting = 1.0f;

    private void Update()
    {
        if (m_VisualEffect)
        {
            m_Waiting -= Time.deltaTime;
            if (m_Waiting < 0.0f)
            {
                m_Waiting = 1.0f;
                m_VisualEffect.SendEvent(VisualEffectAsset.PlayEventID);
            }
        }
    }
}
```

```csharp
// The following example triggers multiple events during the same frame every second.
using UnityEngine;
using UnityEngine.VFX;

public class SendEventExample : MonoBehaviour
{
    public VisualEffect m_VisualEffect;
    private float m_Waiting = 1.0f;
    private int m_SpawnCountIdentifier;
    private int m_ColorIdentifier;
    private int m_EventNameIdentifier;

    private void Start()
    {
        m_SpawnCountIdentifier = Shader.PropertyToID("spawnCount");
        m_ColorIdentifier = Shader.PropertyToID("color");
        m_EventNameIdentifier = Shader.PropertyToID("direct");
    }

    private void Update()
    {
        if (m_VisualEffect)
        {
            m_Waiting -= Time.deltaTime;
            if (m_Waiting < 0.0f)
            {
                m_Waiting = 1.0f;
                var eventAttribute = m_VisualEffect.CreateVFXEventAttribute();
                // Red
                eventAttribute.SetFloat(m_SpawnCountIdentifier, 1);
                eventAttribute.SetVector3(m_ColorIdentifier, new Vector3(1, 0, 0));
                m_VisualEffect.SendEvent(m_EventNameIdentifier, eventAttribute);
                // Blue
                eventAttribute.SetFloat(m_SpawnCountIdentifier, 3);
                eventAttribute.SetVector3(m_ColorIdentifier, new Vector3(0, 0, 1));
                m_VisualEffect.SendEvent(m_EventNameIdentifier, eventAttribute);
                // Green
                eventAttribute.SetFloat(m_SpawnCountIdentifier, 2);
                eventAttribute.SetVector3(m_ColorIdentifier, new Vector3(0, 1, 0));
                m_VisualEffect.SendEvent(m_EventNameIdentifier, eventAttribute);
            }
        }
    }
}
```

## SendEvent(string, VFXEventAttribute)

Use this method to send a custom named event.

```csharp
public void SendEvent(string eventName, VFXEventAttribute eventAttribute)
```

### Parameters

**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): The name of the event.**** (\[VFXEventAttribute]\(/engine/6000.6/script-reference/unityengine/vfx/vfxeventattribute)): Can be null or a VFXEventAttribute. To create a VFXEventAttribute, use [VisualEffect.CreateVFXEventAttribute](/engine/6000.6/script-reference/unityengine/vfx/visualeffect/createvfxeventattribute.md).

### Examples

```csharp
// The following example triggers the default visual effect play event once every second.
using UnityEngine;
using UnityEngine.VFX;
public class SendEventExample : MonoBehaviour
{
    public VisualEffect m_VisualEffect;
    private float m_Waiting = 1.0f;

    private void Update()
    {
        if (m_VisualEffect)
        {
            m_Waiting -= Time.deltaTime;
            if (m_Waiting < 0.0f)
            {
                m_Waiting = 1.0f;
                m_VisualEffect.SendEvent(VisualEffectAsset.PlayEventID);
            }
        }
    }
}
```

```csharp
// The following example triggers multiple events during the same frame every second.
using UnityEngine;
using UnityEngine.VFX;

public class SendEventExample : MonoBehaviour
{
    public VisualEffect m_VisualEffect;
    private float m_Waiting = 1.0f;
    private int m_SpawnCountIdentifier;
    private int m_ColorIdentifier;
    private int m_EventNameIdentifier;

    private void Start()
    {
        m_SpawnCountIdentifier = Shader.PropertyToID("spawnCount");
        m_ColorIdentifier = Shader.PropertyToID("color");
        m_EventNameIdentifier = Shader.PropertyToID("direct");
    }

    private void Update()
    {
        if (m_VisualEffect)
        {
            m_Waiting -= Time.deltaTime;
            if (m_Waiting < 0.0f)
            {
                m_Waiting = 1.0f;
                var eventAttribute = m_VisualEffect.CreateVFXEventAttribute();
                // Red
                eventAttribute.SetFloat(m_SpawnCountIdentifier, 1);
                eventAttribute.SetVector3(m_ColorIdentifier, new Vector3(1, 0, 0));
                m_VisualEffect.SendEvent(m_EventNameIdentifier, eventAttribute);
                // Blue
                eventAttribute.SetFloat(m_SpawnCountIdentifier, 3);
                eventAttribute.SetVector3(m_ColorIdentifier, new Vector3(0, 0, 1));
                m_VisualEffect.SendEvent(m_EventNameIdentifier, eventAttribute);
                // Green
                eventAttribute.SetFloat(m_SpawnCountIdentifier, 2);
                eventAttribute.SetVector3(m_ColorIdentifier, new Vector3(0, 1, 0));
                m_VisualEffect.SendEvent(m_EventNameIdentifier, eventAttribute);
            }
        }
    }
}
```

## SendEvent(int)

Use this method to send a custom named event.

```csharp
public void SendEvent(int eventNameID)
```

### Parameters

**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): The ID of the event. This is the same ID that [Shader.PropertyToID](/engine/6000.6/script-reference/unityengine/shader/propertytoid.md) returns.

### Examples

```csharp
// The following example triggers the default visual effect play event once every second.
using UnityEngine;
using UnityEngine.VFX;
public class SendEventExample : MonoBehaviour
{
    public VisualEffect m_VisualEffect;
    private float m_Waiting = 1.0f;

    private void Update()
    {
        if (m_VisualEffect)
        {
            m_Waiting -= Time.deltaTime;
            if (m_Waiting < 0.0f)
            {
                m_Waiting = 1.0f;
                m_VisualEffect.SendEvent(VisualEffectAsset.PlayEventID);
            }
        }
    }
}
```

```csharp
// The following example triggers multiple events during the same frame every second.
using UnityEngine;
using UnityEngine.VFX;

public class SendEventExample : MonoBehaviour
{
    public VisualEffect m_VisualEffect;
    private float m_Waiting = 1.0f;
    private int m_SpawnCountIdentifier;
    private int m_ColorIdentifier;
    private int m_EventNameIdentifier;

    private void Start()
    {
        m_SpawnCountIdentifier = Shader.PropertyToID("spawnCount");
        m_ColorIdentifier = Shader.PropertyToID("color");
        m_EventNameIdentifier = Shader.PropertyToID("direct");
    }

    private void Update()
    {
        if (m_VisualEffect)
        {
            m_Waiting -= Time.deltaTime;
            if (m_Waiting < 0.0f)
            {
                m_Waiting = 1.0f;
                var eventAttribute = m_VisualEffect.CreateVFXEventAttribute();
                // Red
                eventAttribute.SetFloat(m_SpawnCountIdentifier, 1);
                eventAttribute.SetVector3(m_ColorIdentifier, new Vector3(1, 0, 0));
                m_VisualEffect.SendEvent(m_EventNameIdentifier, eventAttribute);
                // Blue
                eventAttribute.SetFloat(m_SpawnCountIdentifier, 3);
                eventAttribute.SetVector3(m_ColorIdentifier, new Vector3(0, 0, 1));
                m_VisualEffect.SendEvent(m_EventNameIdentifier, eventAttribute);
                // Green
                eventAttribute.SetFloat(m_SpawnCountIdentifier, 2);
                eventAttribute.SetVector3(m_ColorIdentifier, new Vector3(0, 1, 0));
                m_VisualEffect.SendEvent(m_EventNameIdentifier, eventAttribute);
            }
        }
    }
}
```

## SendEvent(string)

Use this method to send a custom named event.

```csharp
public void SendEvent(string eventName)
```

### Parameters

**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): The name of the event.

### Examples

```csharp
// The following example triggers the default visual effect play event once every second.
using UnityEngine;
using UnityEngine.VFX;
public class SendEventExample : MonoBehaviour
{
    public VisualEffect m_VisualEffect;
    private float m_Waiting = 1.0f;

    private void Update()
    {
        if (m_VisualEffect)
        {
            m_Waiting -= Time.deltaTime;
            if (m_Waiting < 0.0f)
            {
                m_Waiting = 1.0f;
                m_VisualEffect.SendEvent(VisualEffectAsset.PlayEventID);
            }
        }
    }
}
```

```csharp
// The following example triggers multiple events during the same frame every second.
using UnityEngine;
using UnityEngine.VFX;

public class SendEventExample : MonoBehaviour
{
    public VisualEffect m_VisualEffect;
    private float m_Waiting = 1.0f;
    private int m_SpawnCountIdentifier;
    private int m_ColorIdentifier;
    private int m_EventNameIdentifier;

    private void Start()
    {
        m_SpawnCountIdentifier = Shader.PropertyToID("spawnCount");
        m_ColorIdentifier = Shader.PropertyToID("color");
        m_EventNameIdentifier = Shader.PropertyToID("direct");
    }

    private void Update()
    {
        if (m_VisualEffect)
        {
            m_Waiting -= Time.deltaTime;
            if (m_Waiting < 0.0f)
            {
                m_Waiting = 1.0f;
                var eventAttribute = m_VisualEffect.CreateVFXEventAttribute();
                // Red
                eventAttribute.SetFloat(m_SpawnCountIdentifier, 1);
                eventAttribute.SetVector3(m_ColorIdentifier, new Vector3(1, 0, 0));
                m_VisualEffect.SendEvent(m_EventNameIdentifier, eventAttribute);
                // Blue
                eventAttribute.SetFloat(m_SpawnCountIdentifier, 3);
                eventAttribute.SetVector3(m_ColorIdentifier, new Vector3(0, 0, 1));
                m_VisualEffect.SendEvent(m_EventNameIdentifier, eventAttribute);
                // Green
                eventAttribute.SetFloat(m_SpawnCountIdentifier, 2);
                eventAttribute.SetVector3(m_ColorIdentifier, new Vector3(0, 1, 0));
                m_VisualEffect.SendEvent(m_EventNameIdentifier, eventAttribute);
            }
        }
    }
}
```
