Libgdx - 性能调整

时间:2016-04-18 08:38:30

标签: android libgdx

每个游戏都需要优化。所以,这是我的下一个问题。

我有4个屏幕,一个菜单,一个商店,一个游戏屏幕和一个屏幕游戏。每一个都加载了大量的纹理。我应该制作4个纹理地图集,每个屏幕1个,并相应地打包纹理。是否有很多性能增益?

我是否应该绕过屏幕而不是处理它们并每次再创建它们?如果我重复使用它们,我会使用更多的ram,那么有什么想法吗?

我得到一个pixmap已经处理错误,这与自由类型字体有关。所以我打算将自由类型字体保存到资产管理器中,之前我没有这样做,因为它没有工作。是否有一种特殊的方法来保存生成器字体?

1 个答案:

答案 0 :(得分:0)

我不确定你在做什么,因为你没有发布任何代码,但这通常是我在游戏中所做的:

public MainGame extends Game{
    MenuScreen     menu;
    ShopScreen     shop;
    GameScreen     game;
    GameOverScreen gameOver;

    public void create(){
        menu     = new MenuScreen(this);
        shop     = new ShopScreen(this);
        game     = new GameScreen(this);
        gameOver = new GameOverScreen(this);

        this.setScreen(menu);
    }

    public void render(){
        super.render();
    }

    public void dispose(){
        menu.dispose();
        shop.dispose();
        game.dispose();
        gameOver.dispose();
    }
}

在每个屏幕中,构造函数如下所示:

MainGame game;

public GameScreen(MainGame game){
    this.game = game;
}

所以无论屏幕在哪里,我都可以这样做:

game.setScreen(game.gameOver);

至于你的纹理,我不知道。我从来没有在一个游戏中使用过很多纹理,但我认为最小化纹理数量会让游戏运行得更快。想想看,如果你有很多纹理,游戏必须经历这些纹理中的单个纹理,并渲染每一个纹理,每个渲染方法调用。将其设为较小的数字会减少每次渲染方法调用所需的图片数量。