5

現在、LWJGLで簡単な問題が発生しています。ゲームを実行すると、実際にはすべてが正しく実行され、正しく終了したように見えますが、タスクマネージャーの内部を見ると、ゲームを閉じた後、ゲームが25%のCPUを使用していることがわかります(約2〜実際に実行しているときは3%)、アプリケーションを終了するときに何かを見逃した可能性があると思います。

私の主な機能コード:

public static void main(String[] args){
    try {
        init();
    }catch(LWJGLException e){
        System.out.println("LWJGLException\n");
        e.printStackTrace();
    }
    try{
        gameLoop();
    }catch(Exception ex){
        ex.printStackTrace();
    }finally{
        cleanup();
    }
}

掃除:

public static void cleanup(){
    System.out.println("Running cleanup code.");
    Display.destroy();
    System.exit(0);
}

実際には、「実行中のクリーンアップコード」を読み取ることができます。私の問題は、すべてのプロセスをクリアするために他に何かする必要があるかどうかわからないことです。このゲームもシングルスレッドを使用しています。

4

2 に答える 2

1

あなたのコードには何も問題はないと思います。あなたの問題が私が考えているものである場合、すぐに修正することはできません。

以下は、自分自身に尋ねるべき基本的な質問です。どのOSを使用していますか?Java のバージョンや LWJGL のバージョンは? (更新すると役立つ場合があります) マインクラフトというゲームを聞いたことがありますか、またはプレイしたことがありますか? Linux を使用していて、Minecraft を閉じたときにこれが表示された場合は、それが問題である可能性があります。

于 2012-10-22T23:34:53.250 に答える
0

64 ビット Windows でも同じ問題が発生しました。ランタイム例外 (またはその他のキャッチされていない例外) が発生したときに、アプリが閉じていません。おそらく理由は、表示ウィンドウを閉じる際に影響を与えた独立したスレッドで例外をスローしたことでしたが、他のすべてのスレッドはまだ機能していました。私はブルート フォース ソリューションを思いつきました: Thread メソッドをオーバーライドします。

    Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {
         @Override
         public void uncaughtException (Thread thread, final Throwable ex) {
            ex.printStackTrace();
            Display.destroy();
            System.exit(0);
         }});

    new LwjglApplication(new StartScreen(application), cfg);
于 2015-08-14T11:26:31.647 に答える