ios - 在 Monogame 和 UIKit 之间切换

标签 ios xamarin.ios xamarin monogame

我一直在搜索和搜索,但似乎找不到适合我正在尝试做的事情的解决方案,而且我几乎到了不得不问这是否可能的地步。

我正在使用 Xamarin Studio 开发 iOS 应用。我有几个不同的屏幕设置为 UIViewControllers,它们运行良好。然而,该应用程序的关键是一款游戏,我想使用 Monogame,因为我以前使用过它并且喜欢使用它。

基本上,我必须从 UIViewController 切换到 Game 类。我可以通过简单地创建一个新的游戏对象并调用 Run() 来做到这一点,但是我不知道如何在需要时退出游戏并将控制权返回给 UIViewController。

有人在应用程序中这样做过吗?我已经尝试了所有我能想到的方法,但似乎没有任何效果。有可能吗?或者我是否需要重做以便 Monogame 处理所有事情,甚至是应用程序中不属于实际游戏的所有其他内容?

谢谢!

最佳答案

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

第一个选项:

  1. 当您的应用启动时,像普通的 MonoGame 游戏一样启动您的 Game
  2. 在游戏顶部显示一个 Controller ,以模态方式呈现它
  3. 要返回游戏,关闭您的模态 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/

相关文章:

c# - 使用 Httpclient 信任自签名证书

xamarin - MvvmCross 4 和 Xamarin.iOS -> 使用 Storyboard时如何从 Core 加载 View Controller ?

forms - SkiaSharp:如何绘制如图所示的弧

iOS 应用程序启动但总是在应用程序打开前立即终止

c# - 找不到类型或命名空间名称 'XmlDocument'。您是否缺少程序集引用?

ios - 协议(protocol) 'View' 只能用作通用约束,因为它具有 Self 或关联类型要求

objective-c - Urban Airship - 使用 NSURLConnection 发送推送

objective-c - Objective-C:触摸绘图不透明度

c# - Xamarin iOS(WebClient IPv6 拒绝)

c# - 从 C 到 C#(iOS 到 Unity)引发事件