Lua用プロジェクト
cocos2d-xでLuaを使うためのプロジェクト作成、SDcardからLuaファイルの読み込みについて
現在最新Verのcocos2d-x v2.1rc0-x-2.1.3での説明をしていきます
cocos2d-x Luaプロジェクト
旧バージョンではAndroid,iOS共有プロジェクトを作る場合色々と面倒でしたが、最新バージョンでは簡単に作ることができます。やり方は多所で書かれているので簡単説明。
1.create_project.pyでプロジェクトを作る
create_project.pyを使うことで、マルチプラットフォーム共有プロジェクトを自動で作ってくれます。
ファイルの場所:
[cocos2d-xのフォルダ]/tools/project-creattor/create_project.py
※実行にはPythonが必要です。WIndowsは先にインストールの必要があります。
Macは最初から入っていた気がする?
コマンドプロンプトで上記のフォルダまで移動したら、以下のコマンドでプロジェクトを作成します。
python create_project.py -project <プロジェクト名> -package <パッケージ名> -language lua
最後の-languageをluaに指定することでLua用のプロジェクトが作成されます。
成功すれば [cocos2d-xのフォルダ]/projects/プロジェクト名 に作らているはずです。
Android,iOS以外はいらいないので、その他のproj.~を削除
androidはADK、iosはXcodeでそれぞれのproj.にあるプロジェクトファイルを使いサンプルが動作することを確認しましょう。
2.Android SDcardからLuaを読み込む
通常はbuild_native.shを実行し、プロジェクトをビルドします。
その際に必要なリソースファイルはassetsにコピーされます。アプリケーションはassetsの中のリソースを読み込むわけです。
これでは、Luaファイルの変更→毎回ビルド(時間がかかる)→apkの転送 となり、Luaスクリプトの強みを活かせません。
そこで、LuaファイルはAndroid端末のSDcardへ直接転送し、アプリケーションにはそこからLuaファイルを読みこんでもらうように変更します。 Luaファイルの変更→SDCardへコピー(即終わる)→即反映
詳しい説明は前回同様にこちらの方が書いてくれていますので参考にします。
#20 まさか、Cocos2d-x 使っているのに C++ 書いてるわけないよね?
http://tech.kayac.com/archive/20_snmp.html
・AppDelegate.cppを変更する
上記のHPを参考にして書き換えます。
HPの説明では、最初のLuaファイルは指定しているので読み込まれるのですが、requireの検索パスが設定されていないので、他のファイルを読み込むことができません。
パス指定を追加します。
const char *luaSearchPath = "/mnt/sdcard/Resources"; // 環境に合わせてLuaファイルの検索パスを指定 pEngine->addSearchPath( luaSearchPath );
また、Luaファイルだけでなく、他のリソースもSDcardから読み込みたい!というときはそちらの指定もする。
std::vector< std::string> resourcesPaths; resourcesPaths.push_back( "/mnt/sdcard/Resources"); // 環境に合わせてリソースファイルのパスを指定 CCFileUtils::sharedFileUtils()->setSearchPaths( resourcesPaths );