Unityのプラグイン機能を使って、iOS側のネイティブコードを実行する方法

UnityでiOS側の機能を使いたい場合、やり方がわからず苦労したのでそのメモです。例えばiOSの機能にあるWebView、アラート、もしくは自分で用意した関数などなど、Xcode側で実装したプログラムを動かせると自由度が大幅に上がります。
目次
Xcodeとの橋渡しをするCSファイルを作成
まずUnity側のPluginsフォルダ直下に.csファイルを作ります。このファイルがXcode内の関数との橋渡し役として使われるものになります。
using UnityEngine; using System.Runtime.InteropServices; public class Binding { [DllImport("__Internal")] private static extern void test_ (); public static void test () { if (Application.platform != RuntimePlatform.OSXEditor) { test_(); } } }
Bindingというクラスを作ります。あとでUnity Script内からBinding.test()と呼び出しをすれば、好きな関数を実行することができます。実行するプログラムはまた別ファイルに記述します。なお、実機以外からはこの関数は呼び出さないため、Application.platformでチェックを入れています。
実行ファイルを作成
次にPluginsフォルダ内に「iOS」という名前のフォルダを作ります。この名前は決められていて、Androidの場合は「Android」というフォルダを作ります。この名前でPluginsフォルダ直下に作らないと読み込まれませんので注意。
ここで作るファイルは、拡張子を.mmとして作ります。
#import <Foundation/Foundation.h> extern "C"{ void test_() { NSLog(@"okokok"); } }
関数test_内に必要なプログラムを記述します。Xcodeで実行するのと同じように、Objective-Cで好きなように記述することができます。
ここで作ったファイルはビルドすると、Xcodeで開くと分かるように、Libraryフォルダに格納されます。
実行するタイミングを決める
実行するには、Unity Script内で呼び出しますが、これは好きなタイミングで設定してください。例えば、ゲーム起動直後に呼び出したい時はStart内に記述します。
function Start () { Binding.test(); }
[sc name=”ios”][sc name=”engeneer”]
SHARE
スキルアップにMENTA
MENTAはいろんなプロに相談できるNo1メンターサービスです。
YouTubeでも発信中!
PROFILE

あらゆるスキルが学べるパーソナルメンターサービスMENTAの代表/個人開発が好きでこれまでに30個ほどのWEBサービスやアプリを作ってきました/福岡のWEB制作会社勤務→フリーランスエンジニア→法人立ち上げ→M&A億単位の売却を経験。 (詳しいプロフィール)