1

我正在创建一个带有几个附加本机屏幕的 CocosSharp 游戏,我将使用本机 iOS UIViewController 来实现它们。流程如下:

  1. 在应用程序启动时,我正在使用自定义主菜单创建 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);
        }
    }
    
  2. 其中一个操作会导致另一个 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();
    }
    

    }

  3. 最后在某些事件上(在我的情况下为 5 秒),我试图完成游戏并返回主菜单:

    public async Task OnStopGame()
    {
       await Task.Delay(5000);
       _application.ExitGame();
       NavigationController.DismissViewController(false, null);
    }
    

结果我得到空的黑屏,背景音乐继续运行,没有显示主菜单。

我应该如何正确地从 CocosSharp 游戏导航到本机控制器并返回?他们可以平行生活吗?

4

0 回答 0