Unity IOS整合

对于需要将Unity3d集成到现有应用程序中的项目,我知道Unity充当UIApplicationDelegate。 我发现了一篇关于这个话题的有趣的文章,但是我不清楚如何以这种方式解决我的问题。 是否有可能从ViewController重新启动委托进程? 所以,当我从我的委托切换到viewController,我想导航回来然后初始化UIApplicationDelegate?

文章我发现: http : //alexanderwong.me/post/29949258838/building-a-ios-unity-uiview-uiviewcontroller

提前致谢

您是否尝试过使用Unity构build“标准”Unity iOS应用程序,然后将现有的代码集成到这个应用程序中?

当您从Unity构buildiOS时,Unity会自动在您的应用程序委托中粘贴一个钩子,方法如下:

- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions 

你可以在那里做其他的东西,但是在底部你应该看到重要的一行:

 [self startUnity:application]; 

所以你可以做的只是从didFinishLaunching方法中取出这条线,并把它放在任何你想要的地方。 你也想保留对UIWindow * Unity引用到应用程序委托的引用,所以你可以随意切换。

所以,我并不完全清楚你想要做的事情,但是我绝对推荐你首先从集成的Unity版本开始,然后从那里开始工作,或者至less要把它作为地图使用你自己的实现。

它已经有一段时间了,但是晚一点再好一点;)

你不能“重新启动”代表团的东西。 UnityAppController是一个AppDelegate,而不是一个ViewController。 但是你可以决定什么时候统一开始。 之后,Unity正在运行,您必须在UnityAppController中使用applicationDidEnterBackground调用(对于Unity 5之前的版本),或者只是调用setPause:true(使用Unity 5)来停止Unity渲染循环。 一旦你回到UnityViewController,不要忘记重新激活它。

对于“如何开始团结,当你想要”:无论是UnityAppController的子类和覆盖startUnity:(UIApplication *)应用程序与一个空的实现。 然后,一旦你想激活它,你可以调用[super startUnity ..]。

另一种方式是不要子类,而是创build自己的UnityAppController对象,并调用所有的方法(applicationDidFinsishLaunching等)。 然后你就等待初始化,直到你第一次需要统一。 但我会build议第一个选项。

你也可以在这里find更详细的描述我是怎么做到的: http : //www.markuszancolo.at/2014/05/integrating-unity-into-a-native-ios-app