2012年8月7日火曜日

NGUI:複数デバイス解像度対応


iPhoneアプリを作成するとき、iPhone 3G対応に頭を悩ませる。解像度の差異があるのでiPhone4とサイズの異なる画像を用意しないといけないためだ。

今回はNGUIでこの複数デバイスの解像度対応を行うためのスクリプトについて、NGUI作者がフォーラム投稿者の回答を引用しているため、紹介したい。

June 25, 2012, 04:48:43 PM
http://www.tasharen.com/forum/index.php?topic=832

ランタイムでAtlasを動的に切替する方法の議論はこのフォーラムでも何度かあった。私もスクリプト作成したので共有したい。
動作の条件として事前作業があるが、あまり難しくないんでぜひ試してほしい。

準備するもの:

・参照元Atlas - UI全体をこのAtlasで作成し、以下のAtlasを参照させる
・参照元Font

以下、解像度別
・SD Atlas - (iPhone 3GS以前)
・SD フォント
・HD Atlas - (初期iPad, iPad2, iPhone4以降)
・HD フォント
・SHD Atlas - (iPad3)SHD=超高解像度だけどiPad3解像度対応をしないなら不要
・SHD フォント -

これら3つの「実体」Atlasおよびフォントをresourcesフォルダ配下に、さらにGUI/SD, GUI/HD, GUI/SHDというフォルダ階層に置く。(参照元ではない点に注意)明確にするために私自身はAtlas関係ファイル(プレハブ、画像イメージ、マテリアル)はすべてこのフォルダにそれぞれ置いている。


以下のスクリプトを任意の空ゲームオブジェクトに貼り付ける
http://www.tasharen.com/forum/index.php?topic=832
(注:リンク先でスクリプト参照のこと)

■■ 重要 ■■
Unity上でEdit→Project Setting→Script Execution Orderにてスクリプト実行順序を変更するメニューに遷移をして、解像度変更コントローラ(ResolutionsSwitchController)を一覧に追加し、実行順を上になるように変更する。目的は出来るかぎり最初に実行することであり、必須条件としてNGUIスクリプトより先に実行すること。私自身はlocalizationの次の実行順としている。

メモ
・横長画面(landscape)想定でスクリプトは動作する(すなわち解像度チェックは横幅Widthを基準に行われている。将来的には変更すべきとおもっているし、自身でも変更可)
・2つあるラベルはデバッグ目的。想定どおりの解像度で動作していることを保証するため
・スクリプトはエディタ(editor)上で動作しないようにも変更できる。(参照をおかしくしてしまうリスクもあるため)

自分のニーズにあわせてこのスクリプトを実行、更新、修正することは自由。このスクリプトが誰かの役に立つことを祈る!
-----

Androidの複数解像度対応は最初からサジを投げたくなるようなものだが、たしかにiPhone 3GS対応はまだまだ手抜きが許されるものでない。

良く考えてるぞNGUI!



0 件のコメント:

コメントを投稿

ブックマークに追加

このエントリーをはてなブックマークに追加

自己紹介

自分の写真
Unity3D公式マニュアル翻訳やってる人がスマホ(iPhone, Android)のゲーム開発しています。気軽に面白く初心者が遊べる内容がモットー。Blogでは開発情報をひたすら、Twitterではゲーム作成の過程で参考にしている情報を中心につぶやきます

ページビューの合計

過去7日間の人気投稿

ブログ アーカイブ