首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确看待简单的游戏架构?

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

Stack Overflow用户
提问于 2011-06-25 21:54:42
回答 2查看 326关注 0票数 0

目前,我正在尝试用UIkit构建一个游戏,它包含三个MVC(目前):主应用程序委托类(带有UINavigationController属性)、菜单类(带有xib文件的UIViewController )和游戏内容类(也是带有xib文件的UIViewController)。显然,游戏需要加载游戏状态、准备游戏、暂停游戏和保存游戏状态的方法。IMHO,这些方法属于游戏内容MVC,所以我把它们放在那里。

现在,当过程变得平坦时,一切都很清楚:应用程序启动,导航控制器初始化,菜单弹出,你点击一下,游戏就开始了。但我正在尝试理解当游戏应用程序进入后台或终止时如何处理这种情况。我在主应用程序委托类文件中看到了"applicationDidBecomeActive“、"applicationWillResignActive”、"applicationWillTerminate“等很好的方法,我相信我的游戏应用程序架构应该以一种使用这些方法进行游戏准备的方式来设计。你的观点是,我必须在主应用委托类上有一个属性(指向游戏内容类)才能访问游戏准备方法吗?或者我必须重新设计我的游戏内容mvc?

更新:我的游戏内容类被分配、初始化并分配给主要游戏应用程序属性(用于applicationWillResignActive、applicationDidBecomeActive中的暂停、保存状态等)。主要的app委托类方法将处理所有准备工作。此外,我的menu类还指向(有一个属性)相同的游戏内容对象,因为我在菜单上有一个“新游戏”、“恢复游戏”按钮。现在,我应该如何从主菜单的“新游戏”按钮重新启动游戏?我想“删除”游戏内容对象,然后分配/初始化新的对象。但问题是,如果我从menu类释放旧的和分配/初始化新的游戏内容对象(并分配给menu类属性),那么我如何将对该对象的引用传递到主应用程序委托类?我必须从我的菜单对象属性中有一个指向应用程序主委托对象的指针吗?我想游戏内容应该是单件的……

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-25 22:05:39

您希望使用UIApplicationDelegate信号是非常正确的,这就是它们的用途。例如:

代码语言:javascript
复制
-(void)applicationDidBecomeActive:(UIApplication*)app {
  [my_game resume]; // ...or whatever
}
-(void)applicationWillResignActive:(UIApplication*)app {
  [my_game suspend]; // ...or whatever
}

您不需要在游戏内容中更改任何内容来适应这一点(除非您一开始就做了非常糟糕的工作!)。确保在-application:didFinishLaunchWithOptions:中初始化游戏内容。

票数 2
EN

Stack Overflow用户

发布于 2011-06-28 00:34:13

最近,我发现了一种方便的方法来获取对主应用程序委托对象的引用,以便重新启动(和启动)一个游戏玩法游戏内容MVC。下面是我的menu类的方法代码,用于重新启动/启动游戏内容:

代码语言:javascript
复制
-(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属性。我认为游戏内容所有者只是应用程序的主要代表就足够了。我不确定我的应用程序架构是否干净(主应用程序委托和菜单类对象都通过属性持有对相同游戏对象的引用),但我放弃了,因为我没有其他想法:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6478160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档