見出し画像

iOSネイティブアプリ内でUnityアプリのUIViewをaddする

前回、前々回とiOS - Unityの連携について書きました。

ここまでで大体どのように連携をするのかについては押さえられたものの、実務で利用するにはもう1ステップが必要です。

Unityが公式に公開しているサンプルでは、iOSプロジェクト内にUnityのviewを連携させることができるものの、表示はあくまで全画面を前提としたものでした。ですが、UnityFrameworkが提供するUnityAppControllerクラスでは、rootViewというプロパティが定義されており、こちらを直接利用すれば、任意のviewでUnityアプリの表示を行うことができます。

UnityFrameworkがアプリの初期化用に用意している runEmbeddedWithArgc 関数は、UnityAppControllerをインスタンス化します。​UnityAppControllerはUIWindowを持ち、そのUIWindowに自身のrootViewをaddしてmakeKeyAndVisibleします。

上記の回避を行う方法は以下の2つです。
1. StoryBoardベースでUIWindowの開発をする
2. AppDelegeteがdidFinishLaunchingWithOptionsした際に、runEmbeddedWithArgcする。
3. (StoryBoardベースの開発を行っていない場合)UnityFrameworkの起動後に任意のUIWindowをさらにmakeKeyAndVisibleする

どちらもwindowの裏側でunityFrameworkがインスタンス化された状態を作ることができるので、後は生成されたunityAppControllerからrootViewを任意のUIViewにaddすれば、全画面を前提としない画面開発を行うことができます。

これでより実践的にネイティブアプリ内にUnityを組み込むことが可能になりました。

この記事が気に入ったらサポートをしてみませんか?