2013-10-18 60 views
0

主場景調用SKNode對象並將該精靈添加到主場景等。當精靈完成/銷燬時,我想從主場景中刪除精靈並更新分數。但是,當我嘗試執行SKNode調用窗體時,它似乎無法運行,但我也沒有收到任何錯誤。Xcode SpriteKit SKNode類在主場景上不執行代碼

下面是我現在的代碼。這不是完整的代碼只是代碼這是問題/非問題:)的一部分

EnemyNode.h 

#import "MyScene.h" 

@class MyScene; 

@interface EnemyNode : SKNode 
@property (nonatomic, assign) MyScene *_scene; 

EnemyNode.m 

-(void)enemyEscaped 
{ 
    NSLog(@"Enemy Escaped"); 

    [_scene.enemyArray removeObject:_enemy]; 
    [_scene enemyAttackedBase]; 

    [_enemy removeAllChildren]; 
    [_enemy removeAllActions]; 
    [_enemy removeFromParent]; 

    [self removeFromParent]; 
} 

MyScene.h 
#import "EnemyNode.h" 

@class EnemyNode; 

@interface MyScene : SKScene 

@property (nonatomic) NSUInteger myMoney; 
@property (nonatomic) EnemyNode *_enemy; 

- (void)enemyWasDestroyed:(NSUInteger)money; 

MyScene.m 
- (void)enemyWasDestroyed:(NSUInteger)money 
{ 
    NSLog(@"money, money, money %lu", (unsigned long)money); 

    self.myMoney += money; 

    SKLabelNode *moneyLabel = (SKLabelNode *)[self childNodeWithName:@"moneyHUD"]; 
    moneyLabel.text = [NSString stringWithFormat:@"Money: %lu",(unsigned long)self.myMoney]; 
} 

當我打電話 [_scene.enemyArray的removeObject:_enemy]。 [_scene enemyAttackedBase];

主場景沒有任何變化(即貨幣標籤不更新)。

任何想法?

我完全錯了我是如何做到這一點?

謝謝

回答

0

發現我的錯誤。我沒有定義init過程中的_scene。

更改了init;

+(id)initNodewithSpriteTexture:(SKTexture *)texture forSpriteNode:(SKSpriteNode *)spriteNode atPosition:(CGPoint)position 
{ 
return [[self alloc] initScene:scene withSpriteTexture:texture forSpriteNode:spriteNode atPosition:position]; 
} 

to;

+(id)initNodeForGame:(MyScene*)scene withSpriteTexture:(SKTexture *)texture forSpriteNode:(SKSpriteNode *)spriteNode atPosition:(CGPoint)position 
{ 

    return [[self alloc] initScene:scene withSpriteTexture:texture forSpriteNode:spriteNode atPosition:position]; 
} 

-(id)initScene:(MyScene*)scene withSpriteTexture:(SKTexture*)texture forSpriteNode:(SKSpriteNode*)spriteNode atPosition:(CGPoint)position 
{ 
    if (self = [super init]) { 
     _scene = scene; 
} 

現在一切都像它應該的樣子。