如何从另一个类访问变量变量? (例如等级计数)
我有两个场景。场景A是游戏场景,其中level
类型变量int
发生变化。在B类中,我想获取变量。如何从另一个类访问变量变量? (例如等级计数)
我现在得到的是以下内容:
-------------------------------- - LevelDone.m ---------------------------------
HelloWorldLayer *object = [[HelloWorldLayer alloc]init];
int pointsForZeroStars = [[requiredPoints objectAtIndex:0] integerValue];
int pointsForOneStar = [[requiredPoints objectAtIndex:1] integerValue];
int pointsForTwoStars = [[requiredPoints objectAtIndex:2] integerValue];
int pointsForThreeStars = [[requiredPoints objectAtIndex:3] integerValue];
NSLog(@"HEALTH = %d",object.health);
CCSprite *levelDoneWindow;
if (object.health < pointsForZeroStars){
NSLog(@"should be 0 stars");
levelDoneWindow = [CCSprite spriteWithFile:@"leveldonescreen0stars.png"];
}
NSLog返回初始值health
这是100,而实际上它是东西比100
较小的在游戏中I类,以调用LevelDone现场拨打pushscene
:
----------------------------- HelloWorldLayer.m(游戏场景)------------ -------------------------
else{
[[CCDirector sharedDirector] pushScene:[LevelDone node]];
[self generateLevelFromPlist:level];
}
的-generateFromPlist
方法健康重置为100,但它的NSLog
方法后,肯定是叫在我的LevelDone.m
类中,仍然打印出health
为100.
如何正确检索此变量的值?
使用单例管理全局值。
http://getsetgames.com/2009/08/30/the-objective-c-singleton/
基本上,你可以创建在单独的类属性,它将“坚持”整场比赛,无论你是在等
您确定HelloWorldLayer的health
属性实际上是否正确更新?如果是这样,我会怀疑(并且再一次猜测,因为这个错误并没有出现在提供的代码本身中)你在HelloWorldLayer中改变的变量与你正在访问的属性不一样与object.health
- 也许范围问题在这里(即选择器正在影响本地health
变量,但不是实例变量本身)。
如果我尝试设置级别变量,它也不起作用。也许这只是一个可怕的循环,重新被调用,做了可怕的事情,我现在真的很绝望! – 2011-12-15 20:42:55
什么场景你在哪里设置/更新的价值`健康?`错误不在这里显示的代码中,但很可能在HelloWorldLayer类中。 – 2011-12-15 19:38:51
听起来很棒/不好!不应该`pushScene`方法暂停所有选择器和方法?我有一个运行在1秒间隔的选择器。但它只会减少健康。实际上,下面的方法`[self generateLevelFromPlist:level];`将它重新设置为100。 – 2011-12-15 19:48:33