こんにちは、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をキャッシュしておいた方が僅かにパフォーマンスは良くなります。
この記事が気に入ったらフォローしよう
オススメ記事
検証環境
- Unity2020.1.6f1
- macOS Catalina 10.15.5
- Visual Effect Graph 8.2.0