我一直在搜索和搜索,但似乎找不到适合我正在尝试做的事情的解决方案,而且我几乎到了不得不问这是否可能的地步。
我正在使用 Xamarin Studio 开发 iOS 应用。我有几个不同的屏幕设置为 UIViewControllers,它们运行良好。然而,该应用程序的关键是一款游戏,我想使用 Monogame,因为我以前使用过它并且喜欢使用它。
基本上,我必须从 UIViewController 切换到 Game 类。我可以通过简单地创建一个新的游戏对象并调用 Run() 来做到这一点,但是我不知道如何在需要时退出游戏并将控制权返回给 UIViewController。
有人在应用程序中这样做过吗?我已经尝试了所有我能想到的方法,但似乎没有任何效果。有可能吗?或者我是否需要重做以便 Monogame 处理所有事情,甚至是应用程序中不属于实际游戏的所有其他内容?
谢谢!
最佳答案
我觉得有几个 hacky 方法可以在不修改 MonoGame 的情况下工作。
第一个选项:
- 当您的应用启动时,像普通的 MonoGame 游戏一样启动您的
Game
类 - 在游戏顶部显示一个 Controller ,以模态方式呈现它
- 要返回游戏,关闭您的模态 Controller
例如,要显示一个 Controller :
var gameController = game.Services.GetService(typeof(UIViewController)) as UIViewController;
gameController.PresentViewController(new YourController(), true, null);
然后你可以调用 DismissViewController
来隐藏它。我用它来实现游戏中心的东西。
遗憾的是,如果您想在 UIKit Controller 之后显示您的 MonoGame 游戏,您将不得不修改 MonoGame 的工作方式。
另一种选择是在您的 MonoGame View 之上添加一个 UIView
。像这样:
var gameController = game.Services.GetService(typeof(UIViewController)) as UIViewController;
var view = new YourView();
gameController.View.AddSubview(view);
如果您选择这条路线,则需要添加一些逻辑来暂停游戏。我之前为 iAd 等使用过此选项。您也可以对其他 Controller 的 View 执行此操作,例如上面的选项卡 Controller 示例。
关于ios - 在 Monogame 和 UIKit 之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23463085/