【Unity】ネイティブプラグインを作る
ネイティブプラグインを作ってみる
請負やらスポットのお仕事をしているため、自分の作業時間が全く取れていないため焦っています。
スポットは、UNITYやらドキュメント化やらPJ管理の手法やら様々な技術・情報提供をしていますが、ほぼお金に代わっていないのですよ。でも、自分のためでもあるし付き合いなんでね。大事にしていきます。
さて、UNITYからNugetのパッケージをアクセスしたいのです。沢山のツールがたくさんあり、サクッと使えると便利なのですが、手動で組み込みをする必要があり、かなりいけてません。
なので、NugetのラッパーDLLをかましてしまえば、Nugetでパッケージ管理できるので楽なのかな?と思い実験してみます。今回は、Nugetは、使いません。あくまでDLLプラグインの作成実験になります。
現時点でのLTSを使って確認をします。様々なプラットフォームに対応したいので.NetCORE2.2を使います。VS2019に.netCore2.2を導入は事前にすませてください。
.netCoreではなく.NET Standardを使います。
Unity:Unity2018.4.16
VisualStadio2019 C#
.Net Core2.2
VSプロジェクトを作る
下記の通り、クラスライズラリ(.Net Standerd)を選択しましょう。.Net StanderdのDLLは、
PluginTestとしました。
プラグイン側で、UINITYの型を扱いたくなると思います。なのでUnityEngineを組み込みます。
参照の追加を行います。
プロジェクト→参照の追加
参照マネージャより追加します。
追加するファイル:Windowsの場合は、
C:\Program Files\Unity\Hub\Editor\2018.4.16f1\Editor\Data\Managed\UnityEngine.dll
となります。
MACも調べればすぐにわかると思いますが、VS2019の操作が若干異なると思います。
下記のようにPluginTestを作りました。ビルドをして動作確認をします。
using System;
using UnityEngine;
namespace PluginTest
{
public class PluginClass
{
public static String Helloworld(Vector3 sample)
{
float x, y, z;
x = sample.x;
y = sample.y;
z = sample.z;
string t = "HelloWorld " + " X=" + x.ToString()
+ " Y=" + y.ToString()
+ " Z=" + z.ToString();
return t;
}
}
}
PluginsのフォルダにCOPYします。
プラグインインスペクターにこんな感じで表示されます。
次にUnity上で動作確認します。
using UnityEngine;
using PluginTest;
public class TestUseDLL : MonoBehaviour
{
private void Start()
{
Vector3 test = new Vector3(10, 20, 30);
Debug.Log("TEST=" + PluginClass.Helloworld(test));
}
}
最後に
とりあず、動作するところまでできました。
まだ動作確認していませんが、.Net Core2は、コンパイルの仕方をかえればマルチプラットフォームなため、Windows以外でも動作するはずです。
今後、検証してみましょう。