Gdx.files.internal() 未加载我的 .fnt 文件
Gdx.files.internal() not loading my .fnt file
所以我正在阅读 packtpub 在 libgdx 上的一本教程书,以了解该框架的工作原理。无论如何,到目前为止我没有遇到任何问题。我正在尝试加载 BitmapFont,但无论我做什么,它都告诉我它不存在。这是代码;
public AssetFonts(){
//Create 3 Fonts using VCRFONT
defaultSmall = new BitmapFont(Gdx.files.internal("images/vcr.fnt"), true);
defaultNormal = new BitmapFont(Gdx.files.internal("images/vcr.fnt"), true);
defaultBig = new BitmapFont(Gdx.files.internal("images/vcr.fnt"), true);
我收到此异常错误:
Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: Error loading font file: images/vcr.fnt
at com.badlogic.gdx.graphics.g2d.BitmapFont$BitmapFontData.load(BitmapFont.java:667)
at com.badlogic.gdx.graphics.g2d.BitmapFont$BitmapFontData.<init>(BitmapFont.java:481)
at com.badlogic.gdx.graphics.g2d.BitmapFont.<init>(BitmapFont.java:116)
at com.dijdesign.libgdx.game.util.Assets$AssetFonts.<init>(Assets.java:41)
at com.dijdesign.libgdx.game.util.Assets.init(Assets.java:79)
at com.dijdesign.libgdx.game.CanyonBunnyMain.create(CanyonBunnyMain.java:25)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:149)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.run(LwjglApplication.java:126)
原因:com.badlogic.gdx.utils.GdxRuntimeException:缺少:文件
这很令人沮丧,我也进入字体文件进行编辑,我编辑的两件事只是从信息面= && page id= 字段中删除,这里是代码;
info face="" size=32 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=1,1
common lineHeight=80 base=26 scaleW=128 scaleH=64 pages=1 packed=0 alphaChnl=1 redChnl=0 greenChnl=0 blueChnl=0
页面 id=0 文件=""
我花了一些时间查看与此类似的其他答案,但我无法让它工作。如果有人知道如何提供帮助,那就太好了,请随时问我任何可以帮助您找到正确答案的问题,或者如果您知道一个问题和答案可以解决我的问题,请告诉我。另外,如果有兴趣,我正在使用的书是 Learning LibGDX Game Development 2nd Edition,我在第 5 部分。
提前致谢。
如果没有要渲染的图像文件,您的 .fnt 文件将无法工作。您粘贴的内容被此处的格式弄乱了,但看起来您在 .fnt 文件中有 file=""
,这只会导致您收到的错误。我不知道你从哪里得到这个特定的 .fnt 文件,但它应该有一个 .fnt 和(通常)一个 .png 部分,其中 .fnt 引用了前面文件部分中的 .png,例如 file="vcr.png"
如果您在同一文件夹中有该 png。使用 .fnt 的文件夹可能很棘手,我建议将 .fnt 和 .png 保存在 libGDX 资产目录底部的同一文件夹中(资产/通常位于 Android 项目中,或者在核心中,如果你没有 Android 项目)。如果您想尝试其他一些 fnt 文件,看看它们是否更适合您的视觉效果(或者只是工作),我保留了几个用于分发 in this folder of a GitHub repo。无论文件来自何处,您都应该确保拥有匹配的 .fnt 和 .png。
顺便说一句,从同一个 .fnt 创建 3 个不同的 BitmapFont 文件不会改变它使用的图像,尽管如果你放大 BitmapFont,你可以让图像中的每个像素对于某种字体显示得更大之后。使用像 Hiero, at the bottom of this page 这样的工具生成多种大小的 BitmapFont 是很常见的,它允许在较大的字体上有更高的细节,或者当你更习惯 libGDX 时使用 FreeTypeFontGenerator 来生成正确大小的字体在运行时。就个人而言,我要么使用距离场字体来平滑缩放(这不是一项容易起床和 运行 的技术,但在文本密集型游戏中看起来不错)或者我有意采用复古外观并缩放字体以整数增量(双倍大小、三倍大小等,但不是 150% 大小,因为它会导致像素字体令人不快的缩放)。
所以我正在阅读 packtpub 在 libgdx 上的一本教程书,以了解该框架的工作原理。无论如何,到目前为止我没有遇到任何问题。我正在尝试加载 BitmapFont,但无论我做什么,它都告诉我它不存在。这是代码;
public AssetFonts(){
//Create 3 Fonts using VCRFONT
defaultSmall = new BitmapFont(Gdx.files.internal("images/vcr.fnt"), true);
defaultNormal = new BitmapFont(Gdx.files.internal("images/vcr.fnt"), true);
defaultBig = new BitmapFont(Gdx.files.internal("images/vcr.fnt"), true);
我收到此异常错误:
Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: Error loading font file: images/vcr.fnt
at com.badlogic.gdx.graphics.g2d.BitmapFont$BitmapFontData.load(BitmapFont.java:667)
at com.badlogic.gdx.graphics.g2d.BitmapFont$BitmapFontData.<init>(BitmapFont.java:481)
at com.badlogic.gdx.graphics.g2d.BitmapFont.<init>(BitmapFont.java:116)
at com.dijdesign.libgdx.game.util.Assets$AssetFonts.<init>(Assets.java:41)
at com.dijdesign.libgdx.game.util.Assets.init(Assets.java:79)
at com.dijdesign.libgdx.game.CanyonBunnyMain.create(CanyonBunnyMain.java:25)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:149)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.run(LwjglApplication.java:126)
原因:com.badlogic.gdx.utils.GdxRuntimeException:缺少:文件
这很令人沮丧,我也进入字体文件进行编辑,我编辑的两件事只是从信息面= && page id= 字段中删除,这里是代码;
info face="" size=32 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=1,1
common lineHeight=80 base=26 scaleW=128 scaleH=64 pages=1 packed=0 alphaChnl=1 redChnl=0 greenChnl=0 blueChnl=0 页面 id=0 文件=""
我花了一些时间查看与此类似的其他答案,但我无法让它工作。如果有人知道如何提供帮助,那就太好了,请随时问我任何可以帮助您找到正确答案的问题,或者如果您知道一个问题和答案可以解决我的问题,请告诉我。另外,如果有兴趣,我正在使用的书是 Learning LibGDX Game Development 2nd Edition,我在第 5 部分。
提前致谢。
如果没有要渲染的图像文件,您的 .fnt 文件将无法工作。您粘贴的内容被此处的格式弄乱了,但看起来您在 .fnt 文件中有 file=""
,这只会导致您收到的错误。我不知道你从哪里得到这个特定的 .fnt 文件,但它应该有一个 .fnt 和(通常)一个 .png 部分,其中 .fnt 引用了前面文件部分中的 .png,例如 file="vcr.png"
如果您在同一文件夹中有该 png。使用 .fnt 的文件夹可能很棘手,我建议将 .fnt 和 .png 保存在 libGDX 资产目录底部的同一文件夹中(资产/通常位于 Android 项目中,或者在核心中,如果你没有 Android 项目)。如果您想尝试其他一些 fnt 文件,看看它们是否更适合您的视觉效果(或者只是工作),我保留了几个用于分发 in this folder of a GitHub repo。无论文件来自何处,您都应该确保拥有匹配的 .fnt 和 .png。
顺便说一句,从同一个 .fnt 创建 3 个不同的 BitmapFont 文件不会改变它使用的图像,尽管如果你放大 BitmapFont,你可以让图像中的每个像素对于某种字体显示得更大之后。使用像 Hiero, at the bottom of this page 这样的工具生成多种大小的 BitmapFont 是很常见的,它允许在较大的字体上有更高的细节,或者当你更习惯 libGDX 时使用 FreeTypeFontGenerator 来生成正确大小的字体在运行时。就个人而言,我要么使用距离场字体来平滑缩放(这不是一项容易起床和 运行 的技术,但在文本密集型游戏中看起来不错)或者我有意采用复古外观并缩放字体以整数增量(双倍大小、三倍大小等,但不是 150% 大小,因为它会导致像素字体令人不快的缩放)。