作用讓UI在指定矩形範圍顯示 超過範圍透明

2021-10-02 02:06:40 字數 1593 閱讀 4264

shader "ui/default-cliprect"

_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

[toggle(unity_ui_alphaclip)] _useuialphaclip ("use alpha clip", float) = 0

//處理mask無法遮住增加canvas的ui

//作用讓ui在指定矩形範圍顯示 超過範圍透明 類似 mask 區別在於mask下面的ui如果加了canvas就遮不住

_x1("x1", float) = 0 //相對canvas的最小x座標 世界

_x2("x2", float) = 0 //相對canvas的最大x座標 世界

_y1("y1", float) = 0 //相對canvas的最小y座標 世界

_y2("y2", float) = 0 //相對canvas的最大y座標世界

}subshader

stencil

cull off

lighting off

zwrite off

ztest [unity_guiztestmode]

blend srcalpha oneminussrcalpha

colormask [_colormask]

pass

;struct v2f

;sampler2d _maintex;

fixed4 _color;

fixed4 _texturesampleadd;

float4 _cliprect;

float4 _maintex_st;

float _x1;

float _x2;

float _y1;

float _y2;

fixed4 frag(v2f in) : sv_target

if(_x2 - in.worldposition.x < 0)

if(in.worldposition.y -_y1 < 0)

if(_y2 - in.worldposition.y < 0)

#ifdef unity_ui_clip_rect

color.a *= unityget2dclipping(in.worldposition.xy, _cliprect);

#endif

#ifdef unity_ui_alphaclip

clip (color.a - 0.001);

#endif

return color;

}endcg

}}}

如何真正掌握UI設計技巧 怎麼讓UI介面更精緻

如何真正掌握ui設計技巧?怎麼讓ui介面更精緻?ui設計是近年來新興的熱門行業,伴隨著使用者體驗度的提公升,ui設計師迅速得到企業的重視。讓介面更精緻 層次分明是每乙個ui設計工作的基本目標,接下來就給大家分享ui設計中的幾個技巧,讓你的介面更精緻。1 顏色 在一套設計規範裡往往會給出乙個品牌色 幾...

在UI上使用BackgroundWorker

凡是winform的應用程式,如果他執行了乙個的非常冗長的處理操作 比如檔案查詢 它在執行時會鎖定使用者介面,雖然主活動視窗一直在執行,但使用者無法與程式互動,無法移動窗體或改變窗體大小,所以使用者感覺很不爽。如何做才能使得這個程式有響應。答案就是在後台執行緒中執行這個操作。在這裡已經有了多種方法來...

粒子顯示在UI前方

canvas的render mode的三種模式比較 canvas元件中的render mode 1.screen space overlay 此模式不需要ui攝像機,ui將永遠出現在所有攝像機的最前面 ui置頂 2.screen space camera 它需要提供乙個uicamera 這樣就和ng...