Cocos2d-xで新しいクラスや画像などを追加する方法と注意点
ちょびっとハマったのでメモ。
クラス追加
XcodeプロジェクトのClassesのところで、C and C++のheaderファイルを追加します。
(2013/01/09追記)「Save As」の右にある▼をクリックして保存先をClassesディレクトリに指定すると、下記の「1.追加されたhとcppファイルの場所変更」は不要です。お恥ずかしい。。。
同様に、C++ Classを追加します。
iOSはこれだけでクラスを使えるようになります(中身の記述は当然必要)が、Androidはこれではダメで、2つのことをやらないといけません。
1.追加されたhとcppファイルの場所変更
今回追加したHogeSceneはXcode上ではClassesの中に入っていますが、Finderで見ると入ってません。
Xcode
Finder
hとcppファイルを、ファイルシステム上でClassesディレクトリに移動させます。
Xcode上のreferenceも設定し直します。
2.Android.mkファイルに追記
proj.android/jni/Android.mkファイルを編集します。
LOCAL_SRC_FILES := hellocpp/main.cpp \ ../../Classes/AppDelegate.cpp \ ../../Classes/HelloWorldScene.cpp \ ../../Classes/HogeScene.cpp
LOCAL_SRC_FILESに、追加するcppファイルを指定します。(実際は¥マークではなくバックスラッシュ)
これで、Androidでも動くようになります。
リソース(画像、音楽、plistなど)追加
これもクラスの場合と同じような感じで、Resourcesディレクトリに入っていないとAndroidに渡されません。
なので、まずFinder上でResourcesディレクトリにファイルをコピーし、その後Xcodeのプロジェクトからリンクを貼るのがいいと思います。
あとで気が付きましたが、クラス追加の方はわざわざClassesディレクトリに移動させなくても、Android.mkファイルでClasses抜きのパスを指定すればそれだけでOKかもしれません。
ただまぁ、Cocos2d-xのコードはClassesに固まっていたほうがいいのではないかとも思います。
もっといい方法があるかもしれません。。。