1

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

4

2 回答 2

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

}


 }

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

希望这可以帮助你。

于 2013-07-05T12:09:29.160 回答
0

您所能做的就是在游戏开始时添加一个加载屏幕,然后可以播放一些音乐。

通过这种方式,用户将知道游戏正在加载.. 在此屏幕中加载您的所有资产并显示进度条...

于 2013-08-07T13:16:14.187 回答