如何使用 libgdx 资产管理器正确加载纹理

Posted

技术标签:

【中文标题】如何使用 libgdx 资产管理器正确加载纹理【英文标题】:How to properly load textures using the libgdx assetmanager 【发布时间】:2012-09-05 16:05:50 【问题描述】:

这是将纹理正确加载到AssetManager 的方式吗?

Texture tex;
AssetManager manager = new AssetManager();
manager.load("menu/bg.png",Texture.class);
tex = manager.get("menu/bg.png",Texture.class);

纹理加载失败,出现错误“无法加载纹理菜单/bg.png”。

我们应该如何使用AssetManager 加载我们的纹理?

【问题讨论】:

【参考方案1】:

这几乎就是 AssetManager 的使用方式,但不完全如此。 我建议在 wiki 上阅读有关 libgdx AssetManager 的信息。

几点: 变量应该是驼峰式,所以 AssetManager manager... 而不是 AssetManager Manager

您需要致电manager.update();真正让它加载东西。这需要在manager.update() 之前调用;返回true,然后加载完成。因此,您可以制作一个加载屏幕,在其中每帧调用 manager.update();,当它返回 true 时,您切换到其他屏幕。 如果您只想加载所有内容,并在加载之前一直阻塞,请在尝试从经理那里获取任何内容之前致电manager.finishLoading();

您可能必须在 assets 文件夹中创建一个名为 data 的文件夹并将您的资产放在那里,而不是直接将它们放在资产文件夹中。所以把你的资产放在mygame-android\assets\data而不是mygame-android\assets

如果您使用 gdx-setup-gui 创建项目,应该没问题。但如果没有,您的桌面项目也需要知道在哪里可以找到资产。

有关如何创建animated, responsive loading screen with libgdx 的示例。 (video)

【讨论】:

我在做和上面一样的事情,我看过你的视频,但此时我只想使用资产管理器添加一个 png 或 jpg 作为背景。我的代码是一样的,但我添加了finishedLoading。并试图将其添加到舞台上,但那不是演员,所以我无法将其添加到舞台上。 manager.load("assets/data/badlogic.jpg",Texture.class); manager.finishLoading(); bg = manager.get("assets/data/badlogic.jpg",Texture.class); stage.addActor(bg); nb : assets 下面的任何目录都可以。

以上是关于如何使用 libgdx 资产管理器正确加载纹理的主要内容,如果未能解决你的问题,请参考以下文章

使用资产管理器 LibGDX 加载精灵

使用资产管理器 LibGDX 加载精灵

无法在libGDX中将纹理加载到AssetManager

LibGDX - 无法从 FrameBuffer 获取纹理

Libgdx 加载搅拌机模型,透明度不正确

(Java LibGDX) 如何在 LibGDX 中调整纹理的大小?