使用AssetManager类在LibGDX中加载TrueType字体

3

我想使用libGDX的AssetManager类加载一个TrueType字体。

这是我初始化manager变量的方法:

manager = new AssetManager();

FileHandleResolver resolver = new InternalFileHandleResolver();
manager.setLoader(FreeTypeFontGenerator.class, new FreeTypeFontGeneratorLoader(resolver));
manager.setLoader(BitmapFont.class, ".ttf", new FreetypeFontLoader(resolver));

我已经创建了一个方法,可以在指定目录中搜索文件,然后使用以下代码(它在一个以路径为参数的函数中):

FreeTypeFontLoaderParameter parameters = new FreeTypeFontLoaderParameter();
parameters.fontFileName = path;
parameters.fontParameters.size = 10;
manager.load(path, BitmapFont.class, parameters);

...将字体添加到加载队列中,但当我启动应用程序时,它一直抛出异常:

Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: com.badlogic.gdx.utils.GdxRuntimeException: Asset not loaded: assets/fonts\Test.ttf.gen
at com.badlogic.gdx.assets.AssetManager.handleTaskError(AssetManager.java:536)
at com.badlogic.gdx.assets.AssetManager.update(AssetManager.java:356)
at my.app(App.java:56)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:215)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:120)
Caused by: com.badlogic.gdx.utils.GdxRuntimeException: Asset not loaded: assets/fonts\Test.ttf.gen
at com.badlogic.gdx.assets.AssetManager.get(AssetManager.java:127)
at com.badlogic.gdx.graphics.g2d.freetype.FreetypeFontLoader.loadSync(FreetypeFontLoader.java:40)
at com.badlogic.gdx.graphics.g2d.freetype.FreetypeFontLoader.loadSync(FreetypeFontLoader.java:20)
at com.badlogic.gdx.assets.AssetLoadingTask.handleAsyncLoader(AssetLoadingTask.java:139)
at com.badlogic.gdx.assets.AssetLoadingTask.update(AssetLoadingTask.java:89)
at com.badlogic.gdx.assets.AssetManager.updateTask(AssetManager.java:477)
at com.badlogic.gdx.assets.AssetManager.update(AssetManager.java:354)
... 3 more

App.java中的第56行代码如下:

if(!this.resourceManager.getManager().update()) {

我能从异常信息中看出无法加载名为“Test.ttf.gen”的资产,但我不知道在哪里可以获取它...我的意思是,我有.ttf文件,我认为这就足够了。

我已经在谷歌上搜索过了,但似乎没有人遇到过类似的问题。


1
路径看起来很可疑:assets/fonts\Test.ttf.gen - donfuxx
我也遇到了这个问题。这只发生在Windows平台上,你呢? - Sean Dawson
1个回答

0
我在Windows机器上遇到这个问题。 原来我使用的类来存储资产路径返回了特定于每个平台的路径分隔符的字符串。 因此,在Windows上,它返回带有正斜杠的路径字符串。 在内部,LibGDX AssetManager类使用反斜杠,但仍会加载带有正斜杠的字符串。
问题是,加载的资产是使用正斜杠作为字符串键的路径存储在字典中的。 当您尝试使用反斜杠路径获取资产时,它无法在字典中找到键。
长话短说,请确保即使在Windows上,您的路径始终使用正斜杠与LibGDX一起使用。
此外,我可能会提交一个错误报告。

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