我正在创建一个带有几个其他原生屏幕的CocosSharp游戏,我将使用原生iOS UIViewController实现这些游戏。流程如下:
在应用启动时,我使用自定义主菜单创建UINavigationViewController和初始视图:
public override void FinishedLaunching(UIApplication app)
{
MainWindow = new UIWindow(UIScreen.MainScreen.Bounds);
var rootViewStoryboard = UIStoryboard.FromName("GameMenu", null);
var rootView = rootViewStoryboard.InstantiateViewController("GameMenu");
var navigationController = new UINavigationController(rootView);
MainWindow.RootViewController = navigationController;
MainWindow.MakeKeyAndVisible();
}
public partial class GameMenu : UIViewController
{
public GameMenu(IntPtr handle)
: base(handle)
{
}
public override void ViewDidLoad()
{
base.ViewDidLoad();
btnStartGame.TouchUpInside += (sender, e) => NavigationController.PresentViewController(new GameScene(), false);
}
}
其中一个动作导致另一个UIViewController(模态),其中创建了CocosSharp游戏:
public partial class GameScene:UIViewController { 公共GameScene() { }
public override void ViewDidLoad()
{
base.ViewDidLoad();
_application = new CCApplication();
_application.ApplicationDelegate = new GameAppDelegate();
_application.StartGame();
_application.MainWindow.DisplayStats = true;
OnStopGame();
}
}
最后在某些事件中(在我的情况下,在5秒内)我试图完成游戏并返回主菜单:
public async Task OnStopGame()
{
await Task.Delay(5000);
_application.ExitGame();
NavigationController.DismissViewController(false, null);
}
结果我得到空黑屏,背景音乐继续运行,没有显示主菜单。
我应该如何正确地从CocosSharp游戏导航到本机控制器并返回?他们可以同时生活吗?