1

我是java和J-monkey的新手,我正在尝试制作一个java游戏,所以对于菜单我做了一个枚举,所以我可以在我的任何状态之间切换,但我想保持主文件更短以便它可以易于阅读所以我正在制作子类问题是当运行游戏时它给我一个错误说“线程中抛出未捕获的异常 [LWJGL Renderer Thread,5,main] NullPointerException”我认为这个问题必须是什么使用管道这是我的主文件的代码:

package mygame;

import com.jme3.app.SimpleApplication;
import com.jme3.font.BitmapText;
import com.jme3.material.Material;
import com.jme3.math.ColorRGBA;
import com.jme3.math.Vector3f;
import com.jme3.renderer.RenderManager;
import com.jme3.scene.Spatial;
import com.jme3.scene.Geometry;

import com.jme3.input.*;
import com.jme3.input.controls.*;

public class Main extends SimpleApplication {

//GameStates
enum GameState{Logo, Menu, Playing, Option};
GameState gameState = GameState.Logo;

//Class Variables
Logo logo;


public Main() {

logo = new Logo();

}

public static void main(String[] args) {
    Main app = new Main();
    app.start();
}

public static void logo(String[] args) {
    Logo app = new Logo();
    app.start();
}

@Override
public void simpleInitApp() {
    //Load
    flyCam.setMoveSpeed(20);
    if(gameState == GameState.Logo){
        logo.simpleInitApp();
    }
}

@Override
public void simpleUpdate(float tpf) {

}

@Override
public void simpleRender(RenderManager rm) {
    //TODO: add render code
    //Load
    if(gameState == GameState.Logo)
    {

    }

}
}

这是我的 Logo 子类:

package mygame;

    import com.jme3.app.SimpleApplication;
    import com.jme3.renderer.RenderManager;
    import com.jme3.scene.Spatial;

    public class Logo extends SimpleApplication {

    @Override
    public void simpleInitApp() {
    Spatial Logo_Model = assetManager.loadModel("Models/Teapot/Logo.obj");
    rootNode.attachChild(Logo_Model);
    }

    public void simpleRender(RenderManager rm) {
    //Load

    }
    }

我已经向下移动了我认为给我的问题的堆栈跟踪,因此您不必阅读所有异常,只需向下滚动

