HoloLens 2でManaged plug-insを使う

はじめに

Unityについて調べていたら、Managed plug-insという機能を見つけました。

docs.unity3d.com

C#で作ったライブラリをUnityに取り込んで利用できるようです。

また、以下のようにHoloLens(初代)で利用している記事もありました。

blog.okazuki.jp

satoshi-maemoto.hatenablog.com

これをHoloLens 2でも使えるか気になったので、本記事で簡単に検証してみようと思います。

環境

Unity 2020.3.26f1
MRTK 2.7.3
Visual Studio Professional 2022 version 17.0.6

手順

まず最初にライブラリを作ります。
Visual Studioで新しいプロジェクトを作成します。利用するテンプレートは「クラスライブラリ」です。

プロジェクト名、保存場所、ソリューション名を決めた後にフレームワークを選択する画面が出てくるので、「.NET Standard 2.0」を選択してプロジェクトを作成します。

プロジェクトができたら実際に処理を行うクラスを作成します。今回は足し算するだけのものを作りました。

namespace ClassLibrary1
{
    public class Class1
    {
        public int AddNumbers(int num1, int num2)
        {
            return num1 + num2;
        }
    }
}

ソリューションをビルドをすると<project folder>/bin/Debug/netstandard2.0/フォルダ内にDLLファイルが作成されています。

次にUnityのプロジェクトを作り、Assetフォルダの配下に先ほど作成したDLLファイルを配置します。これでライブラリをUnityから利用できるようになります。
Unityでの動作確認用に以下のようなスクリプトを作ります。

using ClassLibrary1;  //ライブラリのnamespace
using UnityEngine;

public class testScript : MonoBehaviour
{
    Class1 lib;

    private void Start()
    {
        lib = new Class1();  //利用するクラスのインスタンス生成

    }

    public void Add()
    {
        //メソッドの呼び出し
        var num = lib.AddNumbers(1, 2);

        //以下、アプリのUIに結果を表示する処理を書く
    }
}

あとはボタンを押すなどしてAddメソッドを呼び出してあげれば準備完了です。実行すると「3」と表示されるはずです。


Unityエディタ上で動きました。



HoloLen 2実機でも動きました。

感想

C#で行う処理をUnity以外(WEBアプリなど)で使いたい場合にManaged plug-insを使うと効率的に開発できそうですね。
あとはテストもやりやすそうだなと思いました。

投稿者プロフィール
古川 貴浩

古川 貴浩

HoloLens 2アプリケーションの開発をしています。

執筆記事一覧