#はじめに
C#をDLLにしてUnityで使おうとしたらいろいろハマったので記事にまとめてみました。
この記事のOSは Windows10, Unityのバージョンは Unity5.3.5f1 です.
Visual Studio 2015 Communityを使います。
#DLLを作ってUnityで使うまでの流れ
新規プロジェクト作成 -> C#クラス作成 -> DLL作成 -> Unityに入れる -> 使う
#1. C#プロジェクトを作成
DLLを作る準備として新規プロジェクトを作成します。
Visual C# -> Class Library を選択してプロジェクト名を DLLTest にしてOKをクリック。
#2. using namespace無しのDLLの作成
プロジェクトを作成するとClass1.csが作られているはずなので、これをを以下のように書き換えてDLL化することを考えます。
int値を返すstaticメソッドを1つだけ持つクラスです。
namespace DLLTest
{
public class Class1
{
public static int Hoge()
{
return 114514;
}
}
}
##DLLの作成
まず、以下のbatchファイルを作成します。 名前はbuild.batとします。
smcs.bat、UnityEngine.dll、UnityEditor.dllはUnityのインストール場所にあるはずです.
smcs.batのファイルパス -r:"UnityEngine.dllのファイルパス" -r:"UnityEditor.dllのファイルパス" -target:library -out:任意の名前.dll *.cs
build.batをClass1.csやbinフォルダのあるディレクトリに配置します.
build.batをダブルクリックするとdllが作られるので、これをUnityProjectの Assets/Plugins/ 以下に入れます。
#DLLを使う
using UnityEngine;
using System.Collections;
using DLLTest;
public class Test : MonoBehaviour
{
void Start()
{
Debug.Log(Class1.Hoge());
}
}
実行してみるとConsoleに正しい値が表示されることが確認できます。
#3. using namespace有りのDLLの作成
using namespaceするコードをDLL化する場合、すこし手間がかかります。
例えば、何も考えずにusing UnityEngine;と書くと以下のようなエラーが出てしまいます。
これを回避するためにはリファレンスを追加する必要があります。
リファレンスの追加
まず、ソリューションエクスプローラーのReferencesを右クリックして Add References を選択します。
UnityEngine.dllが一覧に追加されるのでチェックを入れてそのままOK。
using UnityEngine;のところで出ていたエラーが消えます(完)
#参考サイト
マネージド プラグイン
http://docs.unity3d.com/ja/current/Manual/UsingDLL.html