前回まではUnityだけで作れるものについて書いていきました。今回はUnityの機能ではなく、iOSの機能を使う方法について書いていきます。
iOSの機能を使うための準備
iOSの機能を使うためには、iOSで動作するメソッドなどを書いたプラグインを作成する必要があります。これをUnityではネイティブプラグインと読んでいます。ネイティブプラグインを作るためには、まずAssetsフォルダの中に、Pluginsフォルダを作成し、その中にiOSフォルダを作成します。
この作成したiOSフォルダの中にネイティブプラグインを作成するのですが、iOSで動作させるために、拡張子が.mmのスクリプトを作成する必要があります。拡張子が.mmであれば名前は何でも構いません。ちなみにネイティブプラグインは実機を動かした時にしか動作しないので、iOSのデバッグをエミュレータで行っている場合は注意が必要です。
ネイティブプラグインを作成する
作成した.mmファイルにプラグインを記述していきます。呼び出したいメソッドの前にextern “C”を追加し、名前修飾の問題を避けます。その後に普通にメソッドを記述していきます。今回は例としてアラートを表示します。
1 2 3 4 5 6 7 8 9 |
extern "C" void showAlertView() { UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"UIAlertControllerStyle.Alert" message:@"iOS Alert" preferredStyle:UIAlertControllerStyleAlert]; [alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { }]]; [UnityGetGLViewController() presentViewController:alertController animated:YES completion:nil]; } |
これでネイティブプラグインは終了です。
スクリプトからネイティブプラグインを呼び出す
スクリプトから呼び出すためには、まず名前空間にSystem.Runtime.InteropServicesを追加します。そしてネイティブプラグインで記述したメソッドを宣言します。あとはそのメソッドを叩けばネイティブプラグインが実行されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
using UnityEngine; using System.Collections; using System.Runtime.InteropServices; public class test : MonoBehaviour { [DllImport ("__Internal")] private static extern void showAlertView (); void Start () { showAlertView (); } } |
実際にアプリが立ち上がるとアラートが表示されます。
今回は引数や返り値はありませんが、両方つけることも出来ます。
終わりに
今回はiOSの機能を呼び出すためのネイティブプラグインの作り方について書きました。ゲームのようなものを作るときは余り使いませんが、SNSへシェアしたりするときなどは使うことになります。そこまで変な設定もなく作れるのですが、実機で動かさないとテストが出来ないことが少し不便です。
次回はAndroidの機能を呼び出す方法について書いていきます。
では、また。