2つのシーンがあります。シーンAはゲームシーンで、タイプint
のlevel
変数が変更されます。クラス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は、 100あるhealth
、実際にそれがゲームのクラスで100
よりも小さい何かのとき、私はLevelDoneシーンを呼び出すためにpushscene
を呼び出す:
----------------------------- HelloWorldLayer.m(ゲーム場面)------------ -------------------------
else{
[[CCDirector sharedDirector] pushScene:[LevelDone node]];
[self generateLevelFromPlist:level];
}
-generateFromPlist
方法は100に健康をリセットします。しかし、それは確かにNSLog
メソッドの後に呼び出されます私のLevelDone.m
クラスでは、それにもかかわらずhealth
が100であることが表示されます。
この変数の値を正しく取得するにはどうすればよいですか?
であるかのシーンゲームを通じて「持続しない」だろう'health?'エラーはここに示したコードではなく、HelloWorldLayerクラスにある可能性が高いです。 –
素晴らしい/悪いですね! 'pushScene'メソッドはすべてのセレクタとメソッドを一時停止してはいけませんか?私は1秒の間隔で実行するセレクタを実行している。しかしそれは単に健康を減らすだけです。実際には、次のメソッド '[self generateLevelFromPlist:level];'を100に再設定します。 –