More Related Content
Similar to Unity ネイティブプラグインの作成について
Similar to Unity ネイティブプラグインの作成について (20)
Unity ネイティブプラグインの作成について
- 27. UnityPlayerActivityを継承したクラスを
eclipseあたりで作成する
(ビルドにはclasses.jarをビルドパスに含める、
Unityフォルダ下のPlaybackEngines/AndroidPlayer/binにある
またAndroidの機能を使うなら、それもインポートする)
上で作成したクラスをjarにエクスポート
して、Plugins/Androidフォルダに配置
AndroidManifest.xmlの
UnityPlayerProxyActivityと書かれている
箇所を、作成したクラス名に書き換える
前者のActivityを改造して実行する方法。
Activityを改造して実行するプラグインは、他のActivityを改造して実行するプラグインと競合する
UnityPlayerNativeActivityのほうが早いが、古いAndroidでは動作しないらしい
- 28. resやassetsはPlugins/Androidフォルダ
に入れておくと、自動でインポート
namespaceの問題で、resを使っているプラグインは動かない時がある。
resでnamespaceを固定するか(そんな方法はあるのか?)、プラグインのRが
使っているnamespaceをアプリのbunleIDと合わせると動作する
resやassetも使えるが、R.classのnamespacecがbundleId依存なので注意
- 30. AndroidJavaClassで
Javaのコードを呼び出す
C#のコード
Javaのコード
Androidのプラグイン連携その2。他にもJNIとかJNIHelper等があるが、これが一番楽
C#はPluginsフォルダに入れておく
Javaのコードはjarに変換してPlugins/Androidへ
- 31. DllImport(“__Internal”)で、
Objective-Cのコードを呼び出す
C#のコード
Objective-Cのコード
Pluginsフォルダ下に置いたC#は、Plugins/iOS下に置いたObjective-CやCの関
数を呼べる
iOSの場合。
C#のコードはPlugins下にでも置いておく。Javaと違い、コードのままビルド可能
- 36. SQLite
PlayerPrefs等
●
I/Oに書き込む
- 45. Platform Dependent Compilationで
プラットフォーム毎に機能わけると楽
(こうしないと、iphoneビルド時にAndroidJavaClassがエラーになる)
エディター上で動作している時に仮デー
タを入れておくと、ゲームが作りやすい
プラグインを呼び出すコードは、PlatformDependentCompilationで管理
- 47. Ad等の描画やUIに関わる処理は
UIThreadから呼び出す
UnityのActivityは
UnityPlayer.currentActivityで取得可能
Androidのルールがけっこう面倒くさいので注意
- 48. プラグイン配布の際、
package形式を使うと
フォルダ構成等を簡単にインポート
(あとファイルサイズが減る事がある
出力は必要なファイルのみ選択してAssets>Export Package)
ただしファイルがすでにある場合は上書きするので、
AndroidManifest.xml等は含めない方が良いかも
プラグインはpackage形式で保持しとくと、導入が超楽になる
Editor's Notes
- Android の例 ・アプリ内課金 ・アドネットワーク ・他社サービス(ネットワークのランキング機能) ・アプリ内蔵ブラウザ ・その他 Android に出来ること ・サンプルコードの一部はコピペで使用可能
- iOS の例 ・他社のアドサービス ・アプリ内課金 ・ネットワークソリューション ・データベースを使う ・システムフォントの使用 ・アプリ内蔵ブラウザ ・サンプルコードは概ねコピペで使用可能