0

1 つのシーンで 2 つのレイヤーを次のように設定しました。

シーンのヘッダー ファイル:

@interface GameScene1 : CCScene {

GameLayer *gameLayer;

HUDLayer *hudLayer;

}

シーンのメイン ファイル:

-(id)init {

self = [super init];

if (self != nil) {

gameLayer = [GameLayer node];

[self addChild:gameLayer];

hudLayer = [HUDLayer node];

[self addChild:hudLayer];

}

return self;

}

HUD レイヤー ヘッダー:

@interface HUDLayer : CCNode {

CCSprite *background;

CGSize screenSize;



}
-(void)updateMonstersSlayed:(NSString*)value;

HUD レイヤーのメイン:

@implementation HudLayer
-(id)init
{
    self = [super init];

    if (self)
    {
        CGSize viewSize = [[CCDirector sharedDirector] viewSize];


        monstersSlayed = [CCLabelTTF labelWithString:@"Monsters Killed: 0" fontName:@"Arial" fontSize:15];
        monstersSlayed.position = ccp(viewSize.width * 0.85, viewSize.height * 0.1 );
        [self addChild:monstersSlayed];


    }
    return self;
}
-(void)updateMonstersSlayed:(NSString*)value
{
    monstersSlayed.string = value;
}

ゲームレイヤーメイン

- (BOOL)ccPhysicsCollisionBegin:(CCPhysicsCollisionPair *)pair collisionPlayer:(CCNode *)user collisionMonster:(CCNode *)monster
{
    if (holdingWeapon)
    {

        HudLayer *myHud = [[HudLayer alloc] init];
        [myHud updateMonstersSlayed:@"Monsters Killed: 1"];

    }
}

ゲームレイヤーからテキストを設定して、Hudレイヤーのラベルに表示できる場所に設定しようとするだけです。

Cocos2d 3 でこれを達成するにはどうすればよいですか?

4

3 に答える 3

0

メソッドを使用できます。HUDレイヤークラスにメソッドを作ります。

-(void) giveMeMyText:(NSString*)someText
{
   do something with my someText
}

メソッドを HUD.h で見えるようにすることを忘れないでください -(void) giveMeMyText; 次に、GameScene1 #import "HUDlayer.h" に HUD レイヤー クラスをインポートして使用します。

HUDLayer* myHud = [[HUDLayer alloc] init];
[myHud giveMeMyText:@"say hi!"];
于 2014-06-13T08:46:42.150 に答える