BLOGワンダープラネットの開発者ブログです。モバイルゲーム開発情報を発信。2014-05-30【Cocos2d-x】ビルドなしでリソース更新しよう!Cocos2d-xこんにちは、デザイナーの上松です。前から、ゲームの画像などの「リソース」を反映させる時に問題が起きていました。Xcodeのキャッシュですぐに更新してくれなかったり、プログラマーさんを介さないと画像が反映できない点です。・確実にリソースを反映できる・ビルドしなくても(実行中でも)差し替え反映できる・操作を覚えればグラフィッカーやデザイナが開発ソフトを入れなくても更新できる(!)この3つのことができるようになります!ファイルの読み込み先を変えるCocos2d-xでは、ゲームのリソースを、CCFileUtilにあるSearchPathに設定されているフォルダからとってくるようになっています。最初の状態はアプリ内のResourcesフォルダが設定されています。このSearchPathは配列(ベクタ)になっており、先頭のフォルダから順に検索していき、なければエラーを返すような仕組みになっているようです。いうことで、このSearchPathの先頭に、任意のフォルダを指定すれば良さそうな感じがします。読み込み先の変え方はわかりました。つぎに、どこへデータを書き込むのかを考えましょう。以下の3つのフォルダのどれかになります。・Documentsフォルダ・Library/Cacheフォルダ・tmpフォルダ基本的にデバッグ用ですのでどこでもOKです。今回はgetWritablePathで簡単に取得できる、Documentsを使用しましょう。データを書き込むiOS端末の場合iOS端末へ読み書きできるソフトを使うと便利です。iFunBoxや、iExplorer等です。外付けディスクのようにFinderから書き込むことができます。なければ、iFunBoxをおすすめします。どちらのソフトも、フォルダをドラッグアンドドロップして書き込むことができます。iOSシミュレータの場合あなたの現在のプロジェクトの、AppDelegate::applicationDidFinishLaunchingの中で、下のコードを動かして、パスを取得しましょう。私の場合は、こんな感じで出力されました。Simulator/7.1-64/Applications//Documents/このフォルダへFinderで移動して、書き込みます。Macの中のフォルダなのでソフトを使わなくても書き込めます。rsyncで同期をとるようにするとより便利です。実際に読み出してみるAppDelegate::applicationDidFinishLaunchingで、シーンが作られる前に、下のようなコードを書いておきます。stdをお忘れなく!この状態で起動します。おなじみのHelloWorldシーンです。ここで、以下のように色を変更したココスくんの画像を、Documents内に保存してみます。反映されましたね!これで、ビルドやクリーンをしなくてもリソースだけ転送できるようになりました。リアルタイムにしたいここまででは、毎回起動し直さなければいけません。動かしながら反映できればもっと便利そうです。シーンに更新機能をつけるあくまでデバッグ機能ですので、シーンを再生成する方法で実現しましょう。・画像などのキャッシュのクリア・現在のシーンの新しいインスタンスを作る・初期化する・現在のシーンと差し替えるコードにするとこんな感じでしょうか。電源ボタンのアクションで、アプリを終了する代わりに下記の処理を入れてみます。メニューボタンを押すとフェードアウト/インして、更新されるようになりました。ボタン画像をエリザベスにしても問題なく動きます。調整も、直接Photoshopから書き込みできるためさくさくです!(シミュレーターやマウントした場合です)ただ、この機能をすべてのシーンにつけるのは大変そうです。使うメニューや、辿り着きにくいシーンなどに限定して実装したり、最初からデバッグ用シーンを作ってしまう方が良いのではと思います。まとめこれで、SearchPathに書き込みできるフォルダを追加して、ビルドなしでリソース反映ができるようになりました。CCBIファイルを使った画面作りや、Luaを使ってプログラムを書いている場合は、もっと相性が良さそうですね。12:00【Cocos2d-x】ビルドなしでリソース更新しよう!Tweet関連記事2015-02-19「TexturePacker」のあれこれこんにちは。今回ブログを担当する長屋です。今回はテクスチャ...2014-09-19Cocos2d-xでファイルをパッキングしてみよう今回のエンジニアブログ担当の岩原です。リソースが更新されないときの対処法おつかれさまです。