【Unity】C#スクリプトをDLL化する手順

この記事では Unity の C# スクリプトをDLL化する手順と注意点について説明します。

執筆時に扱った Unity のバージョンは 2021.1.6f1 です。
プラットフォームは Windows 10 (64ビット版) を対象としています。

2023/10/15 修正
Visual Studio 2022 ではターゲットフレームワークを .Net Standard 2.0 に変更する方法が違うので記事を修正しました。

どっちの DLL が必要か?

Unity 用の DLL を作るときに決めなければならないことがあります。
以下の2点です。

1. PC 向けの DLL を作る。
2. マルチプラットフォームに対応した DLL を作る。

どちらにするかで、使うライブラリが変わります。

Unity が読み込める DLL は、.Net Framework 4.x か、.Net Standard 2.0 のどちらかです。
Visual Studio の最新バージョンを使っていれば、最新の C# コードが書けますが、DLL として読み込む場合は、このルールに従う必要があります。

.Net Framework と .Net Standard は別物です。
扱える機能も違いますし、対応している言語仕様も違います。

詳しくはこちらに記載されています。

1. PC 向けの DLL を作る。

PC 向けの DLL を作る場合、.Net Framework 4 を使って DLL を作ることができます。
4.6.1 とか、4.8 とか、小数点以下はなんでもOKです。

.Net Framework 4 なら、わりとモダンなコードも許されます。
PC 向けのプロジェクトなら、こちらを選んだ方が楽です。

DLL を作る前の準備

Visual Studio を使います。
コマンドラインで直接 C# コンパイラを実行すれば DLL を作れますが、Visual Studio を使った方が楽です。
無料ですので、ダウンロードしてインストールします。
※企業の場合は、5人まで無料版を使えます(2021/05/23現在)。
※企業の収益によって条件が変わるので注意。


インストールするのは上記の3項目です。
※英語が苦手な方は、「言語パック」から「日本語」を選択して日本語環境にすると良いです。
※UE4を使う場合は日本語環境にしていると出力ログが文字化けするので英語環境にしないといけなかったりします。

.Net Framework 4.8 SDK と Targeting Pack をインストールしていない場合はインストールします。
※Targeting Pack は必要ないかも知れません。

ウィンドウズ専用 DLL プロジェクトを作成

※Visual Studio の各UIはバージョンによってデザインが変わるので、スクリーンショットの内容とお手元の Visual Studio では内容が違うかも知れません。
※スクリーンショットは Visual Studio Community 2019 16.9.6 のものです。


Visual Studio 起動
新しいプロジェクトの作成


かなり沢山のテンプレートがあって探すのが面倒なので、上にある検索条件を入力します。

.net framework C# ウィンドウズ ライブラリ

を指定すれば、「クラスライブラリ(.NET Framework)」がトップに出てきます。


プロジェクト名 → てきとう
場所(プロジェクトの保存場所)→ てきとう
フレームワーク→ .NET Framework 4.8


プロジェクトを作成しました。

Unity の機能を使うには、UnityEngine.dll が必要です。
Unity のエディタ拡張を使うには、UnityEditor.dll が必要です。

必要に応じて、↑のどちらか、あるいは、両方をプロジェクトに追加します。
どちらも使用しないなら追加する必要はありません。

UnityEngine.dll の探し方


Unity Hub を起動してインストールを選択。
UnityEngine.dll を使いたいバージョンの上で右クリックして「エクスプローラーで表示」を選択。

エクスプローラーの検索ボックスに UnityEngine.dll と入力して検索。

複数ある場合はどれを使ってもOKです。
この UnityEngine.dll に対してパスを通してもいいですが、このバージョンの Unity をアンインストールするとパス参照が無効になるので、Visual Studio で作成した DLL のプロジェクトフォルダにコピペした方がいいです。
特に f1 を使っている場合は頻繁にインストールとアンインストールを繰り返すので。


見つけた UnityEngine.dll と UnityEditor.dll を Visual Studio のプロジェクトにコピペ


Visual Studio に戻る。
ソリューションエクスプローラーの参照を右クリック。
参照の追加を選択。


参照マネージャーの左ペインにある「参照」を選択して、右下にある「参照」ボタンを押す。


ファイル選択ダイアログが開くので、UnityEngine.dll と UnityEditor.dll をコピペしたフォルダに移動し、それらのファイルを選択して「追加」ボタンを押す。


参照マネージャーに戻って、UnityEngine.dll と UnityEditor.dll の左側にチェックマークが付いているのを確認して、OKを押す。
※チェックマークが付いていない場合はクリックしてチェックする。


