渋谷ほととぎす通信

新しいこと、枯れたこと問わずサムザップ大庭が興味を持ったものを調査、生活の効率を求める完全趣味の技術ブログ。基礎を大事にしています。※あくまで個人ブログであり所属組織とは関係ありません

【Unity】Visual Effect GraphのイベントIDはShader.ProperyToIDで取得する


f:id:esakun:20201026143350p:plain:w450 先日Visual Effect Graphのビルトインイベントについて記事を書きました。その関連記事です。

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

ShaderPropertyでID変換

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

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

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

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

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

以前執筆した内容ですが、文字列で渡す場合、最終的にIDを取得する処理が走ってしまうため、IDをキャッシュしておいた方が僅かにパフォーマンスは良くなります。

環境 

  • Unity2020.1.6f1
  • macOS Catalina 10.15.5
  • Visual Effect Graph 8.2.0