Unity5.x 使用GUI Texture 載入圖片後顯示太大的,使用PixelInsert也無法修正的原因

Unity5.x 使用GUI Texture 載入圖片後顯示太大的,使用PixelInsert也無法修正的原因

 

目的:使用GUITexture載入一個圖片到遊戲界面上.

首先,在Unity5.x上,已經無法直接在GameObject菜單欄中找到GameObject->CreateOther->GUITexture這麼一個現成的UI對象。

需要先CreateEmpty,然後點擊Component->Rendering->GUI Texture,這樣的方式來創建。

然後,我創建後發現了這麼一個問題:

我的圖像本來大小是128*128


載入後,如下圖:


就變成了這麼大,然後我就開始檢查GUITexture的組件屬性:


,我一看Pixel Insert裏邊也沒有錯啊。沒錯位置是0,0;大小是:128,128

然後我注意到了下面這個Transform基本屬性:


經過研究,問題就出在Scale上。

首先,至少Transform在對象作爲一個GUI時的含義,是與普通的物件有區別的。於是我就將Scale全改爲了0,效果如下:


現在就是正兒八經的128*128像素了,pixelInsertwh就正確地起作用了。爲什麼Scale必須是0

我分析是因爲Scale一旦不爲0,那麼當前這個對象就會進行縮放,縮放之後自然wh就顯得不準了。

然後,TransformPosition的含義也有所改變,不再是用的三維世界的度量單位米,而是變成了比例。比如x=0.5,y=0.5,就意味着,把GUITexture放在屏幕中間嘍。

當然,你如果把postion設置爲0,0,0,單純用pixelInsertx/y去調整GUITexture的位置也可以,比如左上角的GUITexture我可以設置x/y爲(10, 200),如下圖


缺點的就是,如果整個遊戲界面的大小變化了,那麼你的GUITexture還會在從左上角向上160像素的位置,也就不一定是最上方那個位置了,這樣界面就亂套了。

也就是我,我認爲,在對象爲GUITextureTransform.position相當於C#/java中的錨點。

如果我想把圖片放在左上角,我會這樣設置:


這樣,不管界面大小怎麼變,我的圖片永遠都在最上方向下130個像素的地方。

所以,通過position皆可以靈活的設置圖片大致方位,然後通過pixelinsertx/y設置微調位置,通過pixelinsertw/h設置圖片像素大小。就都剛剛好。

 

補充說明一點,上述關於Scale設置爲0的方法是有理論依據的,請看鏈接http://www.ceeger.com/Components/class-GuiTexture.html

To use it effectively, you need to set the scale of the GUI Texture's Transform to (0, 0, 0). Now, the Pixel Inset is in full control of the texture's size and you can set the Pixel Inset values to be the exact pixel size of your Texture.

爲了有效地使用它(PixelInsert),你需要設定GUI紋理變換屬性(Transform)裏的大小(scale)設置爲(0,0,0)。現在,像素嵌入是完全控制紋理的大小,你可以設置你的像素嵌入值爲你的紋理確切的像素大小。


發佈了61 篇原創文章 · 獲贊 34 · 訪問量 35萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章