如何正确看待简单的游戏架构?

| 目前,我正在尝试使用包含三个MVC(目前)的UIkit构建游戏:主应用程序委托类(具有UINavigationController属性),菜单类(具有xib文件的UIViewController)和游戏内容类(以及具有以下内容的UIViewController) xib文件)。显然,游戏需要用于加载游戏状态,准备进行游戏,暂停游戏以及保存游戏状态的方法。恕我直言,这些方法属于游戏内容MVC,所以我把它们放在了那里。 现在,一切顺利的时候一切都变得清晰了:应用程序启动,导航控制器初始化,菜单弹出,您单击,游戏开始。但是我试图了解当游戏应用进入后台或终止时如何处理情况。我在主应用程序委托类文件中看到了一些不错的方法,例如\“ applicationDidBecomeActive \”,\“ applicationWillResignActive \”,\“ applicationWillTerminate \”,并且我认为我的游戏应用程序体系结构应采用将这些方法用于游戏准备的东西。您有什么看法,我是否必须在主应用程序委托类上具有一个属性(指向游戏内容类)才能访问游戏准备方法?还是我必须重新设计游戏内容MVC? 更新:我的游戏内容类已分配,初始化并分配给了主游戏应用程序属性(用于在applicationWillResignActive,applicationDidBecomeActive ...中暂停,保存状态等)。主应用程序委托类方法将处理所有准备工作。此外,我的菜单类还指向(具有一个属性)相同的游戏内容对象,因为我在菜单上具有“新游戏”,“恢复游戏”按钮。现在,如何从主菜单“新游戏”按钮重新启动游戏?我想“删除”游戏内容对象,然后分配/初始化新对象。但是问题是,如果我要从菜单类释放旧的并分配/初始化新的游戏内容对象(并分配给菜单类属性),那么如何将对该对象的引用传递给主应用程序代表班?我是否必须从菜单对象属性中获得指向应用程序主委托对象的指针?我猜游戏内容应该有点单调...     
已邀请:
        您想要使用UIApplicationDelegate信号是完全正确的,这就是它们的用途。例如:
-(void)applicationDidBecomeActive:(UIApplication*)app {
  [my_game resume]; // ...or whatever
}
-(void)applicationWillResignActive:(UIApplication*)app {
  [my_game suspend]; // ...or whatever
}
您不需要更改游戏内容中的任何内容就可以适应这种情况(除非您一开始做得很糟糕!)。确保在ѭ1中初始化游戏内容。     
        最近,我找到了一种方便的方法来获取对主要应用程序委托对象的引用,以重新启动(和启动)游戏-游戏内容MVC。这是我的菜单类的方法代码,可重新启动/启动游戏内容:
-(IBAction) newGame{

  GameContentViewController *gcvc = [[GameContentViewController alloc] init];
  self.gameContentViewController = gcvc;
  MyAppDelegate *myApp = [[UIApplication sharedApplication] delegate];
  myApp.gameContentViewController = gcvc; //cia bus retain\'intas referencas
  [gcvc release];
  [self.navigationController pushViewController:self.gameContentViewController animated:YES];
}
我仅在主应用程序委托属性上保留游戏内容obj。包含对共享游戏对象的引用的菜单属性仅具有assign属性。我认为游戏内容所有者仅是主要的应用程序委托就足够了。我不确定我的应用程序体系结构是否干净(主应用程序委托和菜单类对象都通过属性保存对同一游戏obj的引用),但是我放弃了,因为我没有其他想法了:)     

要回复问题请先登录注册