UGUI高階元件 九 Mask

2021-10-01 18:46:08 字數 894 閱讀 8399

mask元件是比較常用的元件之一

可以使用mask去限制渲染3d的rawimage的形狀

官網的下面有mask的實現原理,有點像shader裡面的部分

mask的主要作用是根據提供的對mask所掛物體的子物體進行畫素的遮擋

如果有提供,則如果子物體部分與的有畫素部分有些地方沒重疊的話,這個沒重疊的地方會顯示提供

有些部落格說mask可以用於3d物體 ,這個還沒親自嘗試

mask一般和image元件掛在同乙個物體上 由image提供

如果沒有提供 則mask會只顯示它所掛物體的邊界rect部分與子物體的重疊部分

提供的有畫素的部分與子物體的的重合部分會顯示圖形

透明的部分以及有畫素但是與子不重合即空餘部分會不顯示圖形

mask可以提供任意形狀的遮罩,比如三角形圓形五角星形,只要提供給他的正確並且子的重合部分正確

如果發現提供的透明部分對於子物體還是有遮擋 則這張的一這部分透明部分不是全透明,需要美工再做處理

但是,mask有一些缺點

比如一張圖本來是乙個drawcall的

mask使用後mask顯示的部分生成乙個drawcall 因為mask隱藏的一部分會生成乙個drawcall

unity有個機制是在同乙個圖集裡面的所有使用的合批成乙個drawcall,但是在這基礎上 每次使用mask都會生成乙個額外的drawcall,就是說如果我使用了六個mask,則會由7個drawcall,除了六個是mask生成的外,還有乙個是合批後的

對於這些缺點unity本身也給出了一些替代方案,

Unity之UGUI的學習(四) Mask(遮罩)

mask 遮罩 是一種不可見的ui元件,它可以用來修改子物體的外觀。遮罩將子物體限制為父物體的形狀。如果子物體大於父物體將只顯示和父物體大小相同的那一部分。如上圖所示,在父物體image中新增子物體image,父物體image上新增元件mask,可以發現子物體image本來是大於父物體image的,...

UGUI 修改元件節點位置

最近的工作任務是實現模態對話方塊,模態對話方塊彈出後要顯示在最前面,為了實現這個效果,我從網上找到了解決辦法 通過setsiblingindex 和 getsiblingindex設定與獲取 gameobject在兄弟節點中的位置。我覺得getsiblingindex返回就是兄弟節點對應的編號,這個...

UGUI學習筆記之Scrollbar元件

scrollbar 滾動條 元件屬性介紹 由於slider元件前面屬性和button 元件一樣,就不再贅述了 屬性 說明 handle rect 滑塊direction 滑動方向 value 當前值 0 1 size 滑塊大小,佔其父物體sliding area的比例 number of steps...