我正在使用SpriteKit为iOS制作基于磁贴的游戏 所有游戏逻辑都是在类内部进行的,我只想用SpriteKit渲染它们。 问题是在MacPro中使用模拟器,FPS约为60.0,游戏还可以。 但是在我的iPod中,FPS大约为5,控制播放器/小怪动作的定时器工作非常慢,即使没有延迟。
在游戏场景中:
-(void)update:(CFTimeInterval)currentTime
{
[self removeAllChildren];
for(NSMutableArray *tiles in [TileManager sharedInstance].tiles)
{
for(Tile *tile in tiles)
{
if(tile.tile)
{
SKSpriteNode *sprite = [self newSprite: tile.tile.__sprite];
sprite.position = [tile getGlobalPosWithFrame: self.frame];
sprite.size = CGSizeMake(SCREEN_TILE_X, SCREEN_TILE_Y);
[self addChild: sprite];
}
if(tile.item)
{
SKSpriteNode *sprite = [self newSprite: tile.item.__sprite];
sprite.position = [tile getGlobalPosWithFrame: self.frame];
sprite.size = CGSizeMake(SCREEN_TILE_X, SCREEN_TILE_Y);
[self addChild: sprite];
}
}
}
// ... render creatures, mobs, and other things...
}
-(void)update:(CFTimeInterval)currentTime
{
[self removeAllChildren];
for(NSMutableArray *tiles in [TileManager sharedInstance].tiles)
{
for(Tile *tile in tiles)
{
if(tile.tile)
{
SKSpriteNode *sprite = [self newSprite: tile.tile.__sprite];
sprite.position = [tile getGlobalPosWithFrame: self.frame];
sprite.size = CGSizeMake(SCREEN_TILE_X, SCREEN_TILE_Y);
[self addChild: sprite];
}
if(tile.item)
{
SKSpriteNode *sprite = [self newSprite: tile.item.__sprite];
sprite.position = [tile getGlobalPosWithFrame: self.frame];
sprite.size = CGSizeMake(SCREEN_TILE_X, SCREEN_TILE_Y);
[self addChild: sprite];
}
}
}
// ... render creatures, mobs, and other things...
}
我过去(很多年前)在Delphi 7中使用Andorra2D 在那里我可以直接在onUpdate函数中绘制精灵,甚至可以使用精灵表来制作动画。 如何在不使用SKSpriteNode和所有It重逻辑/类的情况下直接绘制SpriteKit?