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

unity
スポンサーリンク
ラグ対策インターネット回線

こちらの記事はビルド後に動作しませんでした。書き直したので下記記事を参照ください!!

リンク先PCビルドでの動作確認済み!

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

参考サイト

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

↑この方には特に感謝

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

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

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

スクリプトがこちら↓

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Sample : MonoBehaviour
{
    Renderer rend;

    // Start is called before the first frame update
    void Start()
    {
        rend = GetComponent<Renderer>();
    }
                
    void Update()
    {
        if (rend != null)
        {
            for (int i = 0; i < rend.materials.Length; i++)
            {
                Material material = rend.materials[i];
                //下記コードでRendering Modeが変更できるが、なくても半透明になる。
                //material.SetFloat("_Mode", 2);
                material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha);
                material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
                material.SetInt("_ZWrite", 0);
                material.DisableKeyword("_ALPHATEST_ON");
                material.EnableKeyword("_ALPHABLEND_ON");
                material.DisableKeyword("_ALPHAPREMULTIPLY_ON");
                material.renderQueue = 3000;
                material.SetColor("_Color", new Color(1, 1, 1, 0.5f));
            }
        }
    }
}

いろんなサイトで、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
になっている模様。

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

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

PR
スポンサーリンク
安くて高性能おすすめゲーミングモニター
unity
ぽんたをフォローする
HB

コメント

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