2

次の 2 つの部分で構成される iPad 用のアプリを作成しています。

  1. ココアで構築されたユーザー インターフェイス
  2. ユニティのシーン

そして、両方の部分を統合し、相互に通信させる方法を見つける必要がありました。

多くの調査の後、私が見つけた最良のアプローチは、このチュートリアルに基づくものでした

基本的に、アプリ デリゲートには 2 つの UIWindows があります。1 つはすべてのココア ビュー コントローラーの階層を保持し、もう 1 つは Unity ウィンドウです。表示するウィンドウを切り替えたいときは、[someWindow makeKeyAndVisible]; を呼び出すだけです。ターゲット ウィンドウで。ココア側から Unity に通信する必要があるときは、UnitySendMessage を呼び出します。

このアプローチは最初はかなりうまくいくように見えますが、アプリで遊んでいて、UIWindows を数回切り替えた後、UnitySendMessage への呼び出しがランダムに効果を生成しなくなり、Unity シーンがフレームの更新を停止し、さらにはウィンドウはもう変わらず、アプリが爆発するまで...

基本的に、私が知りたいことは次のとおりです。

  1. これは、Unity ビューと cocoa ビューを統合するための最良のアプローチですか? これを行う「公式」の方法はありますか?徹底的なチュートリアルやサンプル コードを教えてくれる人はいますか?
  2. これが最善のアプローチであるため、しばらくすると失敗し始める理由について何か考えはありますか? ウィンドウを変更する際に注意することはありますか? (メモリ管理? Unity スレッドの一時停止?)

注: Unity Pro を使用しています。xcode4/ios6 と xcode5/ios7 の両方を試しましたが、動作は同じです。

どんな助けでも大歓迎です。

4

1 に答える 1

3

AteBit で得た解決策は、アプリケーションの ObjC 部分にそのデータを SQLite データベースに格納させることです。Unity アプリは常にそのデータベースをポーリングして変更を自然に求めているため、透過的な (しゃれた意図のない) UI ソリューションに最適です。

UI をデータから完全に切り離して、おいしいものを手に入れましょう。

アップデート

同様に、Unity 内で PlayerPrefs.Get# // Set# を使用してアクセスできる NSUserDefaults システムを使用できます。

于 2013-10-03T15:56:43.163 に答える