2012-07-19 85 views
0

我正在Unity3d中編寫3D iOS遊戲,並且找不到關於爲不同設備包含不同紋理大小的完整且直接的答案。首先,我假設一個真正通用的應用程序將需要每個紋理的3個版本......(非視網膜iPhone/iPod的低分辨率,視網膜的低分辨率iPhone/iPod和非視網膜iPad ,現在是iPad的4倍水平)我也假設基於蘋果定義的命名約定,下載一個應用程序到特定的設備將只下載適當的紋理。否則,將所有三種分辨率下載到老的非視網膜電話將包含95%的載重量。在通用iOS應用程序中打包多個分辨率

Apple文檔鏈接指出在視網膜設備的紋理文件名以及適用於設備的「〜ipad」或「〜iphone」中使用「@ 2x」。

https://developer.apple.com/library/ios/documentation/2DDrawing/Conceptual/DrawingPrintingiOS/SupportingHiResScreens/SupportingHiResScreens.html#//apple_ref/doc/uid/TP40010156-CH15-SW8

假設1024×1024低資源地圖集文件,並按照上面的命名規則,我們現在不得不包括每個圖像的四個文件,但其中的兩個文件是相同的除了文件名?

如:

(1024 x 1024) myAtlas~iphone.png 
(2048 x 2048) [email protected]~iphone.png 
(2048 x 2048) myAtlas~ipad.png 
(4096 x 4096) [email protected]~ipad.png 

這是正確的嗎?

我想我的困惑源於能夠輕鬆使用相同的紋理分辨率爲非視網膜iPad和視網膜iPhone/iPods,因爲屏幕分辨率是相當相似的,但蘋果建議的命名約定似乎並沒有利用那個。

這將是我在iOS上首次發佈的應用程序,也許我完全錯過了一些觀點?或者也許我的一些假設是錯誤的?

回答

1
  1. 是的,命名約定不提供iPhone視網膜和iPad非視網膜共享圖像的方式。

  2. 命名約定只適用於UIImage類和相關的API。雖然你可以UIImage/CGImage加載OpenGL ES紋理,絕不是你需要的。無論您想要什麼,請命名您的文件,使用類(或相應的GL API)來確定屏幕大小,並使用NSBundle類自己找到合適的紋理文件。 (有關使用PVR紋理文件的一些示例,請參閱Apple示例代碼網站。)

  3. 恐怕您關於下載到設備的內容的假設是錯誤的。您提交給App Store的.ipa捆綁包可以無縫下載到用戶安裝的任何設備上 - 如果您提交的通用應用程序包含四種不同設備分辨率的資源,則它將與設備上的全部四組資源一起安裝,甚至儘管三個未使用。

+0

謝謝rickerster,我開始害怕,可能是這種情況。所以,鑑於Unity可以自動生成一些紋理的mipmap,我真的沒有理由包含除最高分辨率以外的任何其他紋理。這似乎對我來說非常直觀,迫使低端設備承擔額外的重量。 – Adam 2012-07-19 11:29:04

相關問題