gpt4 book ai didi

java - libgdx AssetManager 无法仅在 html5 上加载资源

转载 作者:行者123 更新时间:2023-12-01 09:28:49 26 4
gpt4 key购买 nike

我有一个 libgdx 项目,它使用 AssetManager 加载资源,如下所示:

    for (FileHandle f : Gdx.files.internal("textures").list("png") ) {
assetManager.load(f.toString(), Texture.class);
System.out.println("Asset queued for loading: " + f.toString());
}
assetManager.finishLoading();
System.out.println("Loaded assets: " + assetManager.getLoadedAssets());

当我运行桌面启动器时,这工作正常,但当我将其部署到 html5 时,它会失败并显示以下消息:

GwtApplication: exception: Asset not loaded: textures/rifleman_walking.png
Asset not loaded: textures/rifleman_walking.png

我已经仔细检查了文件名,只是为了确保没有像拼写错误这样愚蠢的事情。我也对它似乎只影响 html5 版本这一事实感到有点困惑。当我查看项目 webroot 中的 asset/目录时,它确实包含代码中引用的所有内容。

请注意,在 AssetManager 之前,我的代码在桌面和 html5 上都运行良好。加载纹理,而不是通过硬编码文件名手动加载纹理。

我的理论:

  • 情况 1:AssetManager 由于某种原因无法加载纹理。
  • 可能性 2:AssetManager 在 html5 中加载时不会阻塞

当我忘记包含 assetManager.finishLoading(); 时,对于完全相同的文件,我得到了完全相同的错误。 ,所以我想知道 html5 部署是否有什么特殊之处需要解决方法。

<小时/>

此外,我还有大量调试信息,只需通过 System.out.println() 打印即可。 ,我很想在 Gwt 文本区域中看到这一点,它现在只在启动时打印错误。如何启用 System.out.println() 的输出在同一个窗口中?

仔细阅读后,我发现调用Gdx.app.setLogLevel(Application.LOG_INFO);在核心启动器中是可行的方法,但它似乎没有改变任何东西。如果我能够看到打印的内容,这将对调试有很大帮助。

<小时/>

编辑:有问题的行是这样的:

protected Texture getAssetTexture(String textureName) {
return world.getPainter().getAssetManager().get(textureName, Texture.class);
}

我已经检查过 textureName正确引用:文件 rifleman_walking.png居住在 textures Assets 的子文件夹。

最佳答案

据我所知,LibGDX 在以 HTML 模式启动之前会预加载所有资源(因为否则不可能在 JS 中同步访问图像)。所以我的猜测(没有看到实际的代码)是您尝试在 LibGDX 准备好之前加载资源。

不要让我开始了解 GWT 中的 System.out.println()。查看调试输出最简单的方法是调用相应的 LibGDX 日志函数。

关于java - libgdx AssetManager 无法仅在 html5 上加载资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39625897/

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