Я начал разрабатывать игру в Libgdx, и я начал работать над чем-то. Я получил background.png Я пытаюсь загрузить с моей кожи. Я пытаюсь загрузить gameskin.atlas в мой объект AssetManager, но каждый раз, когда я пытаюсь загрузить его, я получаю сообщение об ошибке:Ошибка загрузки файла libgdx
Caused by: com.badlogic.gdx.utils.SerializationException: Error parsing file: packs/gameskin.atlas
at com.badlogic.gdx.utils.JsonReader.parse(JsonReader.java:77)
at com.badlogic.gdx.utils.Json.fromJson(Json.java:692)
... 14 more
Caused by: com.badlogic.gdx.utils.SerializationException: Error parsing JSON on line 3 near:
gameskin.png
*ERROR*format: RGBA8888
filter: Nearest,Nearest
repeat: none
footballpi
at com.badlogic.gdx.utils.JsonReader.parse(JsonReader.java:549)
at com.badlogic.gdx.utils.JsonReader.parse(JsonReader.java:55)
at com.badlogic.gdx.utils.JsonReader.parse(JsonReader.java:75)
... 15 more
Вот где я пытаюсь загрузить его:
package screens;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.ui.Skin;
import engine.Values;
public class GameScreen extends ScreenWrapper{
private final String GAME_SKIN_PATH = "packs/gameskin.atlas";
private ScreenRenderer renderer;
public GameScreen(ScreenManager manager) {
super(manager);
}
@Override
public void initiate() {
manager.getLoader().load(GAME_SKIN_PATH, Skin.class);
}
@Override
public void buildStage() {
Skin skin = manager.getLoader().getAsset(GAME_SKIN_PATH, Skin.class);
}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(242/255f, 242/255f, 242/255f, 0);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
super.render(delta);
}
@Override
public void dispose() {
manager.getLoader().unload(GAME_SKIN_PATH);
}
}
Я попытался удалить параметр размера в файле gameskin.atlas, но это не проблема. В чем может быть проблема?
EDIT: Я попытался использовать AssetDescriptors и SkinParameter для решения этой проблемы. Теперь он выдает эту ошибку:
Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: com.badlogic.gdx.utils.GdxRuntimeException: Error reading pack file: packs/gameskin.atlas
at com.badlogic.gdx.assets.AssetManager.handleTaskError(AssetManager.java:570)
at com.badlogic.gdx.assets.AssetManager.update(AssetManager.java:375)
at com.badlogic.gdx.assets.AssetManager.finishLoading(AssetManager.java:396)
at engine.utils.AssetsLoader.load(AssetsLoader.java:41)
at screens.GameScreen.initiate(GameScreen.java:21)
at screens.ScreenManager.pushScreen(ScreenManager.java:21)
at engine.TapTapMain.create(TapTapMain.java:27)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:147)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:124)
Caused by: com.badlogic.gdx.utils.GdxRuntimeException: Error reading pack file: packs/gameskin.atlas
at com.badlogic.gdx.graphics.g2d.TextureAtlas$TextureAtlasData.<init>(TextureAtlas.java:187)
at com.badlogic.gdx.assets.loaders.TextureAtlasLoader.getDependencies(TextureAtlasLoader.java:58)
at com.badlogic.gdx.assets.loaders.TextureAtlasLoader.getDependencies(TextureAtlasLoader.java:34)
at com.badlogic.gdx.assets.AssetLoadingTask.handleSyncLoader(AssetLoadingTask.java:99)
at com.badlogic.gdx.assets.AssetLoadingTask.update(AssetLoadingTask.java:88)
at com.badlogic.gdx.assets.AssetManager.updateTask(AssetManager.java:498)
at com.badlogic.gdx.assets.AssetManager.update(AssetManager.java:373)
... 7 more
Caused by: com.badlogic.gdx.utils.GdxRuntimeException: Invalid line:
at com.badlogic.gdx.graphics.g2d.TextureAtlas.readTuple(TextureAtlas.java:443)
at com.badlogic.gdx.graphics.g2d.TextureAtlas$TextureAtlasData.<init>(TextureAtlas.java:115)
... 13 more
Вот мой GameScreen Сейчас:
package screens;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.ui.Skin;
import engine.Values;
import engine.utils.AssetsLoader;
public class GameScreen extends ScreenWrapper{
private ScreenRenderer renderer;
// The constructor gets the ScreenManager to notify on screen transitions
public GameScreen(ScreenManager manager) {
super(manager);
}
@Override
public void initiate() {
manager.getLoader().load(AssetsLoader.SKIN_GAME);
}
@Override
public void buildStage() {
Skin skin = manager.getLoader().findAsset(AssetsLoader.SKIN_GAME);
Image backgroundPitch = new Image(skin.getDrawable("football_pitch"));
backgroundPitch.setSize(Values.WIDTH, Values.HEIGHT);
renderer.addActor(backgroundPitch);
addActor(renderer);
}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(242/255f, 242/255f, 242/255f, 0);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
super.render(delta);
}
@Override
public void dispose() {
manager.getLoader().unload(Values.GAME_SKIN_PATH);
}
}
Теперь он говорит «Недействительная линия». См. Обновленную запись. –
@DuduLasry нет обновленного сообщения, только со вчерашнего дня. Факт остается, вы не можете хранить 'Атлас' в объекте' Skin' по той же причине, что вы не можете хранить 'String' в' Integer'. – Madmenyo
Я обновил свой пост, не могли бы вы посмотреть на него? –