我想为一些场景创造一个星空。 主要问题是需要一些时间用粒子填充所有屏幕。有人建议我在开始时创建整个天空并将其保存在其调用之间。 我试过这样的事情:
@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
但粒子停止移动。
答案 0 :(得分:2)
应该工作的一个解决方案是创建星形粒子系统并将其添加到第一个场景(即主菜单)。将其设置为不可见或从屏幕移出或在背景图像后面移动(最低z顺序),这样它就可以创建一些星星而不会在菜单中显示任何星星。
现在,当您切换到实际的游戏场景时,您可以分配/初始化游戏场景,然后从当前运行的场景中删除星形粒子系统并将其添加到游戏场景中。基本上你将它从一个场景移动到另一个场景。
现在你可以用现在包含已经活跃的星形粒子系统的游戏场景调用replaceScene。