Unityのバージョン Unity2018.4.0f1
はじめに
今回はコードをDLL化してマネージプラグインを作成後にUnityで使ってみる記事になります!
みなさんプラグインと聞いてまずネイティブプラグインを思い浮かべる方も多いのではないでしょうか。
そもそもプラグインとは”機能拡張用のソフトウェア”のことを指します。
https://wa3.i-3-i.info/word11533.html
これはUnityでも用いられ、例えばAdmob
のunitypackage
をインポートしたとき、Pluginsフォルダ
内にAndroid用のプラグイン
やIOS用のプラグイン
が入っているはずです。
Unityではこのプラグインを2種類に分けており、マネージドプラグイン と ネイティブプラグインという名前がついています。
マネージドプラグイン は公式のリファレンスではこのように書かれています。
マネージドプラグイン はマネージドの .NET アセンブリーで、Visual Studio や MonoDevelop などのツールを使用して作られたものです。これらは .NET のコードのみを含んでいるため、.NET ライブラリーの対応していない機能にはアクセスすることができません。
次にネイティブプラグインをみてみましょう。
ネイティブプラグイン はプラットフォームごとのネイティブコードライブラリーです。これらは、システムコールやサードパティのコードライブラリなどといった、元々 Unity で使用できない機能にアクセスすることができます。
今回は前者のマネージプラグインについて少しみてみたいと思います。
マネージプラグインにするメリット
マネージドプラグインは先程の説明のように、基本はUnityのスクリプトですべて表現することができます。
なので、一般的に DLL よりもスクリプトで作業をしたほうが簡単といえるかもしれません。
しかしマネージドプラグインにはいくつかメリットがあります。
- C# のソースを隠蔽できる
- 毎回のコンパイルをしなくてすむ
- Unityによってサポートされていないコンパイラを使うことができる
- あたらしいC#の機能が使える
2番目に関してですが、UnityのAsset内にあるスクリプトはEditorウィンドウがアクティブになったタイミングでコンパイルがされます。
ただスクリプトをDLL化することで先にコンパイルをしているので、再度コンパイルする必要がなくなるというわけです。
また、マネージドプラグインでも少しいじればUnity API
を利用することも可能です。
Visual Studioでプロジェクトを作成する
この記事ではVisual Studio 2019
を使ってコードの作成、コンパイルを行います。
まずはVisual Studio
を開き、 ファイル -> 新規作成 -> プロジェクト
をクリック、 クラスライブラリ(.NET Framework)
を選択します。
(.NET Standerdというのもあるみたいなのですが、正直よく分かっていません)
今回はDLLTest
という名前で作成をしてみました。
UnityのAPIを使えるようにする
やはりUnity API
が使えないとなにかと不便です。
今の状態ではusing UnityEngine;
と書いてもエラーが出てしまうので、これを使えるようにUnity DLL
の参照を追加する必要があります。
まずはソリューションブラウザーで参照の上を右クリック、参照の追加を選択します。
左の欄の一番下にある参照を選択し、右下の参照を押して、UnityEngine.dll
を選択します。
Mac OS Xでは
Applications/Unity.app/Contents/Frameworks/Managed/UnityEngine.dll
Windowsでは
Program Files\Unity\Editor\Data\Managed\UnityEngine.dll
にあります。
windowsの場合、~/Managed/UnityEngine/UnityEngine.dll
もあるそうで、誤って私はこちらを参照してしまい上手くいかないことがありましたのでご注意を。
コードを書く
実際にコードを書いてみましょう。
using System; using UnityEngine; namespace DLLTest { public class Utils { /// <summary> /// ランダムなUnityEngine.Colorを生成する /// </summary> public static Color GenerateRandomColor() { return new Color(UnityEngine.Random.value,UnityEngine.Random.value,UnityEngine.Random.value,1); } } }
これをビルドすることでマネージドプラグの完成です。
ビルドする
ビルド -> ソリューションのビルド
をクリック。
すると下の出力に結果が表示され、dll
のパスも表示されているはずです。
これをUnityのProjectビュー内のAsset以下好きなところのPluginsフォルダ
内にドラッグアンドドロップしてください。
実際にUnityで使ってみる
以下のようなスクリプトを作成後、ゲームオブジェクトにアタッチして、色を変えたいゲームオブジェクトのRendererコンポーネントを指定してください。
using UnityEngine; using DLLTest; public class TestUseDLL : MonoBehaviour { //色を変えるゲームオブジェクトが持つRenderコンポーネント [SerializeField] private Renderer _targetRenderer; private void Start() { _targetRenderer.material.color = Utils.GenerateRandomColor(); } }
さいごに
これでマネージドプラグインの作成を一通りしてみました。
自作のプラグインを作ってると謎の高揚感があって私は結構好きな感じがします。
後でネイティブプラグインも触ってみたいと思います!