gpt4 book ai didi

java - AssetManager 似乎无法正常工作

转载 作者:行者123 更新时间:2023-11-29 05:24:00 28 4
gpt4 key购买 nike

我正在尝试使用 AssetManager 加载我的 libgdx 游戏的关卡图像,从我遵循的指南来看这似乎很容易,但我遇到了某种错误..

我在名为 Assets.java 的类中使用此代码包加载器;

import com.badlogic.gdx.assets.AssetManager;
import com.badlogic.gdx.graphics.Texture;

public class Assets {

public static final AssetManager manager = new AssetManager();

public static final String level1 = "level1.png";

public static void load() {
manager.load(level1, Texture.class);
}

public static void dispose() {
manager.dispose();
}
}

主类中的这段代码:

@Override
public void create () {

Assets.load();

while(!Assets.manager.update()) {
System.out.println(Assets.manager.getProgress()*100+"%");
}

setScreen(new GameScreen());
}

但它总是显示 0.0% 并且从不加载图像

我尝试加载权重为 300 KB 的文件图像,我也尝试过使用小图像,但没有任何变化..

编辑

它会立即进入新屏幕,但仍会无休止地打印出 0.0%,而不会加载图像

最佳答案

调用 .finishLoading(); 如果你想在你的创建中完成加载。否则,您需要在游戏循环中调用 .update()。有关详细信息,请参阅 this link.

此外,我不会让经理静态化!您不能保证您只有其中一个对象,因此如果您访问某个 Assets ,则可能会发生您尚未在该 AssetManager 实例中加载它的情况。每当您访问管理器时,都会创建一个新的 Assetmanager 并调用静态方法。因此,当您访问您的经理时,您总是需要加载 Assets ,这不是您希望的正确行为。将其创建为常规对象,并在您的主对象中有一个实例,您将其传递给游戏的所有其他子系统。还在子系统内部保存一个引用,以便您可以在需要时使用它。 => 静态版本不应该工作。

像这样创建它:

public class Assets {

public AssetManager manager = new AssetManager();

public static final String level1 = "level1.png";

public void load() {
manager.load(level1, Texture.class);
}

public void dispose() {
manager.dispose();
}
}

然后像这样使用它:

private Assets assets;
@Override
public void create () {

assets.load();
//or call the assets.finishLoading();
while(!assets.manager.update()) {
System.out.println(assets.manager.getProgress()*100+"%");
}

setScreen(new GameScreen(assets)); //pass it to the gamescreen ctro!
}

此外,您还可以通过 AssetManager 扩展您的 Assets 类,并直接调用 Assets 对象上的 .update。 Assets 扩展了 AssetManager

public class Assets extends AssetManager{

public static final String level1 = "level1.png";

public void load() {
this.load(level1, Texture.class);
}
//dispose not needed since you can call Assets.dispose() since the AssetManager is disposeable.
}

关于java - AssetManager 似乎无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23442108/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com