LoginSignup
7
9

More than 5 years have passed since last update.

HoloLens用のUnity Native Pluginの作り方

Last updated at Posted at 2018-05-29

はじめに

HoloLens用にUnityのネイティブプラグインを作成するためのサンプルプロジェクトを作りました。
UnityEditor用DLLのプロジェクトとHoloLens(UWP)用DLLのプロジェクトを一つのソリューションにまとめた形になっています。
プロジェクト設定が非常に面倒だったので、今後はこのプロジェクトをテンプレートとして流用していきたいです。

サンプルプロジェクト

開発・検証環境

  • Visual Studio 2017 (Version 15.6.6)
  • Unity 2017.4.2.f2

Native Plugin の作り方

NativePluginSampleForHoloLensのソリューションファイルを開いてビルドします。
流用する場合はソースコードを修正してからビルドします。

解説

ソリューション構成は以下の通りです。

  • NativePlugin -> ソースコード管理用の共有プロジェクト
  • NativePluginForEditor -> UnityEditorでの実行時に利用されるDLL用のプロジェクト
  • NativePluginForUWP -> HoloLens実機での実行時に利用されるDLL用のプロジェクト

Solution.png

ソースコードは共有プロジェクトの「NativePlugin」に含まれていますが、メインとなるコードは「NativePlugin.h」と「NativePlugin.cpp」です。今回のサンプルでは2つの整数の和を計算する単純な関数を実装してあります。

NativePluginHeader.png

NativePluginSource.png

ビルド方法

  1. Visual Studio 2017で「NativePluginSampleForHoloLens.sln」を開く

  2. ビルド -> バッチビルド を選択
    Build01.png

  3. ビルドするプロジェクトを選択してビルドを実行する。HoloLens(UWP)用DLLとUnityEditor用DLL(32bit/64bit)を選択する。
    Build02.png

ビルドが成功すると3つのDLLが生成されます。

  • UnityEditor(32bit)用DLL
    -> NativePluginSampleForHoloLens\Release\NativePluginForEditor\NativePlugin.dll
  • UnityEditor(64bit)用DLL
    -> NativePluginSampleForHoloLens\x64\Release\NativePluginForEditor\NativePlugin.dll
  • HoloLens(UWP)用DLL
    -> NativePluginSampleForHoloLens\Release\NativePluginForUWP\NativePlugin.dll

Unityプロジェクトへのプラグインの追加

作成したDLLをPluginsフォルダに配置して、インポート設定を変更します。

HoloLens(UWP)用DLL

「Plugins\WSA\x86」に配置する。設定は以下の通り。
PluginSettingUWP.png

UnityEditor(64bit)用DLL

「Plugins\x64」に配置する。設定は以下の通り。
PluginSettingEditor64.png

UnityEditor(32bit)用DLL

「Plugins\x86」に配置する。設定は以下の通り。
PluginSettingEditor32.png

Native Pluginの処理をスクリプトから呼び出す

DLLをインポートしたクラスを作成する。
Script01.png

上記のクラスから処理を呼び出す。
Script02.png

まとめ

HoloLens用にUnityのネイティブプラグインを作成するためのサンプルプロジェクトを紹介しました。
ネイティブプラグインで実装した処理をUnityで実行する方法についても紹介しました。

7
9
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
7
9