ソリューションエクスプローラーの「参照」欄に UnityEditor と UnityEngine が追加されたのを確認。
※追加されてない場合はどこかで間違えてます。


UnityEngine.dll と UnityEditor.dll が正しく参照できるか確認します。

ソースコードの上の方に
using UnityEngine;
using UnitiEditor;
を追記してビルド

メニューのビルド→ソリューションのビルド
または
Ctrl + Shift + B


正しく参照できていればビルドが通ります。

ビルドに失敗する場合はソースコードに余計な文字が入っていないか、入力ミスをしていないか、参照に UnityEditor と UnityEngine が追加できているかを確認。
ソースコードに問題がない場合、一度 UnityEditor と UnityEngine を削除して(選択して Del キー)、追加し直します。
追加する際、パスが間違っていないか、一字一句丁寧に確認してください。


ビルドに成功していれば、DLL のプロジェクトフォルダ > bin > Debug に DLL があります。
これを Unity の Assets フォルダにコピペして使います。
※Release ビルドした場合は Release フォルダに DLL が作られます。

Unity で使ってみるヒャッハー!


ためしに、こんなコードにして DLL を作成します。
なんともヒャッハー味あふれる DLL が出来上がりました。


これでプレイすると、コンソールにヒャッハー!味あふれるログが出力されるはずです。

ヒャッハー!!
成功だあああああ!

.NET Framework 4 対応の DLL はウィンドウズ以外も、Linux x64 と Mac OS x64 でなら利用できます。
スマホやそれ以外のプラットフォームでは使えません(多分)。


2. マルチプラットフォームに対応した DLL を作る。

Visual Studio をインストールしていない場合は、「1. PC 向けの DLL を作る。」の手順に沿ってインストールして下さい。

ターゲットフレームワークを .Net Standard 2.0 に変更する。

2023/10/14 追記
以前の方法は Visual Studio 2022 では使えなくなったので、別の方法を紹介します。
.Net Standard 2.0 をインストールする必要がなくなりました。
以下では、プロジェクトのターゲットフレームワークを .Net Standard 2.0 に変更する方法を説明します。

1. プロジェクトのフレームワークは .Net Core 2.1 を選ぶ。

※タップまたはクリックすると大きい画像で確認できます。

.Net Core 2.1 を選ぶ理由
・.Net 6 や 7 と比べて、.Net Standard 2.0 への変更が楽。
・プロジェクト作成時に .Net Standard 2.0 を選べなくなった。

.Net Core 2.1 がない場合は、Visual Studio Installer の個別のコンポーネントでインストールできます。

※タップまたはクリックすると大きい画像で確認できます。

2. ソリューションエクスプローラーからプロジェクトをダブルクリックして、テキストエディタに表示する。

※タップまたはクリックすると大きい画像で確認できます。

3. TargetFramework を netstandard2.0 に変更する。

<TargetFramework>netstandard2.0</TargetFramework>

プロジェクトを保存し、Visual Studio を再起動。

以上!

フレームワークを .Net 6 や 7 にしていると、.Net Standard 2.0 に変更するのが面倒になるので、.Net Core 2.1 で作成するのをお勧めします。
過去に掲載していた方法
.Net Standard 2.0 は Visual Studio の NuGet パッケージマネージャーを使ってインストールできます。
インストールするには、Visual Studio のソリューションが必要なので、てきとうに作ります。
C# コンソールプロジェクトであれば、他のプロジェクト名や設定は全てデフォルト値で OK です。


C# コンソールプロジェクトをてきとうに作る。


全部デフォルト値で OK です。


メニュー → ツール → NuGet パッケージマネージャー → パッケージマネージャーコンソール
※GUI版でもインストールできますが、コンソールの方が簡単です。


パッケージマネージャーコンソールを選択すると、下にパッケージマネージャーコンソールが表示されます。

Install-Package NETStandard.Library -Version 2.0.0

をコピペして Enter を押す。


インストールに成功したらこんな表示になります。


プロジェクトを閉じる。
保存するか聞かれたら、上書き保存しておく。

これで .Net Standard 2.0 が使えるようになります。
使えなくなったら、同じ手順で再インストールします。

.Net Standard 2.0 用 DLL を作る。

Visual Studio を起動して、新しいプロジェクトの作成

2023/10/15 修正
ターゲットフレームワークは .Net Core 2.1 を選んでおきます。
プロジェクト作成後、前述の方法で、ターゲットフレームワークを .Net Standard 2.0 に変更します。

あとは、.Net Framework と同じです。
こんどは少し処理を変えてみます。

ビルドして、Unity にインポート

実行

「【Unity】C#スクリプトをDLL化する手順」への2件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です