Unity As Libraryをざっくり使う(iOS)
概要
Unityで作った部分とObjective-C(Swift)で作ったネイティブアプリ部分を切り替える方法を最低限必要な機能の実装をざっくり共有します
最低限の機能
- Unity側を呼び出す
- Unity側を終了して、ネイティブへ戻る
Unityの画面の上にネイティブのボタンなどを載せる場合など相互に作用する方法は、
公式サンプル1を試してもらうと良いかと思います。
注意点としては、AppDelegateやViewCotrollerなどが1つのファイルにまとまっているため、
自分の実装に合わせて分割する必要あります。
公式サンプル1
できたこと
- ネイティブ側で、独自のWindowを作る必要はない。新規プロジェクトのStoryboardのまま使える
- ネイティブ側(xcode)のワークスペース作成がいらない
- UnityでビルドしたXcodeプロジェクトと、ネイティブ側のxcodeプロジェクトを同じフォルダに入れる必要はない
Unity側でやること
データをやり取りする場合は、ネイティブプラグインでやり取り部分のメソッド定義が必要そうだが、
Unityを表示、非表示するだけなら必要なさそう。
UnityでビルドしてXcodeプロジェクト出力し、DataフォルダをUnityFramework.frameworkに含める設定(参考文献参照)して、ビルドし、UnityFramework.frameworkを出力する。
ネイティブ側でやること
Unityで作成した”UnityFramework.framework”をXcodeプロジェクトに追加して、
Embeddedにする。
Unityの呼び出し及び、Unityおわったときの処理書く。
”公式サンプル1”を参考にし、一部抜粋して使う
処理
Unity側の処理
Unityは、呼び出されるだけなので、閉じる処理を実装するだけで基本良いと思う
Application.Unload()を呼び出すだけ。
ネイティブ側の処理
AppDelegateにUnityインスタンス初期化部分追加と
ViewController.mでunityDidUnloadメソッドを定義し、
Unity側がUnloadされたときに、UnityのViewを閉じる処理を書く
また、main.m、main.hでアプリ初期化時の設定?も保持しておく処理を書く
余分な部分あるとお思いますが、コード共有します
参考文献
ありがとうございます
Discussion