Android Libgdx资产管理器
我在游戏中使用AssetManager加载2张皮肤。要显示加载屏幕,我需要一个图像,所以我首先加载它,当皮肤加载时,我使用该图像为加载屏幕设置动画。当我在Android设备上运行游戏时,加载屏幕动画会停在中间,并在所有资产加载后开始播放。那是什么呢? 1.AssetManager是否会阻止某些资源的渲染线程?如果不是,为什么我的简单动画会延迟? 2.如何在没有任何延迟的情况下显示动画加载屏幕 注意:我确实调用了assetManager.updateAndroid Libgdx资产管理器,android,libgdx,Android,Libgdx,我在游戏中使用AssetManager加载2张皮肤。要显示加载屏幕,我需要一个图像,所以我首先加载它,当皮肤加载时,我使用该图像为加载屏幕设置动画。当我在Android设备上运行游戏时,加载屏幕动画会停在中间,并在所有资产加载后开始播放。那是什么呢? 1.AssetManager是否会阻止某些资源的渲染线程?如果不是,为什么我的简单动画会延迟? 2.如何在没有任何延迟的情况下显示动画加载屏幕 注意:我确实调用了assetManager.update @Override public void s
@Override
public void show() {
Gdx.input.setInputProcessor(SplashStage.instance());
assetManager = new AssetManager();
assetManager.load("skin/loadingSkin", Skin.class);
assetManager.load("skin/mainSkin", Skin.class);
}
@Override
public void render(float delta) {
Gdx.gl20.glClearColor(0, 0, 0, 1);
Gdx.gl20.glClear(GL20.GL_COLOR_BUFFER_BIT);
SplashStage.instance().act();
SplashStage.instance().draw();
TweenController.instance().getTweenManager().update(delta);
Table.drawDebug(SplashStage.instance());
if (assetManager.update()) {
if (splashComplete) {
game.setScreen(new GameScreen(game));
}
}
if (assetManager.isLoaded("skin/loadingSkin", Skin.class) && !splashStarted) {
splashStarted = true;
splashSkin = assetManager.get("skin/loadingSkin", Skin.class);
TweenController.instance().registerAccessors();
loadSplash();
}
}
private void loadSplash() {
loadingLabel = new Label("Loading...", splashSkin, ParameterConstants.FONT_SIZE_2);
loadingLabel.setPosition(Gdx.graphics.getWidth() / 2 - loadingLabel.getWidth() / 2,
Gdx.graphics.getHeight() / 2 - loadingLabel.getHeight() * 4);
loadingLabel.setColor(1, 1, 1, 0);
SplashStage.instance().addActor(loadingLabel);
float ratio = (Gdx.graphics.getWidth() * 2 / 3 / logoImage.getWidth());
logoImage.setSize(logoImage.getWidth() * ratio, logoImage.getHeight() * ratio);
logoImage.setPosition(Gdx.graphics.getWidth() / 2 - logoImage.getWidth() / 2,
Gdx.graphics.getHeight() / 2 - logoImage.getHeight() / 2);
SplashStage.instance().addActor(logoImage);
TweenAnimation.logoAnimation(logoImage, loadingLabel, new AnimationListener() {
@Override
public void onComplete() {
splashComplete = true;
}
});
}
请添加用于加载屏幕的代码。此外,如果加载屏幕仅加载2个皮肤,则可能确实是定义的行为。我认为AssetManager只是跟踪已经加载的资产的进度。所以,如果您只有两项资产,那么它将只有三个步骤:0%、50%和100%。由于您可能会以100%切换屏幕,所以在更改屏幕之前,50%可能是您看到的唯一状态。这是我的代码。Tween动画在不同的线程中更改角色的尺寸。我想这可能有什么关系。我在一个游戏线程中制作了简单的动画,但它也停止了。所以我认为这是因为AssetManager以某种方式阻止了渲染线程。