Skip to content

Unity5でAndroidの共有ライブラリと文字列のやり取りをする

前回の Unity5でAndroidの共有ライブラリを使うでは、Unity から共有ライブラリを呼び出せるようにしました。
その後、思っていたよりも文字列のやり取りが分かり辛かったので、共有ライブラリと文字列をやり取りする手順もまとめておきます。

[環境]
Unity 5.1.0f3
Android NDK r10e

今回は、共有ライブラリ内にグローバル変数で char 配列を宣言しておき、この配列の値を更新/取得できるようにします。
Unity と共有ライブラリ間のやり取りを確認するだけなので、バッファオーバーランなどは確認しません。
まじめにやるなら、文字列更新毎に free と malloc をして、共有ライブラリの終了時に free するようにします。

  1. 共有ライブラリの拡張
    前回作成した共有ライブラリに機能を追加して、以下のようにします。

  1. Unity 側の C# スクリプトに文字列の読み書き処理を追加する

ここの対応ではまったのですが、以下の対応で落ち着きました。
 ・共有ライブラリから受け取る時には StringBuilder
 ・共有ライブラリへ渡す時にはマーシャリングして String
受け取る場合は、DllImport に CharSet.Auto も設定しておきます。

  1. 表示用テキストの設定を追加

Hierarchy にある Canvas にテキストを追加します。
ここでは名称は TextString としています。

20150830_HelloUnity_uGUI

Hierarchy から HelloUnity を選択して、 textString に Hierarchy から TextString をドラッグして関連付けをします。

  1. ビルドして動作確認

ビルド後、エミュレータにインストールして、3段目のテキストに「Hello Unity.」と表示されれば OK です。

Android 向けになにか作ろうとすると、いろんな事情で NDK を使わざるおえないことが多いのですが、NDK に対応しようとすると、ネイティブや Unity などなにを使うにしても分かりづらいのでなんとかしてほしい。
Android Studio が NDK に対応したので、今後は使い勝手がよくなっていくといいなぁ。

おしまい。

Be First to Comment

コメントを残す

メールアドレスが公開されることはありません。

*