首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Libgdx -使用TexturePacker时出现错误

Libgdx -使用TexturePacker时出现错误
EN

Stack Overflow用户
提问于 2016-02-07 01:41:08
回答 1查看 694关注 0票数 1

我是一个新的Libgdx,并一直遵循一本书‘学习LibGDX游戏开发,第二版’学习,并让你现在我正在使用安卓工作室,问题是即使我可以创建包文件在安卓资产文件夹不知何故我得到一个GdxRuntimeException错误,说资产未加载。错误日志如下图所示:

代码语言:javascript
复制
    images
    cloud02 (alias of cloud01)
    cloud03 (alias of cloud01)
    Packing.........
    Writing 1024x1024: C:\Users\Raghab\AndroidStudioProjects\CanyonBunnyTest\android\assets\images\canyonbunny.pack.png
    com.packtpub.libgdx.canyonbunny.game.Assets: No of assets loader: 2
    com.packtpub.libgdx.canyonbunny.game.Assets: Asset: C:/Users/Raghab/AndroidStudioProjects/CanyonBunnyTest/android/assets/images/canyonbunny.pack.png
    com.packtpub.libgdx.canyonbunny.game.Assets: Asset: C:/Users/Raghab/AndroidStudioProjects/CanyonBunnyTest/android/assets/images/canyonbunny.pack.atlas
    Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: Asset not loaded: C:\Users\Raghab\AndroidStudioProjects\CanyonBunnyTest\android\assets\images\canyonbunny.pack.atlas
        at com.badlogic.gdx.assets.AssetManager.get(AssetManager.java:110)
        at com.packtpub.libgdx.canyonbunny.game.Assets.init(Assets.java:53)
        at com.packtpub.libgdx.canyonbunny.CanyonBunnyMain.create(CanyonBunnyMain.java:30)
        at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:143)
        at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:120)

    Process finished with exit code 0

Desktop类:

代码语言:javascript
复制
package com.packtpub.libgdx.canyonbunny.desktop;

import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;
import com.badlogic.gdx.tools.texturepacker.TexturePacker;
import com.packtpub.libgdx.canyonbunny.CanyonBunnyMain;

public class DesktopLauncher {

    private static boolean rebuildAtlas = true;
    private static boolean drawDebugOutline = true;

    public static void main (String[] arg) {
        if (rebuildAtlas) {
            TexturePacker.Settings settings = new TexturePacker.Settings();
            settings.maxWidth = 1024;
            settings.maxHeight = 1024;
            settings.duplicatePadding = false;
            settings.debug = drawDebugOutline;

            TexturePacker.process(settings, "C:\\Users\\Raghab\\AndroidStudioProjects\\CanyonBunnyTest\\desktop\\assets-raw\\images", "C:\\Users\\Raghab\\AndroidStudioProjects\\CanyonBunnyTest\\android\\assets\\images", "canyonbunny.pack");

        }
        LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
        config.title = "CanyonBunny";
        config.useGL30 = false;
        config.width = 800;
        config.height = 480;

        new LwjglApplication(new CanyonBunnyMain(), config);
    }
}

资产类别:

代码语言:javascript
复制
package com.packtpub.libgdx.canyonbunny.game;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.assets.AssetDescriptor;
import com.badlogic.gdx.assets.AssetErrorListener;
import com.badlogic.gdx.assets.AssetManager;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.utils.Disposable;
import com.packtpub.libgdx.canyonbunny.util.Constants;

public class Assets implements Disposable, AssetErrorListener {

    public static final String TAG = Assets.class.getName();

    public static final Assets instance = new Assets();

    private AssetManager assetManager;

    private Assets() {

    }

    public AssetBunny bunny;
    public AssetRock rock;
    public AssetGoldCoin goldCoin;
    public AssetFeather feather;
    public AssetLevelDecoration levelDecoration;


    public void init(AssetManager assetManager) {
        this.assetManager = assetManager;
        assetManager.setErrorListener(this);

        assetManager.load(Constants.TEXTURE_ATLAS_OBJECTS, TextureAtlas.class);
        assetManager.finishLoading();

        Gdx.app.debug(TAG, "No of assets loader: " + assetManager.getAssetNames().size);
        for (String a : assetManager.getAssetNames()) {
            Gdx.app.debug((TAG), "Asset: " + a);;
        }

        TextureAtlas atlas = assetManager.get(Constants.TEXTURE_ATLAS_OBJECTS);
        for (Texture t : atlas.getTextures()) {
            t.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear);
        }

        bunny = new AssetBunny(atlas);
        rock = new AssetRock(atlas);
        goldCoin = new AssetGoldCoin(atlas);
        feather = new AssetFeather(atlas);
        levelDecoration = new AssetLevelDecoration(atlas);

    }  
    @Override
    public void dispose() {
        assetManager.dispose();

    }
    @Override
    public void error(AssetDescriptor asset, Throwable throwable) {
        Gdx.app.error((TAG), "Couldn't load asset '" + asset.fileName + "'", (Exception) throwable);;
    }

    public class AssetBunny {
        public final TextureAtlas.AtlasRegion head;


        public AssetBunny(TextureAtlas atlas) {
            head = atlas.findRegion("bunny_head");

        }
    }

    public class AssetRock {
        public final TextureAtlas.AtlasRegion edge;
        public final TextureAtlas.AtlasRegion middle;

        public AssetRock(TextureAtlas atlas) {
            edge = atlas.findRegion("rock_edge");
            middle = atlas.findRegion("rock_middle");
        }
    }

    public class AssetGoldCoin {
        public final TextureAtlas.AtlasRegion goldCoin;

        public AssetGoldCoin(TextureAtlas atlas) {
            goldCoin = atlas.findRegion("item_gold_coin");
        }
    }

    public class AssetFeather {
        public final TextureAtlas.AtlasRegion feather;

        public AssetFeather(TextureAtlas atlas) {
            feather = atlas.findRegion("item_feather");
        }
    }
    public class AssetLevelDecoration {
        public final TextureAtlas.AtlasRegion cloud01;
        public final TextureAtlas.AtlasRegion cloud02;
        public final TextureAtlas.AtlasRegion cloud03;
        public final TextureAtlas.AtlasRegion mountainLeft;
        public final TextureAtlas.AtlasRegion mountainRight;
        public final TextureAtlas.AtlasRegion waterOverlay;

        public AssetLevelDecoration(TextureAtlas atlas) {
            cloud01 = atlas.findRegion("cloud01");
            cloud02 = atlas.findRegion("cloud02");
            cloud03 = atlas.findRegion("cloud03");
            mountainLeft = atlas.findRegion("mountain_left");
            mountainRight = atlas.findRegion("mountain_Right");
            waterOverlay = atlas.findRegion("water_overlay");
        }
    }

}

常量类:

代码语言:javascript
复制
package com.packtpub.libgdx.canyonbunny.util;

public class Constants {
    public static final float VIEWPORT_WIDTH = 5.0f;

    public static final float VIEWPORT_HEIGHT = 5.0f;

    public static final String TEXTURE_ATLAS_OBJECTS =
            "C:\\Users\\Raghab\\AndroidStudioProjects\\CanyonBunnyTest\\android\\assets\\images\\canyonbunny.pack.atlas";
}
EN

回答 1

Stack Overflow用户

发布于 2016-02-07 14:35:36

对不起,所有人。这是android工作室没有正确地处理路径。在定义paths..took me时使用正斜杠而不是反斜杠来解决问题。

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

https://stackoverflow.com/questions/35244240

复制
相关文章

相似问题

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