UnityでのDLL利用とアセンブリ参照の技術資料

この資料では、Unityプロジェクトに外部DLLを取り込む方法や、DLLを使ったクラスの利用について解説します。Unity特有のアセンブリ参照の仕組み、Plugins フォルダーの役割、プラットフォームごとの対応についても説明します。

外部DLLの参照方法

Unityでは、外部DLLを直接プロジェクトに取り込む際、アセンブリ参照を明示的に設定する必要はありません。DLLファイルをUnityの Assets/Plugins フォルダーに配置することで、Unityが自動的にそのDLLを参照します。

ステップ 1: Plugins フォルダーの作成とDLLの配置

  1. Assets/Plugins フォルダーを作成:
  • Unityプロジェクト内の Assets フォルダーに Plugins という名前のフォルダーを作成します。
  1. DLLを Plugins フォルダーに配置:
  • 外部でビルドしたDLLファイルをこの Plugins フォルダーにコピーまたはドラッグ&ドロップします。これで、Unityは自動的にDLLを参照します。 :
   /Assets
   ├── /Plugins
   │   └── MyLibrary.dll  <-- 外部でビルドされたDLLファイル
   └── /Scripts
       └── UseMyLibrary.cs <-- DLLのクラスを使用するスクリプト
  1. 複数のプラットフォームでの使用:
  • Plugins フォルダーを使うことで、Windows、macOS、Androidなどのプラットフォームごとに異なるDLLを配置できます。後述するように、プラットフォームに依存したフォルダー分けを行い、各プラットフォームに最適なDLLを配置します。

DLLクラスの利用例

DLLが Plugins フォルダーに配置された後は、Unityスクリプトからそのクラスやメソッドを通常のC#クラスと同じように利用できます。

ステップ 2: スクリプトでDLL内のクラスを利用

  1. DLLファイルを Plugins フォルダーに配置した後、スクリプト内で using キーワードを使ってDLL内の名前空間を参照します。
using UnityEngine;
using MyLibraryNamespace;  // DLLで定義されている名前空間

public class UseMyLibrary : MonoBehaviour
{
    void Start()
    {
        // DLL内のクラスをインスタンス化
        MyClassFromDLL myClass = new MyClassFromDLL();
        Debug.Log(myClass.GetMessage());
    }
}
  1. このように、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を選択し、どのプラットフォームで有効にするかを設定できます。

  1. Assets/Plugins フォルダー内のDLLファイルを選択。
  2. インスペクターウィンドウで プラットフォーム設定 を指定し、使用するプラットフォームを選択します。
  • 例えば、Windowsでのみ有効にしたい場合は、Windows用のオプションをチェックします。

まとめ

  • UnityでのDLL参照は、Assets/Plugins フォルダーにDLLを配置することで自動的に行われます。手動でアセンブリの参照を設定する必要はありません。
  • クロスプラットフォーム対応として、プラットフォームごとに異なるDLLやネイティブライブラリを Plugins フォルダー内で管理できます。
  • エディター専用DLLや特定プラットフォーム向けのDLLを使用する場合は、インスペクターでプラットフォームごとの設定を行います。

これにより、Unityプロジェクトでの外部DLLの利用とアセンブリ参照の仕組みを理解し、プロジェクトで適用できるようになります。


この技術資料を参考に、外部DLLをUnityプロジェクトでスムーズに活用することができます。

Unity

Posted by hidepon