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/

相关文章:

ios - iOS 上使用 Google 跟踪代码管理器的非屏幕浏览事件

ios - 具有自动布局和部分重新加载的 UITableViewHeaderFooterView 子类不能很好地协同工作

iphone - Objective C - 没有任何内容的 UITextField 的值是多少

iphone - 同时支持 iOS 6 和 iOS 5 自动旋转

ios - 将多个 Storyboard与 TabBarController 一起使用

variables - 如何查看 Word .doc 变量

使用参数调用函数会出现两个错误

ios - 如何对导航栏中的按钮设置约束? iOS 13 Swift 5(向导航 Controller 添加圆形个人资料图像按钮)

ios - 有关 crashlytics 的步骤

c# - 申报差异: "var x = .." vs "var x; x = .."