我正在创建一个iPhone游戏,角色在不同视图之间移动,因此每个视图本身就是一个新游戏。但是现在我想创造健康,所以如果健康状况在一个视图中下降到5马力,那么当他们改变到不同的视野时,健康状况仍然是5.我做了一些研究,这听起来像我need是单例或全局变量。但是我所看到的一切对我来说毫无意义。我的任何一个app代表都没有任何内容,而且我没有使用任何框架,如cocos2d或OpenGLES。发布代码现在似乎没有用,所以如果你能告诉我你需要看哪些代码来帮助你回答我的问题。
答案 0 :(得分:1)
我做了一些研究,听起来我需要的是单身或全局变量。
您需要的是在视图控制器之间共享您的角色数据。单例是共享数据的一种方式;它在概念上非常简单,但往往带来不幸的后果。有关其中一些后果的讨论,请参见What is so bad about singletons?。有关其他方法,请参阅Alternatives to Singletons。
如果做决定使用单例(不推荐),则应该注意为该对象选择角色。例如,您的第一个想法可能是创建一个代表玩家或角色的单身人士。但是,这意味着你的游戏中只能拥有一个玩家或角色。更好的选择是创建一个玩家管理器,您可以使用它来访问当前玩家。
更好的选择是放弃单例并给每个视图控制器player
和gameController
属性(假设你有一些对象负责整个游戏。游戏控制器会启动每个新的“board”通过实例化相应的视图控制器,将gameController
属性设置为自身,并将player
属性设置为当前播放器对象。这样,视图控制器不必看在游戏的一部分完成之后,它可以使用其gameController
属性向游戏控制器发送一条消息:“我已经完成了,你可以继续下一个董事会“或任何适当的。
答案 1 :(得分:-2)
从技术上讲,任何东西都可以从应用中的任何地方进行访问,因为我们可以像这样访问应用代理:
#import "AppDelegate.h"
#define kAppDelegate (AppDelegate*)[[UIApplication sharedApplication] delegate]
所以如果你在app delegate中定义一个属性,如下所示:
@property (assign) CGFloat health;
你可以像这样访问它......
CGFloat health = [kAppDelegate health];