未找到字段:pixelToWorld (com.uwsoft.editor.renderer.data.ProjectInfoVO)

Field not found: pixelToWorld (com.uwsoft.editor.renderer.data.ProjectInfoVO)

编译桌面应用程序时出现此错误:

Exception in thread “LWJGL Application” com.badlogic.gdx.utils.SerializationException: Field not found: pixelToWorld (com.uwsoft.editor.renderer.data.ProjectInfoVO)
at com.badlogic.gdx.utils.Json.readFields(Json.java:776)
at com.badlogic.gdx.utils.Json.readValue(Json.java:902)
at com.badlogic.gdx.utils.Json.fromJson(Json.java:714)
at com.uwsoft.editor.renderer.resources.ResourceManager.loadProjectVO(ResourceManager.java:334)
at com.uwsoft.editor.renderer.resources.ResourceManager.initAllResources(ResourceManager.java:86)
at com.uwsoft.editor.renderer.Overlap2DStage.initSceneLoader(Overlap2DStage.java:92)
at com.mygdx.Test.GameStage.<init>(GameStage.java:9)
at com.mygdx.Test.TestGame.create(TestGame.java:15)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:143)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.run(LwjglApplication.java:120)

我检查了我的 project.dt,我找到了字段“pixelToWorld”。为什么会这样? 在这里查看我的project.dt:http://pastebin.com/FqnVkw8p


更新:

我遵循这个教程:making-physics-based-side-scroller-project-setup-part-1

我的核心项目只有2个class。 GameStage.javaTestGame.java

GameStage.java

package com.mygdx.Test;

import com.uwsoft.editor.renderer.Overlap2DStage;

public class GameStage extends Overlap2DStage{
    public GameStage() {

        // This will create SceneLoader instance and configure all things like default resource manager, physics e.t.c
        initSceneLoader();

        // This will load MainScene data from json and make Actors from it
        sceneLoader.loadScene("MainScene");

        // Get the root actor and add it to stage
        addActor(sceneLoader.getRoot());
    }
}

TestGame.java

package com.mygdx.Test;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;

public class TestGame extends ApplicationAdapter {

    private GameStage stage;

    @Override
    public void create () {
        stage = new GameStage();
    }

    @Override
    public void render () {
        Gdx.gl.glClearColor(0.8f, 0.8f, 0.8f, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

        stage.act();
        stage.draw();
    }
}

我一直在调查您可以 find here 的资源,我发现 sceneLoader.loadScene() 方法 returns 带有 Scene 的对象被保存在 HashMap 中,带有 .dt(我猜它类似于 .json)文件名.

问题是 loadScene() 方法正在寻找 pixelToWorld 字段,但 中没有 pixelToWorld MainScene.dt

我想你应该打电话给 sceneLoader.loadScene("project");或者你对 MainScene.dt 做错了什么,这就是为什么没有 pixelToWorld

我认为问题在于您使用的是最新版本的 Overlap IDE,但使用的运行时版本太早。 尝试将您的运行时升级到 1.1 并重试,尽管您可能必须使用 sceneloader