【问题标题】:Android: Counting time in my main loopAndroid:在我的主循环中计算时间
【发布时间】:2013-01-05 01:46:16
【问题描述】:

我想在玩我的游戏时在后台运行一个计数器,这样当玩家存活 1 分钟时,就会发生一些事情。

目前,我正在考虑通过在启动时获取系统时间(比如在 surfaceCreated 中)然后在我的物理更新方法中获取当前时间并比较两者来做到这一点。当 60,000 毫秒过去了,我知道显然已经过去了 1 分钟。

这是最好的方法吗?还是有另一种/更好/更简单的方法。

谢谢大家

【问题讨论】:

    标签: time timer real-time counter


    【解决方案1】:

    这是一个很好的方法。

    没有太多其他选择。在我的游戏中,我有一个秒表,它会在帧更新之前停止重置,所以我可以确定花在做其他事情上的时间量。然后,每个对象都以这段时间步进。

    这很好,因为它允许我以相对于时间而不是帧率的速度移动每个对象,所以如果不同设备上的帧率不同,物体仍然以相同的速度移动。

    如果你不这样做,你真的应该这样做。如果你的 step 函数看起来像

    object.x += speed.x;
    

    那真的应该是

    object.x += speed.x (in units/s) * step_time (in ms) / 1000.0
    

    如果您这样做,最好只创建一个计时器对象,该对象在计时器到期时运行 Runnable(即,它总结了步进时间并在达到 60 秒时触发)。

    【讨论】:

    • 嘿 AStupidNoob 非常感谢您的回复 - 我所有的精灵动作都是基于 Delta 时间的,所以在所有屏幕上运行相同的“速度”,最后我写了一个小方法来完成我的工作上面说过,但是在我阅读时使用 SystemClock.elapsedRealtime() 最好使用它!再次感谢:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多