UGUI粒子遮罩(UI Mask 遮擋粒子)

2021-10-07 15:15:05 字數 2287 閱讀 1049

在unity中ugui的mask遮罩無法對partice system(粒子)起到直接的作用,於是這裡我們使用shader來實現ui mask對粒子的遮罩效果。關於粒子顯示在同一層兩個不同ui之間疊加的問題:

// upgrade note: replaced 'mul(unity_matrix_mvp,*)' with 'unityobjecttoclippos(*)'

shader "ui/maskdefault"

_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

} subshader

cull

offlighting

offzwrite

off ztest [unity_guiztestmode]

blend

srcalpha

oneminussrcalpha

colormask

0 stencil

pass ;

struct v2f

;fixed4 _color;

fixed4 _texturesampleadd;

float4 _cliprect;

v2f vert

sampler2d _maintex;

fixed4 frag

(v2f in)

: sv_target

endcg}}}

而對於粒子這方面我們將離子的shader替換成particles/maskadditive,這裡給出shader原始碼:

// upgrade note: replaced 'mul(unity_matrix_mvp,*)' with 'unityobjecttoclippos(*)'

shader "particles/maskadditive"

_invfade (

"soft particles factor"

,range

(0.01

,3.0))

=1.0

}category

blend

srcalpha

onecolormask

rgbcull

offlighting

offzwrite

off

subshader

pass

;struct v2f

;

float4 _maintex_st;

sampler2d_float _cameradepthtexture;

float _invfade;

fixed4 frag (v2f i)

: sv_target

endcg

}}}}

我們將粒子放在mask下則可以實現遮罩的效果

我們建立乙個scrollview,viewport上的image的shader替換成上面的maskdefault,這裡不知道怎麼替換的直接找到maskdefault這個shader,右鍵直接建立個材質球然後賦值給image就可以了

而對於我們所使用的粒子替換成maskadditive即可

js實現遮布效果

開發過程常遇到在匯入資料或者需要頁面跳轉的時,希望有乙個提示效果。用的地方多了,就整理了乙個,或許你也需要哦 var m mask var id pop 給提示對話方塊設定大小 var newdivheight 20 function show info 判斷div是否已經建立 var docele...

Cesium粒子系統 火焰粒子 噴水粒子

cesium中可以使用粒子系統來實現現實生活中的一些效果,比如噴泉 火焰等效果。通過cesium自帶的粒子系統實現 火焰粒子標繪類 import particleplotbase from plotbase import plottypes from plottypes export default...

UGUI基本控制項

text控制項 我們在hierarchy介面下,單擊右鍵我們可以找到ui的選項,選擇text元件,或者在component欄下也可以找到ui,選擇text元件。這時,我們將會看到下面的內容 canvas在前面已經有介紹了。text就是我們建立的元件用來顯示文字,eventsystem是事件系統,它的...