在Monogame和UIKit之间切换

hal*_*dev 6 xamarin.ios ios monogame xamarin

我一直在寻找和搜索,但似乎无法找到适合我正在尝试做的解决方案,而且我几乎已经到了我必须问的问题是否有可能.

我正在使用Xamarin Studio开发iOS应用程序.我有一些不同的屏幕设置为UIViewControllers,他们运作良好.然而,应用程序的关键是一个游戏,我想使用Monogame,因为我之前使用它并喜欢使用它.

基本上,我必须从UIViewController切换到Game类.我可以通过简单地创建一个新的Game对象并调用Run()来做到这一点,但是当我需要并且将控制权返回给UIViewController时,我无法弄清楚如何离开游戏.

有没有人在应用程序中完成此操作?我已经尝试了所有我能想到的东西,但似乎没有什么可以做到的.它甚至可能吗?或者我是否需要重做它以便Monogame处理所有内容,甚至是应用程序中不属于实际游戏的所有其他内容?

谢谢!

jon*_*ers 5

我觉得有几种方法可以在不修改 MonoGame 的情况下工作。

第一个选项:

  1. 当你的应用程序启动时,Game像普通的 MonoGame 游戏一样开始你的课程
  2. 显示控制器以模态方式呈现在游戏顶部
  3. 要返回游戏,请关闭您的模态控制器

例如,要显示一个控制器:

var gameController = game.Services.GetService(typeof(UIViewController)) as UIViewController;
gameController.PresentViewController(new YourController(), true, null);
Run Code Online (Sandbox Code Playgroud)

然后你可以打电话DismissViewController来隐藏它。我用它来实现游戏中心的东西。

遗憾的是,如果您想UIKit 控制器之后显示 MonoGame 游戏,则必须修改 MonoGame 的工作方式。

另一种选择是基本上UIView在 MonoGame 的视图之上添加一个。像这样的东西:

var gameController = game.Services.GetService(typeof(UIViewController)) as UIViewController;
var view = new YourView();
gameController.View.AddSubview(view);
Run Code Online (Sandbox Code Playgroud)

如果你走这条路线,你需要添加一些逻辑来暂停游戏。我以前在 iAd 等中使用过这个选项。你也可以用其他控制器的视图来做这个,比如上面的标签控制器示例。