jMonkeyEngine:flyCam 和 inputManager 都是 return NULL

jMonkeyEngine: flyCam and inputManager both return NULL

我遇到了麻烦:突然 flyCam 和 inputManager inside simpleInitApp() 都变成了 NULL。

我不明白发生了什么事!他们总是空的!

public void simpleInitApp() {
        Box b = new Box(1, 1, 1);
        System.out.println("inputManager = " + inputManager + "; flyCam = " + flyCam);
        Geometry geom = new Geometry("Box", b);

        Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
        mat.setColor("Color", ColorRGBA.Blue);
        geom.setMaterial(mat);

        rootNode.attachChild(geom);
    }

输出:inputManager = null; flyCam = null

我的所有示例(我通过 jMonkey Book 做了很多示例)现在抛出 NullPointer 异常(它们之前有效)。

我试过:

  1. 重新安装 jMonkey SDK 并清理 Windows 注册表
  2. 重新安装视频驱动程序

...没有任何帮助...

我不明白我到底做了什么......据我所知我刚刚写了这个:

private final InputListener flyCamListener = new ActionListener() {
        @Override
        public void onAction(String name, boolean isPressed, float tpf) {
            boolean enabled = app.getFlyByCamera().isEnabled();
            app.getFlyByCamera().setEnabled(!enabled);
        }
    };

一切都被压碎了。

===

jMonkey 3.0.10_x86,Java:1.7.0_51,Windows 7 x86,OpenGL:3.0.0,GLSL 版本:1.30 - Intel Build 8.15 .10.2342

我想我解决了问题。在其中一个论坛上,我发现并在新项目中包含了这样一个部分:

    Main app = new Main();
    AppSettings settings = new AppSettings(true);
    settings.setRenderer(AppSettings.LWJGL_OPENGL_ANY);
    settings.setResolution(640, 480);
    settings.setFrameRate(30);
    app.setSettings(settings);
    app.start();

...一切都开始工作了!包括我以前所有的应用程序都意外地开始崩溃。

所以我认为关键点是 setRenderer() 方法。我记得我在没有这样一行的情况下启动了我的灾难性应用程序,并且可能为了它自己而设置了 jMonkey "saved"。

那么为什么 jMonkey 会在全局和永久地保留它的不稳定设置呢?其他应用全部卡死,重装SDK也无济于事等等!