我是java和J-monkey的新手,我正在尝试制作一个java游戏,所以对于菜单我已经制作了一个枚举,所以我可以在我的任何状态之间切换,但我想保持主文件更短所以它可以很容易阅读所以我正在制作子类的问题是,当运行游戏时它给我一个错误,说“线程中抛出未捕获的异常[LWJGL渲染器线程,5,主要] 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
}
}
我已经向下移动堆栈跟踪,我认为这是我的问题所以你不必阅读所有Exception只是向下滚动
完整异常堆栈跟踪: 2013年11月9日上午11:29:32 java.util.prefs.WindowsPreferences 警告:无法在根0x80000002处打开/创建prefs根节点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 run 信息:使用LWJGL 2.8.4 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 2013年11月9日上午11:29:50 com.jme3.system.lwjgl.LwjglContext printContextInitInfo 信息:驱动程序版本:null 2013年11月9日上午11:29:50 com.jme3.system.lwjgl.LwjglContext printContextInitInfo 信息:供应商:英特尔 2013年11月9日上午11:29:50 com.jme3.system.lwjgl.LwjglContext printContextInitInfo 信息:OpenGL版本:3.1.0 - Build 9.17.10.2932 2013年11月9日上午11:29:50 com.jme3.system.lwjgl.LwjglContext printContextInitInfo 信息:渲染器:英特尔(R)高清显卡 2013年11月9日上午11:29:50 com.jme3.system.lwjgl.LwjglContext printContextInitInfo 信息:GLSL版本:1.40 - 英特尔Build 9.17.10.2932 2013年11月9日上午11:29:50 com.jme3.system.lwjgl.LwjglTimer 信息:定时器分辨率:每秒1,000个滴答 2013年11月9日上午11:29:50 com.jme3.renderer.lwjgl.LwjglRenderer初始化 INFO:上限:[帧缓冲,FrameBufferMRT,FrameBufferMultisample,OpenGL20,OpenGL21,OpenGL30,OpenGL31,ARBprogram,GLSL100,GLSL110,GLSL120,GLSL130,GLSL140,VertexTextureFetch,TextureArray,FloatTexture,FloatColorBuffer,FloatDepthBuffer,PackedFloatTexture,SharedExponentTexture,PackedFloatColorBuffer,NonPowerOfTwoTextures,MeshInstancing ,VertexBufferArray,Multisample,PackedDepthStencilBuffer] 2013年11月9日上午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 信息:相机创建(W:800,H:600) 2013年11月9日上午11:29:50 com.jme3.renderer.Camera 信息:相机创建(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 initialize 信息:键盘已创建。 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 信息:音频最大辅助发送:4 2013年11月9日上午11:29:51 com.jme3.material.MaterialDef 信息:加载的材料定义:无阴影 2013年11月9日上午11:29:51 com.jme3.scene.Node attachChild 信息:附加到此节点的子(BitmapFont)(null) 2013年11月9日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.
答案 0 :(得分:1)
问题是assetManager
在那个时间点为空。要么分配太晚,要么忘记分配它。