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

Vis*_*ngh 1 libgdx

我正在用libgdx做一个游戏.我使用AssetManager类来加载资产.当我开始我的游戏时,它需要更多的时间在Android设备上加载资源并在那时显示黑屏.我如何解决这个问题.

Kum*_*abh 5

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

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

}


 }
Run Code Online (Sandbox Code Playgroud)

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

希望这能帮到你.