我正在创建一个带有几个附加本机屏幕的 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 游戏:
公共部分类 GameScene : UIViewController { public 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 游戏导航到本机控制器并返回?他们可以平行生活吗?