我有一个简单的游戏正在开发,是一款侧滑太空冒险游戏,在游戏中你需要拯救猫咪。这是一款非常简单的游戏,但我遇到了一个问题。我的游戏正常启动,显示主菜单场景。点击“播放”,它会毫无问题地过渡到游戏场景,但是,我发现第一次按“开始”按钮开始游戏时会出现一点加载延迟。这种延迟只会在第一次加载游戏时出现。
点击“开始”后,将调用以下方法:
我觉得我知道问题出在哪里了,游戏数据正在第一次加载到内存中,但是如何避免这种加载时的暂停呢?我想知道是否我做错了什么,因为似乎我没有加载足够的内容会造成明显的1到3秒的暂停。第二次通过,比如玩家死亡并重新开始,暂停就消失了,一切都顺利进行。如果我遗漏了任何重要信息,我很抱歉,我在SpriteKit方面还很新。 有人有什么想法吗?提前感谢。
点击“开始”后,将调用以下方法:
-(void)nonplayerSprites:(StartReason)endReason{
if (endReason == kStartGame){
// [self playMusic:@"Electrodoodle.mp3"];
[self spawnPlayer];
[self setupUI];
[self runAction:[SKAction repeatActionForever: [SKAction sequence:@[[SKAction
performSelector:@selector(enemySpawn) onTarget:self],
[SKAction waitForDuration:2.0]]]]];
[self runAction:[SKAction repeatActionForever: [SKAction sequence:@[[SKAction
performSelector:@selector(spawnCat) onTarget:self],
[SKAction waitForDuration:1.5]]]]];
[self runAction:[SKAction repeatActionForever: [SKAction sequence:@[[SKAction
performSelector:@selector(powerUpSpawnCheck) onTarget:self],[SKAction
waitForDuration:2.0]]]]];
} else if (endReason == kEndGame){
[self removeAllActions];
} else if (endReason == kRestartGame){
MainGame * myScene =
[[MainGame alloc] initWithSize:self.size];
SKTransition *reveal =
[SKTransition fadeWithDuration:0.5];
[self.view presentScene: myScene transition: reveal];
}
}
我有四个精灵节点,它们分别是UFO、猫、玩家火箭和随机的强化道具。通过spawnUI方法调用了两个SKLabelNodes用于显示玩家得分和生命值,并且还会播放音乐(尽管目前已被禁用)。
敌人和友方节点都是用类似的方法调用的:
-(void)enemySpawn
{
int enemyChoice = [self getRandomNumberBetween:0 to:1];
if (enemyChoice == 0){
_enemy = [SKSpriteNode spriteNodeWithImageNamed:@"enemy"];
[_enemy setScale:1.0];
}else if (enemyChoice == 1){
_enemy = [SKSpriteNode spriteNodeWithImageNamed:@"enemy_alt"];
[_enemy setScale:0.50];
}
_enemy.anchorPoint = CGPointZero;
_enemy.zPosition = 2.0;
_enemy.name = @"rocket";
_enemy.position = CGPointMake(self.size.width + _enemy.size.width, [self
getRandomNumberBetween:0 to:250]);
SKAction *enemyMove = [SKAction sequence:@[[SKAction moveToX:-40 duration:[self
getRandomNumberBetween:2 to: 5]],
[SKAction removeFromParent]]];
[_worldNode addChild:_enemy];
[_enemy runAction:enemyMove];
}
我觉得我知道问题出在哪里了,游戏数据正在第一次加载到内存中,但是如何避免这种加载时的暂停呢?我想知道是否我做错了什么,因为似乎我没有加载足够的内容会造成明显的1到3秒的暂停。第二次通过,比如玩家死亡并重新开始,暂停就消失了,一切都顺利进行。如果我遗漏了任何重要信息,我很抱歉,我在SpriteKit方面还很新。 有人有什么想法吗?提前感谢。