2011-10-18

Unity3DとOpenFeintの連携メモ(Android)

TowerOfMazeでUnity3DとOpenFeintを連携させたときのメモ-Android編。

Step1
Unity用のEclipseでの環境を整える。Indigoでもだいじょうぶ。
@ITのgreeの方の書かれた記事を見るか、もしくはUnityの公式ドキュメント(Integrate Eclipseなんちゃら)に従い、Eclipseでの環境を整える。
この段階では、単純に
・UnityPlayerActivity(2.3以上向けならProxyActivity)を継承したクラスを作成
・BuildされたTemp/ほにゃらら/assets/以下をEclipseプロジェクトのassetsにコピー
・Eclipseから実機を起動する(Unity上でのBuild and Runは使用しない)
を確認する。
なお、Temp以下はUnityでplatformをAndroidにして、一度ビルドしないと出現しないので注意。

Step2
次にOpenFentのSDKを参照できるようにする。jarでは提供されていない?ので、プロジェクトをインポートする
・OpenFeintのAndroid用SDKをダウンロードし、OpenFeintAPIのプロジェクトをimportする。
・プロジェクトを右クリックし、Androidを選んでis Libraryにチェックを入れる
(最初から入ってるかも)
・Step1で作成したプロジェクトを右クリックし、Configure Build Pathを選択
・左メニューからAndroidを選んでLibraryのAddを選択し、OpenFeint APIを追加する。
(UnityPlayerの環境を整えるのと同じやり方)

Step3
Eclipseでクラスを用意する。OpenFeintPluginなどとする。このクラスをUnity側から呼び出す形になる。メソッドはすべてstaticにする。最初はLaunchDashbordだけとかがいいでしょう。(OpenFeint側の公開メソッドはほとんどstaticで実装されている。)

Step4
Unity側でクラスを書く。Assets/Plugins/Android以下におくのが望ましい。
AndroidJavaClassを使用するので、もし同じソースでiOSなど別のPlatformでBuildする場合は当然エラーになるので、クラス全体を
#if UNITY_ANDROID
#endif
で括る。また、Unity上でPlayしたときに、スルーするように
Application.isEditor を使って分岐する。

以下Step3とStep4を繰り返し、Eclipse側でコードを追加し、それをUnity側で
AndroidJavaClassを使って呼び出す。

おまけ
OpenFeintで何かイベントが発生した場合に(ログインしたとか)なにかしたい場合は
自分でOpenFeintDelegateを継承したDelegateクラスを書き、
OpenFeint.initializeの第3引数にそのインスタンスを渡せばよい。

OpenFeint.initialize(currentActivity, settings, new MyOpenFeintDelegate());



0 件のコメント:

コメントを投稿