当我将操作系统切换到Mac时,我的代码不起作用

我不喜欢发布这类问题。但是这次我真的不知道发生了什么。

我在PC上编写了此代码,并且运行良好。但是在我的Macbook上它不起作用。它陷入第二个循环,看起来像什么?有办法防止这种情况吗? Macbook不够快吗?

代码:

package com.mittspel;

public class Handler implements Runnable {

Thread thread;
boolean running = true;
boolean render = false;
int UPDATE_TIME = 1/60;

Handler() {

    thread = new Thread(this);
    thread.run();
}

public void run() {

    double startTime = System.nanoTime() / Math.pow(10,9);
    double endTime = 0;
    double passedTime = 0;
    double notProcessedTime = 0;    //So we dont skip frames.
    double frameTime = 0;
    int frames = 0;
    int fps = 0;

    while(running) {
        render = false;
        endTime = System.nanoTime() / Math.pow(10,9);
        passedTime = endTime - startTime;

        frameTime += passedTime;
        notProcessedTime += passedTime;
        System.out.println("First loop");
        do {
            notProcessedTime -= UPDATE_TIME;
            render = true;
            frames++;
            if(frameTime == 1.0) {
                fps = frames;
                System.out.println(fps);
                frames = 0;
                frameTime = 0;
                fps = 0;

            }

            System.out.println("Second Loop");

        }
        while(notProcessedTime >= UPDATE_TIME);

        if(render) {

            //TODO: Render stuff
        }




    }
}
public void start() {


}

public static void main(String[] args) {
    Handler handler = new Handler();
    handler.start();

}

}

出了什么问题? 上面的代码应该是游戏循环的“开始”。当游戏“运行”时,第一个循环运行,而当“ notProcessedTime”超过1/60时,第二个循环运行。为什么?因为我希望在那里的代码以60fps更新。在while循环中,我还从notProcessedTime中删除了UPDATE_TIME,这简而言之意味着我不希望代码跳过帧。在第二个循环的后面,我要打印fps。如果正常运行,则应为60fps。

发布前我尝试了什么?

我尝试在循环中制作一些“ System.out.println”并删除了代码。它给了我以下结果:

  1. 删除第二个while循环时,它会在第一个循环中正确循环。真的很明显。
  2. 在两个循环中都插入“ System.out.println”时(如上面的代码所示),我发现它在第一个循环中只打印一次,然后仅将第二个循环到无限大。

我自己调试后预测,它会卡在第二个while循环中。当代码在PC上运行时,我想知道它是否与硬件有关?我被困住了,我需要帮助。我已经调试了它,没有比这个更好的结论了。

我很难插入上面的代码,对此表示抱歉!

tszgcs 回答:当我将操作系统切换到Mac时,我的代码不起作用

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2572612.html

大家都在问