2016-09-13 6 views
1

갑자기 flyCam과 simpleInitApp() 내부의 inputManager가 모두 NULL이되었습니다.jMonkeyEngine : flyCam과 inputManager가 모두 NULL을 반환합니다.

나는 무슨 일이 일어 났는지 이해하지 못한다! 그들은 항상 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, 자바 : 1.7.0_51, 윈도우 7 86, OpenGL은 : 3.0.0, GLSL 버전 : 1.30 - 인텔 8.15.10.2342

+0

'FlyCamAppState'를 초기화하지 않으면 (예 : 'SimpleApplication'의 기본 생성자를 사용하지 않음) 'flyCam'은 NULL이됩니다. config에서 "UseInput"을 false로 설정하면'inputManager'는 NULL이됩니다. – 1000ml

답변

0

빌드 내가 해결 추측 문제. 포럼에서 내가 발견하고 NEW 프로젝트와 같은 섹션에 포함 :

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 자체를 위해 "설정"을 저장했음을 기억합니다.

그렇다면 왜 jMonkey는 UNSTABLE 설정을 전역 적으로 영구적으로 유지합니까? 다른 모든 응용 프로그램이 부숴 지므로 SDK를 다시 설치해도 도움이되지 않습니다.

+1

"비참한"응용 프로그램을 호출하면 해당 설정이 "기본값"으로 저장됩니다. '새 AppSettings (true)'를 사용하는 다른 앱 (여기에서 '기본 설정 사용'을 의미)은 해당 설정을 사용합니다. 이것이 해상도 설정 등이 세션간에 저장되는 이유입니다. jme 나 SDK 자체가 아니라 설정을 기억합니다. – reden

+0

당신은 절대적으로 옳습니다. 내 생각에 가장 좋은 해결책은 설정을 항상 설정하고 기본값을 사용하지 않는 것입니다. –