LoginSignup
5
4

More than 5 years have passed since last update.

Visual Studio 2015 RCを使用したAndroidPulugin作成

Last updated at Posted at 2015-06-29

Visual Studio 2015 RCをインストール

ファイル -> 新規作成 -> プロジェクト
1.png
で新しプロジェクトというウィンドウが出てくる

Visual C++ -> ClossPlatform -> ダイナミック共有ライブラリ
2.png

を選択しプロジェクトを作成する

ダイナミック共有ライブラリがなかった場合インストーラーを起動し「変更」を選択
オプションの中からVisualC++モバイル開発を選択をして次へを押す
その後更新を押すとインストールが始まる

プロジェクトを作成するとヘッダーファイル(.h)が二つとソースファイル(.cpp)が一つある
ソースファイル内のextern"C"のスコープ内に関数を追加して書く

Pulugin.cpp
extern"C"{
    int Test1(int i){
        return i*100;
    }
}

上部にあるアクティブソリューション構成をDebugからReleaseに変える
3.png

デバック -> (プロジェクト名)のプロパティ
4.png

を開き
構成プロバティ -> 全般 の中にある ターゲット名を変える
5.png

初期では
lib$(RootNamespace)
となっている。
これを
libAndroid$(RootNamespace)
のようにプラグイン名を追加する
デフォルトのターゲット名ではビルドしたときにlib.soというファイルができるがUnityで使用する際には最初のlibと.soは省くという決まりがあるために追加する

ビルド -> ソリューションのビルド
6.png

を選択する

できた.soファイル(上記の例ではlibAndroid.so)はUnityのプロジェクトの
Asset -> Plugins -> Android フォルダに入れる

使用する際は

test.cs
#if UNITY_ANDROID && !UNITY_EDITOR
 [DllImport("Android", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
private static extern int Test1(int i);
#endif

と記述するとAndroidでのみ使用できるようになる

この方法で作成したプラグインはAndroid以外のプラットフォームでは使用できないため
Windows等の別プラットフォームで作成する場合別にプラットフォームを作成しなければならない
この時関数名を同じにしておけば以下のように書ける

test.cs
#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プラグインに同じような関数を記述したものである

Pulugin.cpp
extern"C"{
   __declspec(dllexport) int Test1(int i){
        return i*100;
    }
}

DllImportを使用するためには以下を記述する
using System.Runtime.InteropServices;

※7/2 Androidでのみ起動可能ということを書き忘れたため追記

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4