【Unity】VFXEventAttributeとcustom spawner blockを使用してスクリプトの値をVFXGraph内で使用する

はじめに

スクリプトの値をVFXGraph内で使用する方法を紹介します

環境は Unity 2022.3.1です

コード

custom spawner block内にあるVFXSpawnerStateのvfxEventAttributeでSet○○を呼ぶことでCustoumAttributeの値をセットすることができます

パラメーター名は自由ですが今回がCustomAttributePosを使用します

using UnityEngine;
using UnityEngine.VFX;

public class TestBlock : VFXSpawnerCallbacks
{
    public class InputProperties
    {
        public Vector3 TestPos;
    }
    //公開した変数名のtPropertyIDを用意
    static private readonly int TestPropertyID = Shader.PropertyToID("TestPos");
    private Vector3 m_TestPos;

    public override void OnPlay(VFXSpawnerState state, VFXExpressionValues vfxValues, VisualEffect vfxComponent)
    {
    }
    public override void OnUpdate(VFXSpawnerState state, VFXExpressionValues vfxValues, VisualEffect vfxComponent)
    {
        m_TestPos = vfxValues.GetVector3(TestPropertyID);
        //VFXGraph内で使用するCustomAttributeの名前(自由)を使う
        state.vfxEventAttribute.SetVector3("CustomAttributePos", m_TestPos);
    }

    public override void OnStop(VFXSpawnerState state, VFXExpressionValues vfxValues, VisualEffect vfxComponent)
    {
    }
}

custom spawner blockの詳細はこちら

bravememo.hatenablog.com

VFXGraph側の設定

最初にカスタムブロックを設定します

次にGet Attribute : customを生成します

Attributeの設定を行います。LocationをSourceにして名前とTypeはスクリプトで指定したものと同じにします。

完成

custom spawner blockからAttributeの設定をすることができました