Visual Studio 2015 RCをインストール
ファイル -> 新規作成 -> プロジェクト
で新しプロジェクトというウィンドウが出てくる
Visual C++ -> ClossPlatform -> ダイナミック共有ライブラリ
を選択しプロジェクトを作成する
ダイナミック共有ライブラリがなかった場合インストーラーを起動し「変更」を選択
オプションの中からVisualC++モバイル開発を選択をして次へを押す
その後更新を押すとインストールが始まる
プロジェクトを作成するとヘッダーファイル(.h)が二つとソースファイル(.cpp)が一つある
ソースファイル内のextern"C"のスコープ内に関数を追加して書く
extern"C"{
int Test1(int i){
return i*100;
}
}
上部にあるアクティブソリューション構成をDebugからReleaseに変える
を開き
構成プロバティ -> 全般 の中にある ターゲット名を変える
初期では
lib$(RootNamespace)
となっている。
これを
libAndroid$(RootNamespace)
のようにプラグイン名を追加する
デフォルトのターゲット名ではビルドしたときにlib.soというファイルができるがUnityで使用する際には最初のlibと.soは省くという決まりがあるために追加する
を選択する
できた.soファイル(上記の例ではlibAndroid.so)はUnityのプロジェクトの
Asset -> Plugins -> Android フォルダに入れる
使用する際は
#if UNITY_ANDROID && !UNITY_EDITOR
[DllImport("Android", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
private static extern int Test1(int i);
#endif
と記述するとAndroidでのみ使用できるようになる
この方法で作成したプラグインはAndroid以外のプラットフォームでは使用できないため
Windows等の別プラットフォームで作成する場合別にプラットフォームを作成しなければならない
この時関数名を同じにしておけば以下のように書ける
#if UNITY_ANDROID && !UNITY_EDITOR
[DllImport("Android", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
#else
[DllImport("WindowsDll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
#endif
private static extern int Test1(int i);
以下はWindowsDll.dllというWindowsプラグインに同じような関数を記述したものである
extern"C"{
__declspec(dllexport) int Test1(int i){
return i*100;
}
}
DllImportを使用するためには以下を記述する
using System.Runtime.InteropServices;
※7/2 Androidでのみ起動可能ということを書き忘れたため追記