首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LibGDX - TexturePacker2不生成/打包图像

LibGDX - TexturePacker2不生成/打包图像
EN

Stack Overflow用户
提问于 2014-03-20 20:45:37
回答 3查看 2.2K关注 0票数 2

我目前正在读一本关于LibGDX游戏开发- 学习LigbGDX游戏开发的书。在本书中,我们使用TexturePacker2生成一个.png和.pack文件,将六个纹理打包到纹理地图集中。我完全遵循了代码,但它不会在目标文件夹中生成任何内容。下面是我的桌面项目文件夹中的代码:

代码语言:javascript
复制
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/assets/images文件夹中不会生成任何内容。加载纹理的唯一方法是下载书籍的源代码,并将已经生成的.png和.pack文件夹放在正确的文件夹中。我完全按照这本书写的,所以我不知道是什么问题。我得到日志记录消息,它正在生成一个1024x1024纹理地图集,所以代码正在执行。我遗漏了什么吗?

下面是控制台在启动应用程序时(使用已经生成的文件)所表示的内容。

代码语言:javascript
复制
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

没有已经生成的文件:

代码语言:javascript
复制
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)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-20 21:05:54

  • 检查文件是否实际使用文件资源管理器(而不是eclipse)在正确的文件夹中创建。 如果找不到,请尝试搜索它,并使它首先出现在正确的文件夹中。 日志表明文件正在生成,我认为应该是这样。
  • 但是,eclipse不识别新生成的文件。在使用它们之前,必须先在eclipse项目文件夹中进行刷新。 先检查一下它是否有效。
  • 现在,您将无法在每次运行中打包它们。我也有同样的问题,所以我创建了一个不同的项目(作为一个工具),它可以进行打包(并自动完成许多其他的小事情)。每当我更改资产时,我都会在测试之前运行该工具一次。

希望这能有所帮助。

祝好运。

票数 4
EN

Stack Overflow用户

发布于 2014-03-20 21:11:39

看起来您正在使用一个旧版本的libgdx,对吗?TexturePacker2已经不在了,现在只有TexturePacker了(顺便说一句,它运行得完美无缺)。我建议你先更新一下。

票数 2
EN

Stack Overflow用户

发布于 2015-02-27 00:34:55

我也有同样的问题。它适用于drawDebugOutline = true,但当我将其更改为false时,它就崩溃了。

这是日食..。

正如上面所暗示的,解决方案是刷新项目。直到刷新,Eclipse才会看到新的打包纹理文件。右键单击Android项目并单击"Refresh“,这将导致Eclipse找到新文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22544678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档