优化Swift游戏纹理和动画

时间:2017-07-04 17:26:43

标签: ios swift xcode sprite-kit textures

起初我的Swift 3.0 IOS游戏大约以55-60 FPS运行,这似乎没问题,但随着游戏规模的增加,FPS开始下降。目前我看到游戏开始后迅速降至约30.0 FPS。目前我的所有纹理都位于Assets.xcassets文件夹中,而不是一个接一个地放在任何特定的组中,我将它们称为动画,SKNodes等我需要它们。这可能是我的FPS下降太多的原因吗?我已经研究过使用纹理图谱,但有没有办法使用加载屏幕预加载所有这些纹理,这会加快我的游戏速度吗?

在任何给定时间,游戏都在大约110个节点上达到顶峰我不确定这是否被认为是手机要处理的很多节点?

通常这就是我为动画加载纹理的方法:

    ///WALK TEXTURES APPENDED TO TEXTURE ARRAYS///
    for i in 1...12{
        //Name of image to append to SKTexture
        let name = "enemy\(i)";
        let redname = "redenemyrun\(i)";
        let blackname = "blackenemy\(i)";

        if i <= 6 {
            enemyRightTextures.append(SKTexture(imageNamed: name));
            redEnemyRightTextures.append(SKTexture(imageNamed: redname));
            blackEnemyRightTextures.append(SKTexture(imageNamed: blackname));
        }
        if i > 6{
            enemyLeftTextures.append(SKTexture(imageNamed: name));
            redEnemyLeftTextures.append(SKTexture(imageNamed: redname));
            blackEnemyLeftTextures.append(SKTexture(imageNamed: blackname));
        }

    }

    ///WALKING ANIMATIONS///
    animateEnemyWalkRight = SKAction.animate(with: enemyRightTextures, timePerFrame: 0.08, resize: true, restore: false);
    animateEnemyWalkLeft = SKAction.animate(with: enemyLeftTextures, timePerFrame: 0.08, resize: true, restore: false);

Xcode也提供了一个有用的工具来调试此问题的原因。

如果有人可以在didMoveTo()函数中提供预加载的示例,我认为这会使这个线程对所有人都有帮助。 感谢。

0 个答案:

没有答案