Unityでオブジェクトを半透明(透明)にする。

unity
スポンサーリンク
管理人も利用している最速インターネット回線はいかが?

インスペクターからRendering Modeを変更して、半透明(透明)にする方法は出てくるのですが、プレイモード中に動的に半透明にする方法でめっちゃハマったので、シェアしたいと思います。

参考サイト

標準シェーダーのレンダリングモードをスクリプトから切り替える
https://tyfkda.github.io/blog/2018/08/29/unity-render-mode.html

↑この方には特に感謝

上記サイトでシェーダーの型を指定しないと変わらないということを知りました。

んで出来たものがこんな感じ↓

動的にインスタンスしたオブジェクトが半透明に…

スクリプトがこちら↓

いろんなサイトで、material.SetOverrideTagを使えばできるみたいなこと書いてあったんですが、必要なかったです。

んで、アセットを使用する場合、複数materialがアタッチされている場合があったので、for使ってます。必要ないなら消してね。

MeshRendereやSkinnMeshRendererもRendererだけ取得すれば動いた。(継承しているみたい)

最初、インスペクターでRengering Modeを変更して半透明にできるんなら、動的にRengering Modeを変更して半透明できると思ってたんですが、Rengering Modeを変更して、透明度を変更しても意味なかった。。

ちなみに、material.SetFloat(“_Mode”, 2)の数字部分は
0=Opaque
1=Cutout
2=Fade
3=Transparent
になっている模様。

これで、マイクラみたいにオブジェクトを生成する場合の、設置先に半透明サンプル的なやつができた。

生成位置や角度は要調整だが…

コメント

タイトルとURLをコピーしました