Mac版Visual StudioでUnity用のDLLを出力する方法

UnityDLL, Visual Studio

Unity2018からMonoDevelopからVisual Studioへの移行になります。
Win版のVisual StudioでDLLを出力する方法、MacでのMonoDevelopでDLLを出力する方法はたくさん記事が有るのですが、Mac版Visual Studioでの出力方法があまり記事がなかったので書いてみました。

本記事の環境は以下の通りです。

ソフト バージョン
Unity 2017.3.1.f1
Visual Studio for Mac 7.3.3

Mac版Visual Studioの作業

まずはMac版のVisual Studioを立ち上げて「新しいプロジェクト」からプロジェクトを作成します。

Windows版ではここは言語別の選択肢になるのですが、Mac版ではプラットフォーム別の選択肢となっています。今回はUnity用のDLLなので「その他」から「空のプロジェクト」を作成します。

これ言語なんなんだよ!?って突っ込みをいれたくなりますが空のプロジェクトを作成した時点でC#のプロジェクトが作成されます。

このままコードを打っていきたい所ですが、その前にUnity用に設定を変更します。
ソリューションから右クリックでオプションを開いてください。

オプション→ビルド→全般 から「ターゲットフレームワーク」の設定を変更します。現状のUnity2017系統では「.Net Framework 3.5」に設定します。

また、今回出力するのはDLLなのでコンパイルターゲットを「ライブラリ」に変更します。

続いて、UnityEngineとUnityEditorの参照を渡します。各々使わないのであれば参照を渡す必要はないので飛ばしててOKです。

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

Dllは上記パスに入っています。

参照の編集から「.NETアセンブリ」を選択してUnityEditorとUnityEngineを参照追加させます。

正しく設定できると、参照に各々のDllが登録されます。

何故かたまにUnityEngineとUnityEditorが3個ずつ登録されたりしますが、Visual Studioを再起動すれば直ります。

ここからはいつも通りにC#でコードを書いていくだけです。


using UnityEngine;

namespace Blog_test
{

    public class hoge : MonoBehaviour
    {
        public void Fuga()
        {
            Debug.Log("らーめん、らーめん");
        }
    }
}

今回は適当にDebug.Log叩くコードを書きました。

ソリューションから右クリック、もしくはCommand+Kでビルドできます。

問題なくビルドがすめばプロジェクトフォルダの中にビルドされたDLLファイルが生成されます。

Unityでの作業

ここからはいつも通りのDLLと同じように扱います。DLLの取り扱い経験がある方は読まなくてもOKです。

先ほど作成したDLLを「Plugins」フォルダにぶち込みます。

あとはDLLを叩くためのテストコード用にTest.csを作成してGameObjectにアタッチします。


using UnityEngine;

public class Test : MonoBehaviour {

    // Use this for initialization
    void Start () {

        var hoge = new Blog_test.hoge();
        hoge.Fuga();
    }
}

ソースの中身は上記のような感じです。

うまくいくと、上記の様にConsoleLogが出ます。

あとがき

以上のように、Mac版Visual Studioになれれば簡単にDLL作成ができます。
初めはWin版のVisual Studioとかけ離れすぎていて困惑しましたが……

今回は時短でMonoBehaviourをnewでInstance作ってますが、これはUnityさんに叱られるので実制作の時はちゃんとしましょう。