[備忘録]cocos2d-xのマルチレゾリューション対応でハマった話。

Img cocos2dx

wordpressのテーマ作りも一段落し、cocos2d-xのお勉強を再開させました。
が、いきなり本筋とは関係ないところでハマッてしまったので、その解決方法のメモを備忘録として残しておきます。

現象:cocos2d-xのマルチレゾリューション処理がうまく動かない!

cocos2d-xによるiPhone/Androidアプリプログラミングガイド』という書籍を参考書にcocos2d-xのお勉強を進めているんですが、この本ではゲーム画面の一番ベースの部分にマルチレゾリューション対応を入れています。
最初にデバイスの解像度を取得し、そのデバイスの解像度向けに「resources-small」「resources-large」「resources-xlarge」と、適切なフォルダを参照するように振り分ける、という処理です。
書籍ではCocosBuilderというツールで各サイズのリソースを書き出していますが、自力で各サイズの画像を用意しても、同様の処理になるはずです。

で、いざエミュレータを起動してみると、、、
なんか起動する毎に画像がバラバラで、グチャグチャ!
スクリーンショット 2013 12 21 11 43 18
スクリーンショット 2013 12 21 11 43 29

やだー!何これ!

どうも、画面を構成する画像が、それぞれ好き勝手にバラバラのフォルダを参照しているようす。
これは、困った。。

というのが、今回のハマった現象です。

解決方法

数日間ハマッてしまったんですが、解決方法は超簡単!
Resourcesフォルダに画像を追加するときの設定が問題だったようです。

具体的には、、、
スクリーンショット 2013 12 21 11 46 32 6 2

書籍の方でも、ちゃんとこっちが選択されてるんですけど特に注記されていなくてスルーしてました…。
デフォルト設定は上の「Create groups for any added folders」なんですが、一度下を選ぶと次からはそっちの設定がデフォルトになるようで、書籍ではあえて注記はされていなかったんでしょう。
でも、これが超大事!!

追加されたリソースファイルを一旦プロジェクトから消して、「Create folders references for any added folders」設定で追加してみると、問題はあっさりと解決!
数日間悩まされた問題は、こんなにも単純な原因だったのでした。

この設定を変えると何が違うの?

問題は解決したんですが、「そもそもこの設定で何が変わるのか?」についても少しだけ。

まず、デフォルトの「Create groups for any added folders」を選択した場合。
これは、ざっくり言うと、追加したフォルダに対してXcode内でのみ認識される論理的なグループを生成するという設定。
リソースが実機にコピーされる際には、Xcodeで見かけ上存在しているフォルダー構造は無く、全てがフラットな階層に置かれる、という設定です。

いやー、このリソースの持ち方は絶対に知っておかなければいけない内容でした!!

一方、今回選択した「Create folders references for any added folders」
こちらは、ファイルシステム上の物理フォルダに対し、参照リンクを作成するという設定。
これもざっくり言うと、Xcodeで認識しているフォルダ構造をそのままコピーできますよ!という設定です。

わかりやすく全部参照リンクでいいじゃん!とも思いますが、Xcodeさん的にはリソースの効率が良かったりするのかもしれません。

というわけで、数日間悩まされたものの、Xcodeのリソースファイルの取り扱いについてもちょっと理解ができたということで、有意義な失敗でした!

Commentsこの記事についたコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です