如何在lwjgl游戏崩溃时显示对话框(java)

时间:2016-04-24 19:58:24

标签: java dialog lwjgl

我正在使用LWJGL制作我的新游戏。

快速提问:

当我的游戏崩溃时:

  

线程“main”java.lang.NullPointerException中的异常       在engineTester.MainGameLoop.main(MainGameLoop.java:376)   C:\ Users \ Kojo Ofori \ AppData \ Local \ NetBeans \ Cache \ 8.1 \ executor-snippets \ run.xml:53:Java返回:1

如何让它在对话框中打印出来,这样当有人运行它并崩溃时,他们就能看到它已经崩溃的对话框

希望它有意义

3 个答案:

答案 0 :(得分:3)

我建议使用UncaughtHandler来捕获任何未处理的异常并实际导致游戏崩溃。您没有具体说明您使用的是哪个版本的LWJGL,但如果您使用的是LWJGL 2,则它有一个允许您显示警报的Sys类。

Sys.alert(标题,消息)

不幸的是LWJGL 3删除了这个类,GLFW似乎不支持在此时创建消息框。

设置UncaughtHandler(Main方法中的第一行)

Thread.setDefaultUncaughtExceptionHandler(UncaughtHandler.instance);

我的UncaughtHandler课程:

public class UncaughtHandler implements Thread.UncaughtExceptionHandler{
    public static UncaughtHandler instance = new UncaughtHandler();

    @Override
    public void uncaughtException(Thread t, Throwable e) {
        Sys.alert("Uncaught Exception!", e.getMessage());
    }
}

答案 1 :(得分:1)

您可以使用try ... catch并捕获异常(在基类/超类中),向用户发送他可以报告的错误代码并记录更详细的错误。根据您的配置:

 ...
    try {
        /* game is playing() */
    }
    catch (MyGameException gameException) {        
       logging.log(gameException.log());        
       sendErrorCodeToTheUser(gameException);        
    }

我与一位同事进行过类似的讨论,用户可以报告错误代码1-10或1-1000,而程序员可以在其中找到null指针所在的详细日志。

答案 2 :(得分:0)

如果您使用的是lwjgl3,则应使用TinyFileDialogs binding

请尽可能避免摆动