こんにちは、Unityエンジニアのオオバです。

【Unity】Visual Effect Graphのデフォルトで定義されているイベント
先日Visual Effect Graphのビルトインイベントについて記事を書きました。その関連記事です。

SendEventメソッドはオーバーロードで引数をint型も受け付けます。
int型で渡す場合、文字列のイベントをint型に変換する必要があります。

👉DOTweenの教科書を読んでUnityアニメーションをプログラミングしてみよう!

ShaderPropertyでID変換

GetVFXGraphId.cs · GitHub
このようにイベントIDはShader.PropertyToIDで取得し、そのIDを使ってイベントを送信できます。

OnPlay、OnStopのイベントIDはデフォルトで定義済み

VisualEffectAssetPart2.cs · GitHub

VisualEffectAsset.csを見てもらえれば分かりますが、OnPlay、OnStopイベントはVisual Effect Graph側で定義済みです。

VFXGraphPlayEventSample.cs · GitHub

上記3種は同じ結果になります。

IDを使ったほうが僅かにパフォーマンス良い

シェーダープロパティアクセスが2.5倍早くなるPropertyToID関数
以前執筆した内容ですが、文字列で渡す場合、最終的にIDを取得する処理が走ってしまうため、IDをキャッシュしておいた方が僅かにパフォーマンスは良くなります。

オススメ記事
検証環境