gpt4 book ai didi

java - Android游戏循环逻辑困惑

转载 作者:行者123 更新时间:2023-11-30 11:23:13 25 4
gpt4 key购买 nike

我在网上四处看了看,找不到以下问题的有效答案。在 Android 中,当使用 SurfaceView 和 Thread 来促进游戏循环时,通常您的 onDraw 调用会永久运行。这对于渲染事物来说很好,但由于您的游戏逻辑也在这个循环中(检查游戏结束条件、鼠标事件等),如果您的代码只需要运行一次怎么办?

感觉不太清楚,举个例子吧。

我正在制作一个有多个状态的游戏。当状态设置为标题时,游戏循环执行 titleScreenRendering() 方法,该方法具有从 0 到 1 的 alpha 淡入的图像;类似启动画面的东西。由于此调用在游戏循环中,“titleScreenRendering”被调用了 9999999 次,图像淡入淡出逻辑也是如此,这显然不起作用。

我发现一种感觉像是 hack 的方法是在游戏循环第一次运行该方法时创建一个 boolean 值并将其设置为 false,这样在 999999 次后续调用中至少该部分代码是不再运行。

我在这里做错了什么?是不是我的设计有问题,如果是,为什么 99% 的 Android 游戏教程似乎都提倡这种方法?请让一些聪明的人能给我指明正确的方向。我想自己做这件事,但我很想只使用图书馆。

最佳答案

我在 Android 中以与您正在做的有点相似的方式实现了我的游戏。我在模拟屏幕的引擎中添加了一个“层”。在游戏核心循环中,我只绘制和更新屏幕。这样,如果我有多个屏幕,如菜单等,我一次只绘制和更新其中一个。引擎具有对当前屏幕的引用。

也可以将屏幕划分为多个状态。然后状态或状态机知道在屏幕的特定状态下应该进行什么样的计算或绘制。

最终你需要在某个地方有某种逻辑(控制流),但我会尝试将逻辑封装到负责某些事情的类中。这样以后就更容易理解和重构游戏。

关于java - Android游戏循环逻辑困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21348358/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com