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に固まっていたほうがいいのではないかとも思います。

もっといい方法があるかもしれません。。。