libgdx中的多线程和加载资产

aba*_*ham 1 java multithreading libgdx

我目前正在尝试为我的libgdx游戏制作加载屏幕,但我不确定该怎么做.我认为我需要为游戏加载我的所有数据并在不同的线程上渲染加载屏幕,但我不确定如何创建新线程.我在想这个错吗?任何帮助,将不胜感激.

MxL*_*evs 6

您可以使用AssetManager,它提供异步资产加载.实际上,为什么您可能希望在加载屏幕之外使用资产管理器有很多原因.

本教程介绍了在加载资源时如何显示加载屏幕.

到目前为止,我们只排队要加载的资产.AssetManager尚未加载任何内容.为了解决这个问题,我们必须连续调用AssetManager#update(),比如我们的ApplicationListener#render()方法:

只要AssetManager#update()返回false,您就知道它仍在加载资产.要轮询具体的加载状态,可以使用AssetManager#getProgress(),它返回0到1之间的数字,表示到目前为止加载的资产的百分比.AssetManager中还有其他方法可以为您提供类似的信息,例如AssetManager#getLoadedAssets()或AssetManager#getQueuedAssets().你必须调用AssetManager#update()来继续加载!

如果您想阻止并确保所有资产都已加载,您可以致电:

manager.finishLoading();

这将阻止,直到所有已排队的资产实际上已完成加载.Kinda违背了异步加载的目的,但有时可能需要它(例如加载显示加载屏幕本身所需的资源).