Version: 2023.2
public void SendEvent (int eventNameID);
public void SendEvent (string eventName);
public void SendEvent (int eventNameID, VFX.VFXEventAttribute eventAttribute);
public void SendEvent (string eventName, VFX.VFXEventAttribute eventAttribute);

参数

eventName 事件名称。
eventNameID 事件的 ID。这与 Shader.PropertyToID 返回的 ID 相同。
eventAttribute 可以为 null 或 VFXEventAttribute。要创建 VFXEventAttribute,请使用 VisualEffect.CreateVFXEventAttribute

描述

使用此方法发送指定的自定义事件。

// 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); } } } }
// 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); } } } }