Unity3D開發(四) NGUI紋理九宮格拉伸

2021-08-27 15:06:37 字數 876 閱讀 5477

不論是遊戲中的ui,還是應用中的ui,紋理九宮格拉伸都是必不可少的,因為採用這種拉伸方式,可以最大化的節省紋理資源,還能保證良好的表現效果!

把紋理用4條線分割成9部分(如上圖),通過觀察可以發現,5是最規則的形狀(矩形),其次是2,6,8,4(矩形,但是和四個角有公共邊),最後是四個角1,3,9,7(圓角矩形)

規則的圖形在拉伸之後的效果是比較好的,如果是不規則的圖形,則會在拉伸之後變形!

根據上圖做拉伸制定規則:

在uisprite中,對於不同型別有不同填充shader定點的方法,參照uisprite.onfill()

public override void onfill (betterlistverts, betterlistuvs, betterlistcols)

}

基本的sprite是乙個矩形紋理,即兩個三角形,4個頂點,參照

protected void ******fill (betterlistverts, betterlistuvs, betterlistcols)
九宮格拉伸的sprite相當於9個矩形紋理拼合而成,並且有部分矩形做拉伸操作,根據shader渲染三角形,需要傳4x9=36個頂點,參照

protected void slicedfill (betterlistverts, betterlistuvs, betterlistcols)

unity3D遊戲開發十七之NGUI四

接下來我們講解下uigrid,uigrid是用來輕鬆的排列眾多widget到固定大小格仔的指令碼。編輯時和執行時都可以使用。如果想使用可變的格仔單元大小,你可以使用uitable,屬性如下圖 arrangement的值決定了子節點的擺放位置。horizonta讓子節點向右排列,vertical向下排...

Unity3D開發之NGUI點選事件穿透響應處理

2013年03月19日 綜合 共 300字 字型大小 小中大 在使用ngui 開發2d專案的時候,發現了乙個問題,就是如果點出乙個選單,然後點選選單上面的按鈕的時候就會使得按鈕下面的物品也會觸發點選事件 如果有的話 和 然後,在ngui的uicamera的指令碼那裡,設定它的事件響應 這樣的話,他就...

Unity3D開發之NGUI結合粒子系統的遮擋問題

我的是ngui3.0.3版本,在加入粒子系統的時候發現一直都是在精靈的下面,所以必須要解決這個問題。問題的出現是因為ngui和粒子系統的渲染佇列問題,那我們自己就可以新建乙個屬於粒子系統的shader,然後直接複製原來系統自帶的那個shader的 修改 裡面的 queue transparent 為...