こんにちは!オルトプラスでクライアントエンジニアをしているwatafukuと申します。

Unityでスマホ向けのアプリ開発をしているとiOS向けにネイティブプラグインを作成する必要が出てくることがあるかと思います。同じ流れでmacOS向けにネイティブプラグインを作成しようとしたところ、iOS向けとは実装方法がかなり異なっており対応に苦労しました。

そこで今回はmacOS向けのネイティブプラグインの実装方法についてご紹介させて頂ければと思います。

やりたいこと


ネイティブプラグイン

Unityでアプリ開発する際に、各プラットフォーム専用のプラグラミング言語で書いたコードや専用エディタで出力したライブラリを使用しないと実装できない機能があります。具体的な例としてはアプリのビルド番号を取得したいといったアプリの詳細情報の取得や、iOSのWidget機能を使用したいといったプラットフォーム独自の機能かつUnityの機能では実装できないもの等があります。

iOSであればObjective-Cで書いたコードやXcodeで作成したライブラリがネイティブプラグインに該当します。

下記Unityの公式ドキュメントのネイティブプラグインに関する説明になります。

Unity はネイティブプラグインをサポートしています。これは、C、C++、Objective-C などの言語で記述できるネイティブコードのライブラリです。プラグインを使用すると、C#で記述したコードからこれらのライブラリの関数を呼び出すことができます。この機能により、Unity はミドルウェアライブラリや既存の C/C++ コードと統合できます。

ネイティブのプラグインは、C# スクリプトが他のユーザースクリプトにアクセスする簡単な C インターフェースを提供します。また、ある低レベルのレンダリングイベントが発生したとき (例えば、グラフィックススデバイスを作成したときなど) に、ネイティブプラグインによってエクスポートされた関数を呼び出すことも可能です。

ネイティブプラグイン - Unity マニュアル


iOSとmacOSのネイティブプラグインの違い