ここでは、Tizen プラットフォームのための ネイティブコードプラグイン を説明します。
[DllImport ("PluginName")]
private static extern float FooPluginFunction();
#include <tizen.h>
EXPORT_API float FooPluginFunction();
プラグインを実装するのに C++ (.cpp) を使用する場合は、名前修飾の問題 を避けるために、関数を C リンケージで宣言してください。
extern "C" {
EXPORT_API float FooPluginFunction();
}
C で書かれたプラグインはその言語が名前修飾を使用しないため、これを使用する必要がありません。
ビルドしたら、共通ライブラリを Assets->Plugins->Tizen->libs フォルダーにコピーしてください。C# スクリプトで以下のように関数を定義すると、Unity は名前でライブラリを参照します。
[DllImport ("PluginName")]
private static extern float FooPluginFunction ();
PluginName にはファイル名のプレフィックス (‘lib’) や拡張子 (‘.so’) を含めないように気を付けてください。 すべてのネイティブコードメソッドを、追加の C# コードのレイヤーでラップします。このコードは、 Application.platform を確認し、アプリケーションを実際のデバイスで実行するときにのみ、ネイティブメソッドを呼び出します。エディターで実行するときは、ダミーの値が C# コードから返されます。プラットフォーム依存のコードコンパイルを制御するためには、プラットフォームの #define を使用します。
Unity は、UnitySendMessage を媒介に、限定的にネイティブコードからマネージコードへのコールバック機能をサポートしています。
UnitySendMessage("GameObjectName1", "MethodName1", "Message to send");
この関数は 3 つのパラメーターを持っています。ターゲットである GameObject の名前、そのオブジェクトに対して呼び出すスクリプトメソッド、呼び出されたメソッドに渡すメッセージの文字列、です。
以下の制限が知られています。
function MethodName(message:string)