1

我正在使用精灵生成器制作 iOS 游戏。我围绕棋盘游戏风格设计了它。我希望用户按下触发该play方法的播放按钮。然后它会生成一个随机数,该数应显示在标签上。标签和按钮位于游戏场景中。游戏场景是CCNode. 该代码位于Gameplay作为CCNode. 我发现标签是零。我如何使它不为零?我的标签的代码连接是 doc root var 分配给_randNumLabel. 我的游戏代码连接已分配Gameplay。这是我打开场景并单击按钮后的日志:

2014-06-09 17:20:12.565 Sunk[6037:60b] CCBReader: Couldn't find member variable: _randNumLabel
2014-06-09 17:20:12.567 Sunk[6037:60b] CCBReader: Couldn't find member variable: _affectLabel
2014-06-09 17:20:19.513 Sunk[6037:60b] Nil`

忽略它,_affectLabel因为它会得到修复,如果_randNumLabel得到修复。

#import "Gameplay.h"

@implementation Gameplay
CCLabelTTF *_randNumLabel;
- (void)play {
    if (_randNumLabel == nil)
    {
        CCLOG(@"Nil");
    }
    if (_randNumLabel !=nil)
    {
        CCLOG(@"play button pressed!");
        int max = 6;
        int randNumber = (arc4random() % max) + 1; // Generates a number between 1-6.
        CCLOG(@"Random Number %d", randNumber);
        _randNumLabel.string = [NSString stringWithFormat:@"Number: %d", randNumber];
    }
}
- (void)update:(CCTime)delta {

}

@end
4

1 回答 1

1

您需要使用大括号声明实例变量,即:

@implementation Gameplay
{ 
   CCLabelTTF *_randNumLabel;
}

- (void)play {
// rest of your code
...

作为个人喜好,我会使用私有属性而不是实例变量,例如

@interface Gameplay ()

@property (nonatomic, strong) CCLabelTTF *randNumLabel;

@end

@implementation Gameplay

- (void)play {
// rest of your code
...
于 2014-06-09T22:40:48.687 回答