我希望能用貼圖的大小, 來決定場景的佈置, 攝影機的可視範圍 ... 等
在程式一起動時, 會先到 Resources 的資料夾, 將圖片 Load 進來, 使用下列語法 ...
gameObject.Find("bg").renderer.material.mainTexture = Resources.Load("texture");
但 ... 當我用下列語法想取得圖片的大小時 ...
var _width = gameObject.Find("bg").renderer.material.mainTexture.width;
var _height = gameObject.Find("bg").renderer.material.mainTexture.height;
得到的結果都 ... width , height 都是 1024
是否是我方法使用錯誤, 或是我疏忽哪裡的設定了?
原因很簡單,因為貼圖長寬必需為2的冪次方,因此當Unity載入貼圖時會自動將貼圖resize成最接近的2^n尺吋。
你的圖是1024x768,1024沒問題,但768的高度unity必需取決於要轉成1024或是512,最後unity的公式是轉為1024。
正常來說,uv貼圖都必需為2^n的正方型圖,但unity可以允許寬高不等,但還是都必需為2的冪次方尺寸,若不想讓unity自動縮圖減少失真,最好就是做貼圖時就直接做成2^n的正方型貼圖。
(有些引擎讀入非2^n正方型的貼圖連顯示都不能顯示,因為unity會自動幫使用者重設圖片所以才會讓人忘記這個原則)
若你今天圖不是要拿來做3d貼圖而是要拿來做GUI,必需將Texture Type設為GUI,如此一來就能保留原來的尺寸了。
沒有留言:
張貼留言
注意:只有此網誌的成員可以留言。