Unityでゲーム開発をしていると、ガラスや水、フェード演出など「透明・半透明な表現」を使いたいシーンは多くあります。特に URP(Universal Render Pipeline) を利用している場合は、従来の Standard Shader とは設定方法が少し異なるため注意が必要です。
この記事では URPと従来の標準シェーダーで透明にする方法について解説しました。

また、一部透明なテクスチャ画像をオブジェクトに貼り付けると黒くなってしまう対処法についても紹介します。
Unity version
本記事でURPプロジェクトのUnity versionは、6000.0.31f1 です。
URPでマテリアルを透明にする方法
実際に「ガラスのような半透明マテリアル」を作る流れを見てみましょう。
手順
マテリアルを作成
Projectウィンドウ → 右クリック → Create → Material

Shaderが Universal Render Pipeline/Lit に設定されていることを確認します。

Surface TypeをTransparentに変更
Inspectorで「Surface Options」を開き、Surface Type = Transparent を選択
Blending ModeをAlphaに設定します。

Base Map(Albedo)の透明度を調整
Base Mapの色の部分をクリックし、カラーのA値(アルファ値)を 0.0~1.0 で設定します。(例:0.5で半透明)


これでマテリアルが透明になりました。

Smoothnessで光沢感を調整
光沢感を出したい場合は Smoothness を高めに設定します。

完全に透明にするには、Preserve Specular Lightingのチェックを外します。これで透明にすると、全く何も見えなくなります。

Reflection Probeを使うことで、さらに自然な見た目にすることができます。
従来の標準シェーダーでマテリアルを透明にする方法
マテリアルを透明にするのは、2ステップでできます。
- マテリアルのインスペクターを開き、Rendering ModeをFadeに変更
- Albedoのアルファ値を変更

とっても簡単!
Rendering ModeをFadeにし、Albedoの色の部分をクリックします。

Alphaの値を変化させることで、オブジェクトを透明・半透明にすることができます。

FadeとTransparentの違い
ちなみに、Rendering ModeをFadeではなく、Transparentにしても透明になりますが、Transparentは光の反射や照明の影響を受けるので、完全な透明にはなりません。
ガラスやプラスチックなどを表現するのに使われるようです。
Alpha値を0にしても、うっすら見えています。

一方、Fadeは、反射・照明の影響を受けないので、完全に透明にさせることができます。
アルファ値を0にすると全く見えなくなります。

マテリアルの一部を透明にするには?
マテリアルに貼られたテクスチャの一部が透明になっている場合、その部分だけを透明にすることができます。
テクスチャの用意
今回は、透明度を上から、100%、80%、60%、40%、20%、0%と段階的に変えたpng画像を用意しました。

png画像をUnityにドラッグ&ドロップで取り込むと、透明度が正しく表示されておらず、透明度0%のところは真っ黒になっています。

直すには、インスペクターからAlpha Is Transparencyにチェックを入れ、Applyをクリックします。

ただ、これをしなくてもマテリアルに貼り付けた時に正しく透明になるので、気になる人だけやっておきましょう。
マテリアルの設定
png画像をAlbedoにドラッグ&ドロップして、テクスチャを設定します。

できました!

先ほどと同様に、AlbedoのAlpha値を変更することで、全体の透明度も調整可能です。
もう一つの設定方法
マテリアルのシェーダー設定を、Legacy Shaders/Transparent/Diffuseに設定することでもできるようです。もしStandardシェーダーでダメなら、こちらを試してみましょう。
テクスチャ画像もドラッグ&ドロップで設定します。

できました!

おわりに
オブジェクトの透明度を調整する方法の解説でした!
ノーコードでインスペクターから設定できるので、やってみると簡単にできました。