0

Unity3dで3DiOSゲームを書いていますが、デバイスごとに異なるテクスチャサイズを含めることについての完全で直接的な答えを見つけることができません。

まず、真にユニバーサルなアプリには各テクスチャの3つのバージョンが必要であると想定しています...(非Retina iPhone / iPodの場合は低解像度、Retina iPhone /iPodおよび非RetinaiPadの場合は2倍、現在は4倍res for retina iPad)また、アップルが定義した命名規則に基づいて、特定のデバイスにアプリをダウンロードすると、適切なテクスチャのみがダウンロードされると想定しています。そうしないと、3つの解像度すべてを古い非網膜電話にダウンロードすると、95%の載貨重量が含まれることになります。

リンクされているAppleのドキュメントには、網膜デバイスのテクスチャファイル名に「@ 2x」を使用し、デバイスに応じて「〜ipad」または「〜iphone」を使用するように記載されています。

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

1024x1024の低解像度アトラスファイルを想定し、上記の命名規則に従って、画像ごとに4つのファイルを含める必要がありますが、これらのファイルのうち2つはファイル名を除いて同一ですか?

例えば:

(1024 x 1024) myAtlas~iphone.png
(2048 x 2048) myAtlas@2x~iphone.png 
(2048 x 2048) myAtlas~ipad.png 
(4096 x 4096) myAtlas@2x~ipad.png 

これは正しいです?

画面の解像度はかなり似ているので、私の混乱は、非網膜iPadと網膜iPhone / iPodの両方で同じテクスチャ解像度を簡単に使用できることに起因していると思いますが、Appleが提案する命名規則はそれを利用していないようです。

これはiOSで最初に公開されたアプリになりますが、ある点を完全に見逃しているのではないでしょうか。または多分私の仮定のいくつかは間違っていますか?

4

1 に答える 1

1
  1. はい、命名規則は、iPhone網膜とiPad非網膜が画像を共有する方法を提供していません。

  2. 命名規則は、UIImageクラスと関連するAPIにのみ適用されます。/からOpenGLESテクスチャをロードできますが、必ずしもロードする必要はありません。ファイルに任意の名前を付け、クラス(または対応するGL API)を使用して画面サイズを決定し、クラスを使用して適切なテクスチャファイルを自分で見つけます。(PVRテクスチャファイルの使用例については、Appleのサンプルコードサイトも参照してください。)UIImageCGImageUIDeviceNSBundle

  3. デバイスにダウンロードされるものに関するあなたの仮定は正しくありません。App Storeに送信した.ipaバンドルは、ユーザーがインストールするデバイスに変更されずにダウンロードされます。4つの異なるデバイス解像度のリソースを含むユニバーサルアプリを送信すると、4つのリソースセットすべてがデバイスにインストールされますが、 3つは未使用になります。

于 2012-07-19T07:26:05.667 に答える