我正在创建一个 iPhone 游戏,其中角色在不同的 View 之间移动,因此每个 View 本身本质上都是一个新游戏。但是现在我想创造健康,所以如果健康在一个 View 中下降到 5 hp,那么当他们改变到不同的 View 时,健康仍然是 5。我做了一些研究,听起来我需要的是单例或全局变量。但我所看到的一切对我来说毫无意义。我的两个应用程序委托(delegate)中都没有任何内容,而且我没有使用任何框架,如 cocos2d 或 OpenGLES。发布代码现在似乎不起作用,所以如果你能告诉我你需要看什么代码来帮助你回答我的问题。
最佳答案
I've done some research and it sounds like what I need is a singleton or a global variable.
您需要的是在 View Controller 之间共享您的角色数据。单例是共享数据的一种方式;它在概念上非常简单,但往往会带来不幸的后果。参见 What is so bad about singletons?讨论其中一些后果。参见 Alternatives to Singletons对于其他一些方法。
如果您确实决定使用单例(不推荐),您应该谨慎选择该对象的角色。例如,您的第一个想法可能是创建一个代表玩家或角色的单例。但是,这意味着您的游戏中只能有一个玩家或角色。更好的选择是创建一个玩家管理器,您可以使用它来访问当前玩家。
更好的选择是放弃单例并为每个 View Controller 提供 player
和 gameController
属性(假设您有一些负责整个游戏的对象. 游戏 Controller 将通过实例化相应的 View Controller 、将 gameController
属性设置为自身并将 player
属性设置为当前玩家对象来启动每个新的“棋盘”。这样, View Controller 就不必从外部寻找玩家。当它的游戏部分完成时,它可以使用它的 gameController
属性向游戏发送消息 Controller 说:“我完成了,你可以转到下一 block 板”或任何合适的东西。
关于ios - iPhone游戏设计中的单例/全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8568919/