SwiftUIでUnity as a Libraryを使う最小実装

botman_orange Unity

Xcode-14.3 iOS-16.0 UnityHub-2.4.3 Unity-2020.3.6f1

はじめに

SwiftUI で Unity as a Library(以下 UaaL)を使う方法についてです。実際のアプリに組み込むにはもう少し工夫が必要かもしれませんが、とりあえずは表示までできました。

UaaL とはネイティブアプリで Unity の View を表示できたりするやつです(たぶん)。

完成品はこんな感じ。

手順

手順は下記です。

  1. Unity で iOS ビルド
  2. UnityFramework.framework 作成
  3. iOS アプリに UnityFramework.framework 追加
  4. iOS アプリに UnityFramework.framework の呼び出し処理追加

こちらの記事を参考にしました。

Unity で iOS ビルド

適当な Unity プロジェクトをビルドします。

unity_build

UnityFramework.framework 作成

  1. Unity-iPhone.xcodeproj を Xcode で開く。
  2. 公式サンプルから NativeCallProxy.h と NativeCallProxy.mm をコピー。
  3. Libraries/Plugins/iOS に上記ファイルを配置(Unity プロジェクト側にもとから追加していてもいいです)。
  4. Data の Target Membership の UnityFramework にチェック。
    data
  5. NativeCallProxy.h の Target Membership の UnityFramework を Public に変更。
    header
  6. 実機を選んで UnityFramework をビルド。
    build
  7. Products 配下に UnityFramework.framework が作成される(Full Path の矢印をクリックすれば Finder で開けます)。
    framework

iOS アプリに UnityFramework.framework 追加

  1. 適当な iOS アプリのプロジェクトに上記で作成した UnityFramework.framework を追加。
  2. Targets > General > Frameworks, Libraries, and Embedded Content の + から UnityFramework.framework を追加(Add Files... から追加できます)。
    add_framework
    add_framework_2

iOS アプリに UnityFramework.framework の呼び出し処理追加

  1. Bridging-Header ファイルを追加(Objective-C ファイルを追加すれば自動で作成されます)。
  2. Bridging-Header に下記記載。

  3. 下記のクラス追加。

こちらの記事の処理とほぼ同じです。

[Swift] Unity as a LibraryをSwiftから呼ぶ

iOS アプリに UnityFramework.framework の呼び出し処理追加

  1. App に下記処理追加。

  2. UnityView 追加。

  3. ContentView に表示処理追加.

これで完成!と思いきやこれでビルドすると LaunchScreen.storyboard がないよというエラーが出ます。

  1. LaunchScreen.storyboard を追加。
  2. TARGETS > Info > Custom iOS Target Properties から Launch Screen 削除。
  3. 上記に Launch screen interface file base name を追加(value は LaunchScreen にする)。
    info

これで完成!

おわりに

なんか周りに余白ができていますが SwiftUI を使って Unity の画面を表示することができました🎉

参考サイト

Amazon.co.jp

コメント

  1. […] SwiftUIでUnity as a Libraryを使う最小実装 […]

タイトルとURLをコピーしました