LibGDX - TexturePacker2不生成/打包图像
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LibGDX - TexturePacker2不生成/打包图像相关的知识,希望对你有一定的参考价值。
我正在读一本关于LibGDX游戏开发的书 - Learning LigbGDX Game Development。在本书中,我们使用TexturePacker2生成.png和.pack文件,将半打纹理打包到纹理图集中。我完全遵循了代码,但它不会在目标文件夹中生成任何内容。这是我的桌面项目文件夹中的代码:
package com.packtpub.libgdx.canyonbunny;
import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;
import com.badlogic.gdx.tools.imagepacker.TexturePacker2;
import com.badlogic.gdx.tools.imagepacker.TexturePacker2.Settings;
public class Main {
private static boolean rebuildAtlas = true;
private static boolean drawDebugOutline = false;
public static void main (String[] args) {
if (rebuildAtlas) {
Settings settings = new Settings();
settings.maxWidth = 1024;
settings.maxHeight = 1024;
settings.debug = drawDebugOutline;
TexturePacker2.process(settings, "assets-raw/images", "../CanyonBunny-android/assets/images", "canyonbunny.pack");
TexturePacker2.process(settings, "assets-raw/images-ui", "../CanyonBunny-android/assets/images", "canyonbunny-ui.pack");
rebuildAtlas = false;
}
LwjglApplicationConfiguration cfg = new LwjglApplicationConfiguration();
cfg.title = "CanyonBunny";
cfg.useGL20 = false;
cfg.width = 800;
cfg.height = 480;
new LwjglApplication(new CanyonBunnyMain(), cfg);
}
}
但是当我运行它时,我的CanyonBunny-android / assets / images文件夹中没有生成任何内容。我可以加载纹理的唯一方法是下载书籍的源代码并将已生成的.png和.pack文件夹放在正确的文件夹中。我完全按照这本书,所以我不确定问题是什么。我得到它正在生成1024x1024纹理图集的日志消息,因此代码正在执行。有什么我想念的吗?
这是控制台在启动应用程序时所说的内容(使用已生成的文件)
Packing.........
Writing 1024x1024: ../CanyonBunny-android/assets/images/canyonbunny.png
Packing......
Writing 1024x1024: ../CanyonBunny-android/assets/images/canyonbunny-ui.png
game.Assets: # of assets loaded: 2
game.Assets: asset: images/canyonbunny.pack
game.Assets: asset: images/canyonbunny.png
没有已生成的文件:
Packing.........
Writing 1024x1024: ../CanyonBunny-android/assets/images/canyonbunny.png
Packing......
Writing 1024x1024: ../CanyonBunny-android/assets/images/canyonbunny-ui.png
game.Assets: Couldn't load asset 'images/canyonbunny.pack'
com.badlogic.gdx.utils.GdxRuntimeException: File not found: images/canyonbunny.pack (Internal)
at com.badlogic.gdx.files.FileHandle.read(FileHandle.java:127)
at com.badlogic.gdx.graphics.g2d.TextureAtlas$TextureAtlasData.<init>(TextureAtlas.java:97)
at com.badlogic.gdx.assets.loaders.TextureAtlasLoader.getDependencies(TextureAtlasLoader.java:59)
at com.badlogic.gdx.assets.loaders.TextureAtlasLoader.getDependencies(TextureAtlasLoader.java:34)
at com.badlogic.gdx.assets.AssetLoadingTask.handleSyncLoader(AssetLoadingTask.java:103)
at com.badlogic.gdx.assets.AssetLoadingTask.update(AssetLoadingTask.java:92)
at com.badlogic.gdx.assets.AssetManager.updateTask(AssetManager.java:399)
at com.badlogic.gdx.assets.AssetManager.update(AssetManager.java:314)
at com.badlogic.gdx.assets.AssetManager.finishLoading(AssetManager.java:337)
at game.Assets.init(Assets.java:38)
at com.packtpub.libgdx.canyonbunny.CanyonBunnyMain.create(CanyonBunnyMain.java:17)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:125)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:108)
game.Assets: # of assets loaded: 0
Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: java.lang.NullPointerException
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:111)
Caused by: java.lang.NullPointerException
at com.badlogic.gdx.utils.ObjectMap.get(ObjectMap.java:278)
at com.badlogic.gdx.assets.AssetManager.get(AssetManager.java:103)
at game.Assets.init(Assets.java:45)
at com.packtpub.libgdx.canyonbunny.CanyonBunnyMain.create(CanyonBunnyMain.java:17)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:125)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:108)
- 使用文件资源管理器(不是eclipse)检查文件是否实际在正确的文件夹中创建。 如果找不到,请尝试搜索并首先将其显示在正确的文件夹中。 日志表明正在生成文件,我想它应该是。
- 但是,eclipse无法识别新生成的文件。在使用之前,您必须在eclipse项目文件夹中点击刷新。 检查它是否有效。
- 现在,您无法在每次运行时打包它们。我有同样的问题,所以我创建了一个不同的项目(用作工具),它可以打包(并自动化许多其他小东西)。每当我更改资产时,我都会在测试之前运行该工具一次。
希望这可以帮助。 祝好运。
看起来你正在使用旧版本的libgdx - 对吧? TexturePacker2
已不存在了,现在只有TexturePacker
(顺便说一句,它完美无瑕)。我建议你先更新。
我有同样的问题。它与drawDebugOutline = true
合作,但当我将其改为false时,它崩溃了。
这是Eclipse的事情......
上面提到的解决方案是刷新项目。在刷新之前,Eclipse没有看到新的打包纹理文件。右键单击Android项目并单击“刷新”,这将导致Eclipse找到新文件。
以上是关于LibGDX - TexturePacker2不生成/打包图像的主要内容,如果未能解决你的问题,请参考以下文章
生还是不生? SpringBoot3 版本有起飞前兆,最小依赖Java17!