在SpriteKit中直接渲染

时间:2014-04-24 19:45:15

标签: ios objective-c 2d render sprite-kit

我正在使用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?

0 个答案:

没有答案