UnityでのDLL利用とアセンブリ参照の技術資料
この資料では、Unityプロジェクトに外部DLLを取り込む方法や、DLLを使ったクラスの利用について解説します。Unity特有のアセンブリ参照の仕組み、Plugins
フォルダーの役割、プラットフォームごとの対応についても説明します。
外部DLLの参照方法
Unityでは、外部DLLを直接プロジェクトに取り込む際、アセンブリ参照を明示的に設定する必要はありません。DLLファイルをUnityの Assets/Plugins
フォルダーに配置することで、Unityが自動的にそのDLLを参照します。
ステップ 1: Plugins
フォルダーの作成とDLLの配置
Assets/Plugins
フォルダーを作成:
- Unityプロジェクト内の
Assets
フォルダーにPlugins
という名前のフォルダーを作成します。
- DLLを
Plugins
フォルダーに配置:
- 外部でビルドしたDLLファイルをこの
Plugins
フォルダーにコピーまたはドラッグ&ドロップします。これで、Unityは自動的にDLLを参照します。 例:
/Assets
├── /Plugins
│ └── MyLibrary.dll <-- 外部でビルドされたDLLファイル
└── /Scripts
└── UseMyLibrary.cs <-- DLLのクラスを使用するスクリプト
- 複数のプラットフォームでの使用:
Plugins
フォルダーを使うことで、Windows、macOS、Androidなどのプラットフォームごとに異なるDLLを配置できます。後述するように、プラットフォームに依存したフォルダー分けを行い、各プラットフォームに最適なDLLを配置します。
DLLクラスの利用例
DLLが Plugins
フォルダーに配置された後は、Unityスクリプトからそのクラスやメソッドを通常のC#クラスと同じように利用できます。
ステップ 2: スクリプトでDLL内のクラスを利用
- DLLファイルを
Plugins
フォルダーに配置した後、スクリプト内でusing
キーワードを使ってDLL内の名前空間を参照します。
using UnityEngine;
using MyLibraryNamespace; // DLLで定義されている名前空間
public class UseMyLibrary : MonoBehaviour
{
void Start()
{
// DLL内のクラスをインスタンス化
MyClassFromDLL myClass = new MyClassFromDLL();
Debug.Log(myClass.GetMessage());
}
}
- このように、
MyLibrary.dll
に含まれるMyClassFromDLL
をインスタンス化してメソッドを呼び出すことができます。
フォルダー構成例
Unityプロジェクト内にDLLを取り込んだ後のフォルダー構成は次のようになります。Assets/Plugins
フォルダーにDLLを配置し、そのDLLが自動的に参照されます。
/Assets
├── /Plugins
│ └── MyLibrary.dll <-- 外部DLLファイル
└── /Scripts
└── UseMyLibrary.cs <-- DLLを利用するスクリプト
Plugins
フォルダーの役割
Plugins
フォルダーは、外部のDLLやネイティブライブラリをUnityに取り込む際に使用する特別なフォルダーです。このフォルダーに配置されたDLLは、Unityが自動的に検出し、プロジェクト内のスクリプトから参照できるようになります。
クロスプラットフォーム対応
Unityでは、WindowsやmacOS、iOS、Androidなど、複数のプラットフォームに対応するため、各プラットフォームごとに異なるDLLやネイティブライブラリを使用できます。Plugins
フォルダーの中で、プラットフォームごとにフォルダーを分けて管理します。
フォルダー構成例(複数のプラットフォーム対応)
/Assets
├── /Plugins
│ ├── /Windows
│ │ └── MyLibrary.dll
│ ├── /macOS
│ │ └── MyLibrary.dylib
│ └── /Android
│ └── MyLibrary.so
- Windowsフォルダー: Windows向けの
.dll
ファイルを配置します。 - macOSフォルダー: macOS向けの
.dylib
ファイルを配置します。 - Androidフォルダー: Android向けの
.so
ファイルを配置します。
Unityは自動的に適切なプラットフォーム用のDLLやライブラリを選択して使用します。
特殊なアセンブリ参照の必要性
通常、Plugins
フォルダーにDLLを配置するだけで、Unityは自動的にそのDLLを参照しますが、特定のシナリオでは追加の設定が必要になる場合があります。
エディター拡張でのDLL利用
Unityのエディター拡張やツールを作成している場合、DLLをエディターでのみ使用したいことがあります。この場合、Assets/Editor
フォルダーにDLLを配置します。
/Assets
└── /Editor
└── MyEditorLibrary.dll <-- エディター専用DLL
- エディター専用DLL: このDLLはエディターでのみ使用され、ゲームビルドには含まれません。
プラットフォームごとのDLL参照設定
特定のプラットフォームでのみDLLを使用する場合、Unityのインスペクターから対象のDLLを選択し、どのプラットフォームで有効にするかを設定できます。
Assets/Plugins
フォルダー内のDLLファイルを選択。- インスペクターウィンドウで
プラットフォーム設定
を指定し、使用するプラットフォームを選択します。
- 例えば、Windowsでのみ有効にしたい場合は、Windows用のオプションをチェックします。
まとめ
- UnityでのDLL参照は、
Assets/Plugins
フォルダーにDLLを配置することで自動的に行われます。手動でアセンブリの参照を設定する必要はありません。 - クロスプラットフォーム対応として、プラットフォームごとに異なるDLLやネイティブライブラリを
Plugins
フォルダー内で管理できます。 - エディター専用DLLや特定プラットフォーム向けのDLLを使用する場合は、インスペクターでプラットフォームごとの設定を行います。
これにより、Unityプロジェクトでの外部DLLの利用とアセンブリ参照の仕組みを理解し、プロジェクトで適用できるようになります。
この技術資料を参考に、外部DLLをUnityプロジェクトでスムーズに活用することができます。
ディスカッション
コメント一覧
まだ、コメントがありません