Posted on 2013-10-15 14:15
點(diǎn)點(diǎn)滴滴 閱讀(504)
評論(0) 編輯 收藏 引用 所屬分類:
02 編程語言
屏幕自適應(yīng)
NGUI可以比較方便的實(shí)現(xiàn)屏幕自適應(yīng),但是它的官方教程里面針對這個問題沒有詳細(xì)的教程,所以可能在實(shí)現(xiàn)的時候會走比較多的彎路。以下是我在開發(fā)過程中找到的一個比較方便的實(shí)現(xiàn)方法。
主要組件
1. UIAnchor
這個是用來確定控件在屏幕中的位置,另外有一篇教程專門講它的功能,所有不會再贅述
2. UIStretch
這個是用來做縮放的組件。老版本的NGUI是集成在UIAnchor上的。新版本的UIStretch提供了4種縮放方式:
Horizontal:只縮放水平方向
Vertical:只縮放垂直方向
Bose:縮放兩個方向
BasedOnHeight
:基于高度等比縮放
然后基于這些我自己實(shí)現(xiàn)了一個
BasedOnWidth
:基于寬度等比縮放
代碼如下:
- else if(style == Style.BasedOnWidth)
- {
- localScale.x = relativeSize.x * screenWidth;
- localScale.y = relativeSize.y * screenWidth;
- localScale.z = localScale.x;
- }
這段代碼添加在Update方法里面。為了能將UIStretch掛在UIPanel上面不出問題,所有將Z軸也縮放了。
自適應(yīng)流程
1. 創(chuàng)建一個新的UI,將Anchor里面的UIAnchor調(diào)整的合適的位置,注意最好將Anchor設(shè)置為Bottom。
2. 將Camera的Size
調(diào)節(jié)到默認(rèn)屏幕大小。比如UI是以960*640分辨率制作的,那么將Camera的Size
調(diào)整到960。
3. 在Panel上面添加一個UIStretch,模式選擇BasedOnWidth
。完成之后你可以看到你的Panel的Scale
被修改到了當(dāng)前屏幕的X方向分辨率大小。
4. 將UI控件添加到Panel上,調(diào)整位置,在Panel下的所有控件都會以X方向?yàn)闃?biāo)準(zhǔn)做等比縮放來適應(yīng)屏幕大小。
5. 添加一張作為背景的圖,將UISprite的anchor設(shè)置為Bottom,添加之后你可以看到這個sprite可以在不同的分辨率下自適應(yīng)了。
6. 以上一步添加的背景圖作為參照物來擺放頁面上的控件,這樣不僅僅是大小,位置也同樣會按照相同的模式進(jìn)行等比縮放
7. 可以在第3步創(chuàng)建的Panel下面添加子Panel,子Panel不需要UIStretch(一般用來做Draggable Panel,否則沒必要,會增加額外的Draw Call)
8. 如果某一些控件需要定位在屏幕上下左右中的某一角,可以單獨(dú)給他添加一個UIAnchor,這個時候UIStretch只會縮放這個控件的大小,它的位置由他自己的UIAnchor控制了