首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unity IOS集成

Unity IOS集成
EN

Stack Overflow用户
提问于 2012-09-26 15:35:27
回答 2查看 5K关注 0票数 3

对于一个项目,我需要将Unity3d集成到一个现有的应用程序中,我知道Unity就像一个UIApplicationDelegate。我发现了一篇关于这个主题的有趣的文章,但我真的不清楚如何才能以这种方式解决我的问题。是否可以从ViewController重新启动委派过程?那么,当我从我的代理切换到viewController时,我想要导航回来,然后再次初始化UIApplicationDelegate吗?

我找到的文章:http://alexanderwong.me/post/29949258838/building-a-ios-unity-uiview-uiviewcontroller

提前感谢

EN

回答 2

Stack Overflow用户

发布于 2013-03-06 04:13:45

你有没有尝试过使用Unity构建一个“标准的”Unity iOS应用程序,然后将现有的代码集成到其中?

当您从Unity为iOS构建时,Unity将自动在您的应用程序代理中粘贴一个钩子,方法如下:

代码语言:javascript
复制
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions

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

代码语言:javascript
复制
[self startUnity:application];

所以你能做的就是把这一行从didFinishLaunching方法中去掉,然后把它...你想去哪就去哪。您还需要在应用程序代理中保留对UIWindow* Unity绘制的引用,以便您可以随意切换。

所以,我不完全清楚你到底想做什么,但我绝对建议你首先从一个集成的Unity构建开始,然后从那里开始工作,或者至少在你想要滚动自己的实现时将其用作地图。

票数 2
EN

Stack Overflow用户

发布于 2015-04-27 01:25:42

已经有一段时间了,但迟到总比不到好;)

你不能“重启”委派的东西。UnityAppController是AppDelegate,不是ViewController。但是你可以决定在第一次启动unity的时候。在此之后,unity正在运行,您必须在UnityAppController中使用applicationDidEnterBackground调用(适用于Unity 5之前的版本),或者直接调用setPause:true (使用Unity 5)来停止unity渲染循环。只要你导航回UnityViewController,不要忘了重新激活它。

对于“当你想要时如何启动unity”:要么子类化UnityAppController,然后用一个空实现覆盖startUnity:(UIApplication*)应用程序。然后你调用超级startUnity..一旦你想激活它。

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

您还可以在这里查看我如何做到这一点的更详细的描述:http://www.markuszancolo.at/2014/05/integrating-unity-into-a-native-ios-app

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12596772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档