ios - iPhone游戏设计中的单例/全局变量

标签 ios iphone variables global

我正在创建一个 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 提供 playergameController 属性(假设您有一些负责整个游戏的对象. 游戏 Controller 将通过实例化相应的 View Controller 、将 gameController 属性设置为自身并将 player 属性设置为当前玩家对象来启动每个新的“棋盘”。这样, View Controller 就不必从外部寻找玩家。当它的游戏部分完成时,它可以使用它的 gameController 属性向游戏发送消息 Controller 说:“我完成了,你可以转到下一 block 板”或任何合适的东西。

关于ios - iPhone游戏设计中的单例/全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8568919/

相关文章:

iphone - iOS UIScrollView clipToBounds = 没有检测到 subview

ios - 在 Darwin 通知中心回调上调用 UIAlert

iphone - 将合成(保留)属性设置为 nil 时的 EXC_BAD_ACCESS

iphone - Cocos2D 我应该为每个 Sprite 使用一张图像

c# - SQLite 中的变量

ios - 为什么 RxSwift Subscribe 仅在首次启动 viewWillAppear 中运行一次?

ios - 如何获取 iOS 设备硬件规范?

function - 在 MATLAB 中,哪些 ASCII 字符可以出现在函数名中?

sql-server - 加载平面文件/将文件名添加到表列

ios - 如何删除 Collection View 单元格之间的空间?