我是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)
{
}
}
}
这是我的徽标子类:
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上打开/创建首选项根节点Software \ JavaSoft \ Prefs。 Windows RegCreateKeyEx(...)返回了错误代码5。
2013年11月9日,上午11:29:49 com.jme3.system.JmeDesktopSystem初始化
INFO:在jMonkeyEngine 3.0.0 Beta上运行
2013年11月9日11:29:49 com.jme3.system.Natives extractNativeLibs
INFO:提取目录:C:\ Users \ Zero \ Documents \ Basic_Test_menu
2013年11月9日,上午11:29:49 com.jme3.system.lwjgl.LwjglAbstractDisplay运行
INFO:使用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
信息:驱动程序版本:空
2013年11月9日上午11:29:50 com.jme3.system.lwjgl.LwjglContext printContextInitInfo
INFO:供应商:Intel
2013年11月9日上午11:29:50 com.jme3.system.lwjgl.LwjglContext printContextInitInfo
信息:OpenGL版本:3.1.0-内部版本9.17.10.2932
2013年11月9日上午11:29:50 com.jme3.system.lwjgl.LwjglContext printContextInitInfo
INFO:渲染器:Intel(R)HD Graphics
2013年11月9日上午11:29:50 com.jme3.system.lwjgl.LwjglContext printContextInitInfo
信息:GLSL版本:1.40-Intel Build 9.17.10.2932
2013年11月9日,上午11:29:50 com.jme3.system.lwjgl.LwjglTimer
INFO:计时器分辨率:每秒1,000个刻度
2013年11月9日上午11:29:50 com.jme3.renderer.lwjgl.LwjglRenderer初始化
信息:上限:[FrameBuffer,FrameBufferMRT,FrameBufferMultisample,OpenGL20,OpenGL21,OpenGL30,OpenGL31,ARBprogram,GLSL100,GLSL110,GLSL120,GLSL130,GLSL140,VertexTextureFetch,TextureArray,FloatTexture,FloatColorBuffer,FloatFlostateded,FloatFloatstatedBuffer, ,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
INFO:创建了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初始化
信息:键盘已创建。
2013年11月9日上午11:29:51 com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread
INFO:AudioRenderer支持64个通道
2013年11月9日上午11:29:51 com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread
INFO:音频效果扩展版本: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
INFO:加载的材质定义:未着色
2013年11月9日11:29:51 com.jme3.scene.Node attachChild
INFO:子级(BitmapFont)附加到此节点(空)
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.
最佳答案
问题是assetManager
在该时间点为空。要么为时已晚分配它,要么根本忘记分配它。
关于java - J-猴子子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19872155/