2

シーンによっては星空を作りたい。主な問題は、画面全体をパーティクルで埋めるのに時間がかかることです。最初に空全体を作成し、呼び出しの間に保存するようにアドバイスする人がいます。私はこのようなことを試しました:

@implementation StarrySky

static StarrySky *_starrySky;

- (id)init
{
    if ((self = [super init])) {
        NSArray *starsArray = [NSArray arrayWithObjects:@"Stars1.plist", @"Stars2.plist", @"Stars3.plist", nil];
        for(NSString *stars in starsArray) {        
            CCParticleSystemQuad *starsEffect = [CCParticleSystemQuad particleWithFile:stars];        
            [self addChild:starsEffect z:-2];
        }
    }
    return self;
}

+ (StarrySky *)sharedStarrySky
{
    if (!_starrySky) {
        _starrySky = [[StarrySky alloc] init];
    }
    return _starrySky;
}

- (void)dealloc
{
    _starrySky = nil;
    [super dealloc];
}

@end

しかし、粒子は動かなくなります。

4

1 に答える 1

2

動作するはずの 1 つの解決策は、スター パーティクル システムを作成し、それを最初のシーン (つまり、メイン メニュー) に追加することです。非表示に設定するか、画面の外または背景画像の背後 (Z オーダーが最も低い) に移動して、実際にメニューに星を表示せずにいくつかの星を作成できるようにします。

実際のゲーム シーンに切り替えると、ゲーム シーンを割り当て/初期化してから、現在実行中のシーンからスター パーティクル システムを削除し、ゲーム シーンに追加します。基本的に、あるシーンから別のシーンに移動しています。

これで、既にアクティブなスター パーティクル システムを含むゲーム シーンで replaceScene を呼び出すことができます。

于 2012-06-11T10:22:35.790 に答える