Unity as a Library を Swiftでビルド

Unity as a Library (以下UaaL)をどうにかSwiftで使いたいのでなんとか方法を探していましたが、偉大な先人がいらっしゃいました。

大変ありがたいですね!

それでUaaLやり方を一通り説明している動画は以下にあるのですが、

それを文章としてまとめました。

1.https://github.com/hrkd/uaal-example を自分のMacにダウンロード
2.1を展開して、UnityProject/Assets/Plugins フォルダだけを自分のプロジェクトにコピー
3.自分のプロジェクトを普通にiOSビルド(iOS/フォルダ)
4.UaaLフォルダ(名前は何でも良い)を3と同じ階層に作る(UaaL/、iOS/ が並ぶ感じ)
5.1のNativeiOSApp/ をコピー
6.4のNativeiOSApp.xcodeprojを開く
7.UaaL/、iOS/ フォルダがあるところに、New Workspace→”both”を作る
8.6を閉じる
9.File->Add File to “both” で6のプロジェクトを追加
10.同様に3で作った自分プロジェクトを追加

フォルダ構成

11.NativeiOSAppのプロジェクト設定のGeneralのタブの「Framework, Library, and Embedded Content」の+をクリックして、UnityFramework.framework を追加

12.自分プロジェクトの方に戻ってLibraries/Plugins/iOS/ のNativeCallProxy.h のプロパティ(右側のタブ)のTarget Membership のUnityFrameworkにチェックを入れて「Public」
13.自分プロジェクトのDataフォルダのプロパティも12と同様、にUniryFrameworkにチェックしてPublicに

14.自分プロジェクトのMainApp/main.mm のmain関数の「この行を付け足す」部分だけ付け足す

int main(int argc, char* argv[])
{
    @autoreleasepool
    {
        id ufw = UnityFrameworkLoad();
        [ufw setDataBundleId:"com.unity3d.framework"]; // ←この行を付け足す
        [ufw runUIApplicationMainWithArgc: argc argv: argv];
        return 0;
    }
}

以上です!