🎃

【Unity/iOS】UaaL(Unity as a Library)のサンプルプロジェクトを起動する

2023/08/29に公開

恋愛メタバース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)
  • 特に署名の必要などはなかった

公式ドキュメントの通りに進める

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のエラーがでる。

Flamers Tech Blog

Discussion