uGUIのImageにつけたマテリアルのプロパティにアクセスしたい。

寒くて家から出たくないので自粛生活が捗る。どうも、案山子です。ステイホームの才能に溢れています。

本日の主題。

Canvasの子であるImageにつけたマテリアルのプロパティにアクセスしてアニメーションしたい時はスクリプトでImageコンポーネントのmaterialを取得してどうにかする。

以上メモ終わり。

以下附(つけたり)なので上記でピンと来た場合はもう読まなくていいやつです。

経緯。
①Unityデザイナーズ・バイブル見ながらShaderGraphに触ってみた。

②Glitchエフェクトかっこいいなーと思って先達の知恵↑に与りながら作ってみた↓

③ところでマテリアルのプロパティをアニメーションさせたいのだがアクセスする方法がわからん。

ShaderGraphでノード(これ)をプロパティ化する(こうなって)とインスペクタからアクセス出来る(こう)ようになるのだが、

これがこうなってこう

Canvasの子Imageにつけたマテリアルのプロパティの値をどうにかしてアニメーションさせたい。しかしAnimationからはマテリアルのプロパティにアクセス出来ない※ので、スクリプトでどうにかするしかなさそう。

※Canvasの子でないオブジェクトやスプライトの場合はAnimationからマテリアルのプロパティにすんなりアクセス可能です。なんでやuGUI。なんとかRendererとかいうのがいないからか???そうなのか???

解決。
ぐぐりまくった結果Material型の変数を用意してImageコンポーネントのmaterialを代入すればいける???
コンソールに赤いエラーが出なくなったのでいけそうだ!!!

スクリーンショット 2021-02-19 16.22.00

マテリアルからプロパティのリファレンスに書いた名前(今回の場合は"_Glitch_EF")で値をどうこうするぽい。

アクセスしたいプロパティはVector1でfloat(浮動小数点型)なのでSetFloatで初期値をセット。あとはDOTweenにマテリアル用のショートカットが用意されているのでそれでなんやかんやと動かしてみた結果がこちら↓

Glitchエフェクトがかかったり消えたり出来たよ!!!
ちなみに画像は大葉ソースのタルタルチキン定食です。おいしかったです。


この記事が気に入ったらサポートをしてみませんか?