完整异常堆栈跟踪:2013 年 11 月 9 日上午 11:29:32 java.util.prefs.WindowsPreferences 警告:无法在根 0x80000002 打开/创建首选项根节点 Software\JavaSoft\Prefs。Windows RegCreateKeyEx(...) 返回错误代码 5。2013 年 11 月 9 日上午 11:29:49 com.jme3.system.JmeDesktopSystem 初始化信息:在 jMonkeyEngine 3.0.0 Beta 上运行 2013 年 11 月 9 日上午 11:29:49 com .jme3.system.Natives extractNativeLibs 信息:提取目录:C:\Users\Zero\Documents\Basic_Test_menu 2013 年 11 月 9 日上午 11:29:49 com.jme3.system.lwjgl.LwjglAbstractDisplay 运行信息:使用 LWJGL 2.8.4 Nov 2013 年 11 月 9 日上午 11:29:49 com.jme3.system.lwjgl.LwjglDisplay createContext 信息:所选显示模式:800 x 600 x 0 @0Hz 2013 年 11 月 9 日上午 11:29:50 com.jme3.system.lwjgl。 LwjglContext printContextInitInfo 信息:适配器:igdumd64 Nov 09,2013 11:OpenGL20, OpenGL21, OpenGL30, OpenGL31, ARBprogram, GLSL100, GLSL110, GLSL120, GLSL130, GLSL140, VertexTextureFetch, TextureArray, FloatTexture, FloatColorBuffer, FloatDepthBuffer, PackedFloatTexture, SharedExponentTexture, PackedFloatColorBuffer, NonPowerOfTwoTextures, MeshInstancing, VertexBufferArray, Multisample, PackedDepthStencilBuffer] Nov 09, 2013上午 11:29:50 com.jme3.asset.AssetConfig loadText 警告:找不到加载程序 com.jme3.scene.plugins.blender.BlenderModelLoader 2013 年 11 月 9 日上午 11:29:50 com.jme3.asset.DesktopAssetManager 信息:DesktopAssetManager创建的。2013 年 11 月 9 日上午 11:29:50 com.jme3.renderer.Camera INFO:已创建相机(W:800,H:600) 2013 年 11 月 9 日上午 11:29:50 com.jme3.renderer.Camera INFO:相机创建(W:800,H:600)2013 年 11 月 9 日上午 11:29:50 com.jme3.input.lwjgl。LwjglMouseInput 初始化信息:鼠标创建。2013 年 11 月 9 日上午 11:29:50 com.jme3.input.lwjgl.LwjglKeyInput 初始化信息:已创建键盘。2013 年 11 月 9 日上午 11:29:51 com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread 信息:AudioRenderer 支持 64 个通道 2013 年 11 月 9 日上午 11:29:51 com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread 信息:音频效果扩展版本:1.0 2013 年 11 月 9 日上午 11:29:51 com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread 信息:音频最大辅助发送:2013 年 11 月 9 日上午 11:29:51 com.jme3.material.MaterialDef 信息:加载的材质定义:Unshaded Nov 09, 2013 11:29:51 AM com.jme3.scene.Node attachChild INFO: Child (BitmapFont) attach to this node (null) Nov 09, 2013 11:29:51 jme3.input.lwjgl.LwjglKeyInput 初始化信息:键盘已创建。2013 年 11 月 9 日上午 11:29:51 com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread 信息:AudioRenderer 支持 64 个通道 2013 年 11 月 9 日上午 11:29:51 com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread 信息:音频效果扩展版本:1.0 2013 年 11 月 9 日上午 11:29:51 com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread 信息:音频最大辅助发送:2013 年 11 月 9 日上午 11:29:51 com.jme3.material.MaterialDef 信息:加载的材质定义:Unshaded Nov 09, 2013 11:29:51 AM com.jme3.scene.Node attachChild INFO: Child (BitmapFont) attach to this node (null) Nov 09, 2013 11:29:51 jme3.input.lwjgl.LwjglKeyInput 初始化信息:键盘已创建。2013 年 11 月 9 日上午 11:29:51 com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread 信息:AudioRenderer 支持 64 个通道 2013 年 11 月 9 日上午 11:29:51 com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread 信息:音频效果扩展版本:1.0 2013 年 11 月 9 日上午 11:29:51 com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread 信息:音频最大辅助发送:2013 年 11 月 9 日上午 11:29:51 com.jme3.material.MaterialDef 信息:加载的材质定义:Unshaded Nov 09, 2013 11:29:51 AM com.jme3.scene.Node attachChild INFO: Child (BitmapFont) attach to this node (null) Nov 09, 2013 11:29:51

AM com.jme3.app.Application handleError SEVERE: Uncaught exception
   thrown in Thread[LWJGL Renderer Thread,5,main]

   java.lang.NullPointerException
at mygame.Logo.simpleInitApp(Logo.java:17)
at mygame.Main.simpleInitApp(Main.java:46)
at com.jme3.app.SimpleApplication.initialize(SimpleApplication.java:225)
at                com.jme3.system.lwjgl.LwjglAbstractDisplay.initInThread(LwjglAbstractDisplay.java:130)
at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:207)
at java.lang.Thread.run(Thread.java:722)


    Nov 09, 2013 11:29:51 AM com.jme3.renderer.lwjgl.LwjglRenderer cleanup
    INFO: Deleting objects and invalidating state
    Nov 09, 2013 11:29:51 AM com.jme3.input.lwjgl.LwjglMouseInput destroy
    INFO: Mouse destroyed.
    Nov 09, 2013 11:29:51 AM com.jme3.input.lwjgl.LwjglKeyInput destroy
    INFO: Keyboard destroyed.
    Nov 09, 2013 11:29:51 AM com.jme3.system.lwjgl.LwjglAbstractDisplay deinitInThread
    INFO: Display destroyed.
4

1 回答 1

1

问题assetManager在那个时间点是空的。要么分配太晚,要么根本忘记分配。

于 2013-11-10T08:04:26.317 回答