Java 使用Libgdx获取DesktopLauncher的变量

Java 使用Libgdx获取DesktopLauncher的变量,java,nullpointerexception,get,libgdx,Java,Nullpointerexception,Get,Libgdx,我正在尝试创建一个2d游戏,现在我需要游戏的宽度。我试图使用Gdx.graphics.getWidth(),但这给了我一个空指针。在网上搜索之后,我发现了这个 这就是解释,但正如您在我的代码中看到的,我使用常量和缩放。我的一位队友编写了下面的代码,所以我不想对其进行太多更改。但是,有人能告诉我如何从这种情况下获得比赛的宽度吗?谢谢 import com.badlogic.gdx.backends.lwjgl.LwjglApplication; import com.badlogic.gdx.ba

我正在尝试创建一个2d游戏,现在我需要游戏的宽度。我试图使用Gdx.graphics.getWidth(),但这给了我一个空指针。在网上搜索之后,我发现了这个 这就是解释,但正如您在我的代码中看到的,我使用常量和缩放。我的一位队友编写了下面的代码,所以我不想对其进行太多更改。但是,有人能告诉我如何从这种情况下获得比赛的宽度吗?谢谢

import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;
import edu.chalmers.RunningMan.RunningMan;
import static edu.chalmers.RunningMan.utils.Constants.V_HEIGHT;
import static edu.chalmers.RunningMan.utils.Constants.V_WIDTH;

public class DesktopLauncher {
    public static void main (String[] arg) {
        LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();

        config.title = RunningMan.TITLE;
        config.width = V_WIDTH * RunningMan.SCALE;
        config.height = V_HEIGHT * RunningMan.SCALE;
        new LwjglApplication(new RunningMan(), config);
    }
}

您无法在此阶段获取游戏窗口的
Width()
,因为它尚未设置

newlwjglapplication(newrunningman(),config)在此调用之前,您的游戏窗口没有宽度或高度,这就是为什么会出现空指针异常!:

以下是如何正确设置游戏窗口的示例:

public class DesktopLauncher {
    public static void main (String[] arg) {
        LwjglApplicationConfiguration cfg = new LwjglApplicationConfiguration();
        cfg.title = " Game Name ";
        cfg.vSyncEnabled = true;
        cfg.width = 900;  < ---- here your game window width  will be set the firs time 
        cfg.height = 600;  < --- here yout game window height will be set for the first time 

        new LwjglApplication(new MainGame(), cfg);
    }
}
公共类DesktopLauncher{
公共静态void main(字符串[]arg){
LWJGLAPPLICATION配置cfg=新LWJGLAPPLICATION配置();
cfg.title=“游戏名称”;
cfg.vSyncEnabled=true;
cfg.width=900;<----这里您的游戏窗口宽度将设置为第一时间
cfg.height=600;<---此处首次设置游戏窗口高度
新的LwjglApplication(新的MainGame(),cfg);
}
}

谢谢,但我不太明白该怎么办?而不是新的LwjglApplication();我是否应该编写新的LwjglApplication(new RunningMan(),config)?你需要设置你的窗口宽度和高度而不是抱歉有点慢,但你能用代码给我看吗?我已经贴了一个例子,我的回答非常感谢!它看起来和我的代码非常相似。我认为唯一的真正区别是vSynchEnabled=true;我假设在设置宽度和高度之前只需要添加该行,这是否正确?毕竟,Runningman.SCALE、V_WIDTH和V.HEIGHT都是常量。