マテリアルからQueueによる描画順をいじるCustom Render Queueの使い方です。
Custom Render Queue?
Unityでは基本的にシェーダでRender Queueを指定します。
Tags { "Queue"="Geometry+1" }
これをマテリアルから上書きするのがCustom Render Queueです。
Custom Render Queueを設定すると、シェーダで指定したRender Queueは無視されてCustom Render Queueで指定した値が使われます。
設定方法
設定はマテリアルのこの部分をいじるだけです。
From Shaderとなっている部分をGeometryやAlphaTest、Transparentに変更できます。
直接数値を入力してもいいです。
From Shaderとなっている場合以外はCustom Render Queueが指定されている状態です。
ちなみにインスペクタをデバッグモードにすると、実際の変数の値が見れます。
これを見ると、Custom Render Queueが未指定(From Shader)の状態のときには変数に-1が入っていることがわかります。
Custom Render Queueが指定されている場合はその値が入っています。
スクリプトから制御する
Custom Render Queueはマテリアルを通してスクリプトから制御することもできます。
using UnityEngine; // UnityEngine.Renderingをusingすること using UnityEngine.Rendering; public class CustomRenderQueue : MonoBehaviour { private void Awake () { // MaterialのCustom Render Queueを書き換える処理 GetComponent<MeshRenderer>().material.renderQueue = (int)RenderQueue.Overlay; } }
renderQueueにはintを自由に代入できますが、RenderQueue列挙型に値が定義されているので基本的にはこれを使います。
前節で述べたように、-1を代入すればシェーダに設定されたQueueを使うようになります。