在Android示例中,如LunarLander,以及网上博客上写的许多other tutorials,游戏循环几乎总是运行一个单独的线程来调用状态更新和呈现游戏的各个部分。
这是为什么?有哪些优点和缺点?我能想到的唯一原因就是让应用程序响应输入,例如用户按下菜单或后退按钮。除此之外,游戏必须尽可能快地在更新/渲染周期中进行调整。
我知道这是一个很好的理由,虽然人们希望如果一个人的游戏以合适的帧率运行,该应用程序仍将保持足够的响应能力。但是,有没有其他原因?
另一方面,我认为这会让访问游戏资源变得更加头痛,例如游戏对象管理器或音响系统,它们可能存在于一个单独的线程中。
答案 0 :(得分:0)
在Lunar登陆器和其他Android应用程序上 - 让你的表面视图在一个单独的线程上运行是很重要的,这样android操作系统就不会为任何长时间运行的进程杀死它。 Android保留主UI线程 - 用于菜单和主页按钮等 - 可以随时收到用户输入。如果你的应用程序导致主线程变慢,操作系统将终止你的线程并结束游戏。
因此,从Surface View线程运行游戏循环可让游戏在焦点时尽可能快地运行,但它也可以让android在需要时中断它,例如当呼叫到来时在,或用户按下主页按钮。