我一直在想这个。我不知道事情怎么会同时发生。
我想知道如何在没有单独线程的情况下在 java 中同步。例如,在一个真正的视频游戏中,事情如何在没有单独线程的情况下同时发生?
一个人如何在游戏中同时移动两条肢体?
我怎么能在java中做到这一点?
我一直在想这个。我不知道事情怎么会同时发生。
我想知道如何在没有单独线程的情况下在 java 中同步。例如,在一个真正的视频游戏中,事情如何在没有单独线程的情况下同时发生?
一个人如何在游戏中同时移动两条肢体?
我怎么能在java中做到这一点?
一般他们不会。视频游戏中的这些更新通常一次完成,然后在一个帧中一次渲染。所以有一个状态更新步骤,然后是一个渲染步骤。
在更新步骤中,例如,手臂中骨骼的位置将根据它们应该如何移动(可能是响应从键盘或鼠标接收到的输入)进行更新,然后再次渲染整个场景新职位。
没有线程,事情就不会(技术上)同时发生。通常,程序会等待来自某些东西(用户或网络,或者只是一个您设置为每 100 毫秒关闭一次的计时器)的输入,当程序的一部分在等待时,另一部分可能跑。
这些情况通常是事件驱动的——请查看观察者模式,了解如何处理这种情况。您将有一些东西等待输入,然后触发适当的响应事件,这些事件被“等待”该事件发生的任意数量的对象“监听”。
这通常会呈现同时发生的事情的外观,因为您尝试使在这些事件上运行的代码保持较小 - 它是如此之快以至于您无法区分。
但是,如果您真的希望事情同时运行,您只需要使用线程(或进入显卡编程 - 这很有趣:D)
标准的软件架构是一个游戏循环。基本上是这样的:
while the game is running
for each object in the game
check for interactions with other objects
update the objects position
draw the game state to a hidden surface
copy the hidden surface to the screen