6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

UnityのスクリプトをDLL化して外部プロジェクトから利用する

Last updated at Posted at 2017-01-02

先日、Unityからロジック部分を切り離せるのか検討してみたところ、いけそうだったので、今度は切り離したロジック部分をDLLにして外部から利用する方法を調べました。環境はWindowsです。

Unity(MONO)の機能を使ってDLLをビルド

お手軽なことに、Unity側に存在する機能をそのまま使えました。smcs.batです。
こちらのページを参考にさせていただきました。

前回のサンプルを使い、実際にビルドしてみたコマンドがこちらです(ディレクトリ名は一部置換しています)。

"C:\Program Files\Unity\Editor\Data\Mono\bin\smcs.bat" -target:library -r:C:\Users\main\Desktop\hogemoge\UniRx.dll -r:C:\Users\main\Desktop\hogemoge\config.dll -out:jikken.dll /recurse:C:\Users\main\Desktop\etc\jikken\github\unity-sample\Assets\Scripts\Models\*.cs

UnityEngine、UnityEditorには依存していないため、UniRxと、それからConfigクラスのダミーをDLL化したものだけ読み込ませています。

DLLを呼んでみる

試しに作成されたDLLを参照するコンソールアプリケーションのプロジェクトを一つ作り、下記のコードを実行してみます。

Program.cs
using System;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            var hoge = new Number(5);
            hoge.Pow();
            Console.WriteLine(hoge.Value.ToString());
        }
    }
}

image.png

無事に動作しました。

余談: 他には?

上記の手段以外にも、

  • 別プロジェクトでDLLを作成しておいて、それをUnityから読む
  • シンボリックリンクを使ってスクリプトを共有

といった方法があるようです。
が、前者は実験してみたところiOSで動作しませんでした。後者はかなり力技です。

今のところ、Unity内のスクリプトをDLL化するのはsmcs.batを利用するのが総合的に見て一番なのかなという印象です。

6
5
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
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?