如何正确使用libgdx assetmanager加载纹理

12

这样加载纹理到 AssetManager 是正确的方法吗?

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

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

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

1个回答

20

这几乎是正确使用AssetManager的方式,但不完全正确。我建议阅读维基中关于libgdx AssetManager的内容。

一些要点:
变量应该采用驼峰命名法,所以AssetManager manager…而不是AssetManager Manager

您需要调用manager.update(); 来实际加载资源。必须重复调用此方法直到manager.update(); 返回true才算完成加载。因此,您可以创建一个加载屏幕,在其中每帧调用manager.update();,并在其返回true时切换到其他屏幕。
如果您想要加载所有内容并阻塞直到加载完成,请在尝试从管理器获取任何内容之前调用manager.finishLoading();

您可能需要在assets文件夹中创建一个名为data的文件夹,并将资产放置在其中,而不是直接放置在assets文件夹中。因此,将您的资产放置在mygame-android\assets\data中,而不是mygame-android\assets

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

如何创建具有基于libgdx的动画、响应式加载屏幕的示例。(视频


我正在做与上面相同的事情,我已经看过你的视频,但此时此刻我只想使用资产管理器来添加一个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); - user629283
注:assets目录下的任何子目录都可以。 - RichieHH

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接