中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

【unity實用技能】NGUI圖片鏡像

發布時間:2020-02-29 20:19:06 來源:網絡 閱讀:4233 作者:xiaosongfang 欄目:游戲開發

NGUI做UI的話,有個功能很常用,比如:
【unity實用技能】NGUI圖片鏡像

這樣的一個界面,如果大圖的話一個圖集都放不下幾張,這時為了省資源,美術會把這個圖切9宮。
不過這樣依然很大,這時就會提出,如果這個圖是左右相同的話,左右只出一半,另一半程序自己拼,上下相同只切上面,下面程序拼,上下左右相同的話出左上角,其余自己拼。
像這個就會這么出圖
【unity實用技能】NGUI圖片鏡像
只出了左邊。

自己拼不僅蛋疼,更重要的是拼出來的界面會有黑邊,并且在適配不同界面的時候黑邊總是會跑出來。
這時一般項目組就會拓展一下NGUI的UISprite,做一個鏡像功能,直接填充出來右邊。
像這樣:
【unity實用技能】NGUI圖片鏡像
通過選擇MirrowType來覺得是左右填充還是上下填充還是上下左右填充。

怎么實現呢,這里有點復雜,而且每個NGUI版本都不太一樣,這里講講大概就直接發代碼

1.首先是改Inspector文件(其實這個應該放最后)
【unity實用技能】NGUI圖片鏡像
加一個鏡像選擇框
2.再在UIBasicSprite.cs上加上對應的屬性
【unity實用技能】NGUI圖片鏡像

3.接下來在UISprite.cs上改,現在OnFill里加上鏡像邏輯,太長,截一部分:
【unity實用技能】NGUI圖片鏡像
這里的邏輯就是根據你選擇的鏡像模式,比如左右的話,就計算兩次uv信息,畫兩個UIRect,這里要拓展一下NGUIMath.cs的邏輯。就是加上計算鏡像的部分(這里自己看代碼,不做解釋了)

4.最后還是在UISprite.cs上改,在SImpleFill和SlicedFill上加上鏡像的邏輯,以SimpleFill舉例:
【unity實用技能】NGUI圖片鏡像
【unity實用技能】NGUI圖片鏡像
其實這里的邏輯就是如果是橫向鏡像,計算左邊的頂點數據、uv數據、顏色數據,保存,再計算右邊的頂點、uv數據、顏色數據,保存。其他按照這個邏輯類推

5.最后通過UIWidget自身的UpdateGeometry刷新ui

最后有一點要注意的是,這樣子的拼接有可能會有黑邊,但是可以通過減少uv采樣的一兩個像素來規避這個問題
【unity實用技能】NGUI圖片鏡像

最后奉上demo
https://pan.baidu.com/s/1kRaBY2C85ftXS0_JPe_M-w

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

上栗县| 剑川县| 响水县| 拜城县| 许昌市| 永胜县| 固安县| 南丹县| 当涂县| 新民市| 安新县| 商水县| 昌图县| 仲巴县| 花莲县| 江西省| 潮州市| 县级市| 安福县| 临高县| 深水埗区| 临澧县| 南郑县| 安多县| 灵璧县| 静乐县| 泾阳县| 翼城县| 喀喇| 岳阳县| 岢岚县| 尼玛县| 德惠市| 玉龙| 江达县| 庆云县| 新泰市| 天镇县| 中西区| 上杭县| 丹巴县|