🎃
【Unity/iOS】UaaL(Unity as a Library)のサンプルプロジェクトを起動する
恋愛メタバースMemoriaを開発するFlamers CTOの設楽(だーら)です。
今回はモバイルアプリ上でネイティブアプリと組み合わせてUnityを起動するUaaLについて、サンプルプロジェクトの起動を通して技術調査をいたしました。
はじめに
概要
- モバイルのネイティブアプリにUnityビルドを組み込む仕組みであるUnity as a Library(UaaL)のサンプルプロジェクトを起動する
- 今回はiOS版のみをまとめる(別記事でAndroidについても記述)
- (追記)XCodeのSimulatorは実機との挙動の違いなどがあり、極力使わないことにしていきたいと思いました。Simulatorを飛ばして実機で確認したほうがよさそうです。
サンプルプロジェクト
ゴール
- XCodeのSimulatorで下の画像のように、ネイティブアプリ上でUnityが動いている姿を見たい
環境
- Unity 2022.3.8f1
- XCode 14.3
実行手順
Unityビルド
- ビルドプラットフォームをiOSにする
- Project Settingsで、Target SDKをSimulator SDKに変更する(実機の場合はDevice SDK)
- 特に署名の必要などはなかった
公式ドキュメントの通りに進める
-
https://github.com/Unity-Technologies/uaal-example/blob/master/docs/ios.md
-
- Add UnityFramework.frameworkのremove UnityFramework.framework from the list (select it and press - )では必ずXCodeが落ちた。
-
arm64関係のエラーに対処する(Simulatorの場合のみ)
- 通常通りシミュレーターを起動すると、緑のinitボタンを押した段階で以下のようなエラーが出力される。
mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64'
- また、Show Unityのグレーのボタンを推しても"Unity is not initialized"と表示される
- 以下の画像の様に、NativeiOSAppのBuild Settingsで、Excluded Architectureを設定する
- この状態で再度起動すると最初にはった画像のようにUnityが展開される🎉
トラブルシューティング
-
'UnityFramework/UnityFramework.h' file not found
のエラーがでる。- NativeiOSAppとUnity-iPhoneの順番の問題の可能性がある?
- はじめから、NativeiOSAppをUnity-iPhoneの上に来るようにしたら問題が発生しなくなった。
-
Undefined symbol: OBJC_CLASS$_UnityFramework
のエラーがでる。-
~/Library/Developer/Xcode/DerivedData
の中の中間生成物が悪さをしている可能性がある。自分の場合はこのディレクトリごと削除すると問題が解決した。 - 参考: https://dev.classmethod.jp/articles/remove-xcode-derived-data/
-
恋愛メタバースMemoriaを運営するFlamers, Inc.のTech Blogです。 Unity / C# / VR系の記事を中心に投稿します。 常時積極採用中!wantedly.com/companies/flamers
Discussion