Version: 2017.2
Unity iOS が現在サポートしていない機能
Tizen Emulator

Tizen 用のプラグインをビルド

ここでは、Tizen プラットフォームのための ネイティブコードプラグイン を説明します。

Tizen 用のネイティブプラグインを使用したアプリケーションの作成

  1. 以下のように C #ファイルで extern メソッドを定義します。
[DllImport ("PluginName")]
private static extern float FooPluginFunction();
  1. Tizen のビルドターゲットにエディターを設定します
  2. Tizen IDE から Tizen Native Shared Library プロジェクトを作成します
  3. マネージコードから使用するすべてのネイティブ関数の定義には、EXPORT_API 属性を加える必要があります。EXPORT_API マクロにアクセスするために、ヘッダーの tizen.h も加える必要があります。
#include <tizen.h>

EXPORT_API float FooPluginFunction();

プラグインを実装するのに C++ (.cpp) を使用する場合は、名前修飾の問題 を避けるために、関数を C リンケージで宣言してください。

extern "C" {
  EXPORT_API float FooPluginFunction();
}

C で書かれたプラグインはその言語が名前修飾を使用しないため、これを使用する必要がありません。

C# からプラグインを利用する

ビルドしたら、共通ライブラリを Assets->Plugins->Tizen->libs フォルダーにコピーしてください。C# スクリプトで以下のように関数を定義すると、Unity は名前でライブラリを参照します。

[DllImport ("PluginName")]
private static extern float FooPluginFunction ();

PluginName にはファイル名のプレフィックス (‘lib’) や拡張子 (‘.so’) を含めないように気を付けてください。 すべてのネイティブコードメソッドを、追加の C# コードのレイヤーでラップします。このコードは、 Application.platform を確認し、アプリケーションを実際のデバイスで実行するときにのみ、ネイティブメソッドを呼び出します。エディターで実行するときは、ダミーの値が C# コードから返されます。プラットフォーム依存のコードコンパイルを制御するためには、プラットフォームの #define を使用します。

ネイティブコードから C #/ JavaScript をコールバックする

Unity は、UnitySendMessage を媒介に、限定的にネイティブコードからマネージコードへのコールバック機能をサポートしています。

UnitySendMessage("GameObjectName1", "MethodName1", "Message to send");

この関数は 3 つのパラメーターを持っています。ターゲットである GameObject の名前、そのオブジェクトに対して呼び出すスクリプトメソッド、呼び出されたメソッドに渡すメッセージの文字列、です。

以下の制限が知られています。

  1. 次のシグネチャに対応するメソッドのみ、ネイティブコードから呼び出すことができます。 function MethodName(message:string)
  2. UnitySendMessage への呼び出しは非同期であり、1 フレーム遅延します。
Unity iOS が現在サポートしていない機能
Tizen Emulator