Plugin インスペクター
ネイテイブプラグイン

マネージド プラグイン

通常、スクリプトはプロジェクトにソースファイルとして保持され、ソースが変更されたときに Unity によりコンパイルされます。しかし外部コンパイラを用いてスクリプトを ダイナミックリンクライブラリ (DLL) としてコンパイルすることもできます。結果の DLL は次にプロジェクトに追加して、それに含まれるクラスは通常のスクリプトと同様にオブジェクトにアタッチできます。

It is generally much easier to work with scripts than DLLs in Unity. However, you may have access to third party Mono code which is supplied in the form of a DLL. When developing your own code, you may be able to use compilers not supported by Unity by compiling the code to a DLL and adding it to your Unity project. You may also want to supply Unity code without the source (for example, for an Asset Store product) and a DLL is an easy way to do this.

DLL の作成

DLL を作成するには、最初に適切なコンパイラが必要です。.NET コードを生成するすべてのコンパイラは Unity で動作することが保証されていないため、大量の作業に着手する前にコンパイラをなんらかのコードでテストしておくことが賢明です。もし DLL が Unity API に依存するコードが何もない場合、適切なコンパイラオプションを使用してシンプルに DLL とすることができます。もし Unity API が使用したい場合、Unity 自身の DLL をコンパイラで利用可能とする必要があります。Mac ではこれらはアプリケーションバンドルに含まれます(コンテキストメニューから Show Package Contents コマンドを使用することでバンドルの内部構造が見れます。Unity アプリケーションを右クリックか Ctrl を押しながらクリックします)

Unity DLL へのパスは通常、

/Applications/Unity/Unity.app/Contents/Managed/

であり、2 つの DLL は UnityEngine.dll 、 UnityEditor.dll と名前がついています。

Windows では、DLL は Unity アプリケーションについてきたフォルダーにあります。パスは通常

C:\Program Files\Unity\Editor\Data\Managed

であり、DLL のファイル名は Mac OS 向けと同じです。

DLL をコンパイルするときの正確なオプションは使用されるコンパイラにより幅があります。例えば Mono C# コンパイラ、すなわち mcs、のコマンドラインは Mac OS では次のように見えます。

mcs -r:/Applications/Unity/Unity.app/Contents/Managed/UnityEngine.dll -target:library ClassesForDLL.cs

ここで、-r オプションはビルドに含めるべきライブラリへのパスを指定し、この場合は UnityEngine ライブラリです。-target オプションによりどのビルドが必要であるか指定し、“library” という文字列は DLL ビルドを選択するために用いられています。最後に、コンパイルするソースファイルは ClassesForDLL.cs です(このファイルがカレントの作業フォルダーにあることが前提ですが、必要であればファイルをフルパス指定できます)。すべてがうまく行く前提で、結果の DLL ファイルはソースフォルダーと同じ場所に表示さます。

DLL の使用

一回コンパイルされた後、DLL は他のすべてのアセットと同様に、Unity プロジェクトにドラッグ&ドロップできます。DLL アセットにはたたまれた三角形マークがあり、ライブラリの中の別クラスを明らかにします。MonoBehaviour から得られるクラスは通常のスクリプトと同様にゲームオブジェクト上にドラッグ&ドロップできます。非 MonoBehaviour クラスは他のスクリプトから通常の方法で直接使用できます。

クラス名が表示されている、展開された DLL
クラス名が表示されている、展開された DLL

Step by step guide for Visual Studio

This section explains how to build and integrate a simple DLL example with Visual Studio, and also how to prepare a debugging session for the DLL.

プロジェクトのセットアップ

First, open Visual Studio and create a new project. In Visual Studio, you should select File > New > Project and then choose Visual C# > Class Library.

新規ライブラリの情報を入力します。

  • Name は名前空間であり、このサンプルでは “DLLTest” を使用します。
  • Location はプロジェクトの親フォルダーです。
  • Solution name はプロジェクトフォルダーです。

Next, you should add references to the Unity DLLs. In Visual Studio, open the contextual menu for References in the Solution Explorer and choose Add Reference. Then, choose the option Browse > Browse > select file.

At this stage, you will have the option to select the required DLL file. On Mac OSX, the file can be found at:

Applications/Unity.app/Contents/Managed/UnityEngine.dll

On Windows, the path is:

Program Files\Unity\Editor\Data\Managed\UnityEngine.dll

コード

For this example, rename the class to MyUtilities in the Solution browser and replace its code with the following:

using System;
using UnityEngine;

namespace DLLTest {

    public class MyUtilities {

        public int c;

        public void AddValues(int a, int b) {
            c = a + b;
        }

        public static int GenerateRandom(int min, int max) {
            System.Random rand = new System.Random();
            return rand.Next(min, max);
        }
    }
}

最後にプロジェクトをビルドして DLL ファイルとそのデバッグシンボルを生成します。

DLL を Unity で使用する

For this example, create a new project in Unity and copy the built file <project folder>/bin/Debug/DLLTest.dll into the Assets folder. Then, create a C# script called “Test” in Assets, and replace its contents with the following code:

using UnityEngine;
using System.Collections;
using DLLTest;

public class Test : MonoBehaviour {

     void Start () {
        MyUtilities utils = new MyUtilities();
        utils.AddValues(2, 3);
        print("2 + 3 = " + utils.c);
     }

     void Update () {
        print(MyUtilities.GenerateRandom(0, 100));
     }
}

最後にスクリプトをシーン上のオブジェクトにアタッチして(すなわち Main Camera )、シーンを実行します。出力結果は Console ウィンドウで見られます。

Setting up a debugging session for the DLL

Firstly, you should prepare the debug symbols for the DLL. In Visual Studio, execute in the command prompt, passing <project folder>\bin\Debug\DLLTest.pdb as a parameter:

Program Files\Unity\Editor\Data\Mono\lib\mono\2.0\pdb2mdb.exe

Then, copy the converted file <project folder>\bin\Debug\DLLTest.dll.mdb into Assets/Plugins.

この設定が完了すれば、Unity 上で DLL を使用しているコードを通常の方法でデバッグできます。デバッグに関する詳細は スクリプティングツール の項を参照してください。

Compiling ‘unsafe’ C# code

You can enable support for compiling ‘unsafe’ C# code in Unity. To do this, go to Edit > Project Settings > Player and expand the Other Settings tab to reveal the Allow ‘unsafe’ Code checkbox.


  • 2018–03–20 限られた 編集レビュー で修正されたページ

  • MonoDevelop replaced by Visual Studio from 2018.1

  • ‘unsafe C# Code checkbox’ added in 2018.1

Plugin インスペクター
ネイテイブプラグイン