且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何减少 libgdx 中所有资产的加载时间

更新时间:2023-12-05 17:37:40

它会显示一个空白屏幕.为了解决这个问题,您可以在加载资源时渲染一些东西,并在加载完成后切换到菜单屏幕.

Well it will show a blank screen. In order to solve this problem you can render something while loading of assets is done and as the loading is done you switch to menu screen.

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.assets.AssetManager;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.GLCommon;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.shooter.waste.of.a.game.Assets;
import com.shooter.waste.of.a.game.utils.Game;
import com.shooter.waste.of.a.game.utils.Screen;

public  class LoadingScreen extends Screen{


public AssetManager manager;
SpriteBatch batcher;
Game game;
OrthographicCamera cam;
TextureAtlas load;
float stateTime;
AtlasSprite bg;
public LoadingScreen(Game game,SpriteBatch batcher) {
    super(game);
    this.batcher = batcher;
    this.game = game;
    manager = new AssetManager();
    manager.load("data/shoot",TextureAtlas.class);
    manager.load("data/b.jpg",Texture.class);

    cam = new OrthographicCamera(480, 800);
    cam.position.set(480 / 2, 800 / 2,0);
            load = new TextureAtlas("data/load");
            bg = new AtlasSprite(load.findRegion("loadingscrnbg"));




    }

    @Override
    public void render(float deltaTime)
    {
        update(deltaTime);
    GLCommon gl = Gdx.gl;
    gl.glClearColor(0, 0, 1f, 0.1f);
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
    cam.update();
    batcher.setProjectionMatrix(cam.combined);
    batcher.begin();
            batcher.draw(bg, 0, 0);

    batcher.enableBlending();
    batcher.end();



}

@Override
public void pause() {
    // TODO Auto-generated method stub

}

@Override
public void resume() {
    // TODO Auto-generated method stub

}

@Override
public void dispose() {
    // TODO Auto-generated method stub

}

@Override
public void update(float deltaTime) 
{
    if(manager.update())  \ gives true when all assets are loaded
    {
        Assets.load(manager);
        game.setScreen(new GameScreen(game, batcher));
    }
}

@Override
public void backKeyPressed() {
    // TODO Auto-generated method stub

}


 }

一个重要的事情是它仍然会为那些你想在加载过程中渲染的精灵显示一个空白屏幕,以尝试只渲染很少的东西并且根本没有声音.

One important thing is that it will still show a blank screen for those sprites which u want to render during the loading to try to render only few things and no sounds at all.

希望对你有所帮助.