VR中UGUI在最上層顯示的解決方案

該方案參考了CSDN

創建一個Shader,代碼如下:

// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'

//需要賦給場景,專門用于解決UI置頂問題

Shader "UI/Overlay"

{

Properties

{

[PerRendererData] _MainTex ("Font Texture", 2D) = "white" {}

_Color("Tint", Color) = (1,1,1,1)

_StencilComp ("Stencil Comparison", Float) = 8

_Stencil ("Stencil ID", Float) = 0

_StencilOp ("Stencil Operation", Float) = 0

_StencilWriteMask ("Stencil Write Mask", Float) = 255

_StencilReadMask ("Stencil Read Mask", Float) = 255

_ColorMask ("Color Mask", Float) = 15

}

SubShader

{

LOD 100

Tags

{

"Queue" = "Transparent"

"IgnoreProjector" = "True"

"RenderType" = "Transparent"

"PreviewType"="Plane"

"CanUseSpriteAtlas" = "True"

}

Stencil

{

Ref [_Stencil]

Comp [_StencilComp]

Pass [_StencilOp]

ReadMask [_StencilReadMask]

WriteMask [_StencilWriteMask]

}

Cull Off

Lighting Off

ZWrite Off

ZTest Always

Offset -1, -1

Blend SrcAlpha OneMinusSrcAlpha

ColorMask [_ColorMask]

Pass

{

CGPROGRAM

#pragma vertex vert

#pragma fragment frag

#include "UnityCG.cginc"

#include "UnityUI.cginc"

struct appdata_t

{

float4 vertex : POSITION;

float2 texcoord : TEXCOORD0;

float4 color : COLOR;

};

struct v2f

{

float4 vertex : SV_POSITION;

half2 texcoord : TEXCOORD0;

fixed4 color : COLOR;

};

sampler2D _MainTex;

float4 _MainTex_ST;

fixed4 _Color;

fixed4 _TextureSampleAdd;

v2f vert (appdata_t v)

{

v2f o;

o.vertex = UnityObjectToClipPos(v.vertex);

o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);

o.color = v.color * _Color;

#ifdef UNITY_HALF_TEXEL_OFFSET

o.vertex.xy += (_ScreenParams.zw-1.0)*float2(-1,1);

#endif

return o;

}

fixed4 frag (v2f i) : SV_Target

{

fixed4 col = (tex2D(_MainTex, i.texcoord) + _TextureSampleAdd) * i.color;

clip (col.a - 0.01);

return col;

}

ENDCG

}

}

}


此時Shader沒有指定材質,接下來創建一個材質Matierial:

然后,將Shader直接拖拽到這個材質上,拖拽后狀態如圖所示:

這時這個材質就可以使用了,這里是最關鍵的一步。

注意:這個材質需要賦給的是所有要顯示在這個Canvas下的模型,而不是Canvas里的image,如圖:

這里很多CSDN文章中沒有說清楚,對初學者十分不友好

到此為止,我們就已經實現了這一需求,可以進行調試了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容