Wil*_*ood 1 android battery opengl-es libgdx 2d-games
我正在寻找一种在我正在开发的游戏中最大限度地减少电池使用量,并且电池使用量很难准确测量,所以我希望知道的人能够回答这个问题.
是否值得我实现一个系统,当屏幕上显示的内容没有更新时我不会渲染?就像是
updated = false;
for each component
updated |= component.update();
if (updated)
render();
Run Code Online (Sandbox Code Playgroud)
如果它是值得的,那么这种事情在开始时更容易添加,而不是在需要时尝试添加.
如果我通过CPU渲染,那么我肯定会说它值得做,但通过GPU我不太确定.与屏幕上的东西相比,是否可以节省大量的电池?
编辑: 有点澄清.我正在创建一个文字游戏,所以很多时候用户都会盯着一个不动的屏幕寻找单词.根据正在播放游戏的模式,屏幕上可能会发生一些不是由用户输入触发的事情.例如,屏幕上每5秒出现一个新对象.渲染300帧,每5秒钟没有任何事情发生似乎是一种真正的浪费,这是我想要避免的.
我不知道,如果你的方法不减少电池的使用,但我认为这将是最好禁用continuous Rendering通过调用Gdx.graphics.setContinuousRendering(false);在ApplicationlistenerS创建或这样的事情.通过这样做,您可以停止游戏循环调用您的render()方法.然后仅在以下情况下调用它:
Gdx.graphics.requestRendering();Gdx.app.postRunnable()阅读本文以获取更多信息.
编辑:
我现在看了你的编辑.好吧"益智游戏"对我来说听起来有点普遍.如果您确定,用户将长时间盯着静止的屏幕,找到可能的解决方案,那么也许non-continuous rendering是正确的方法.但是如果它是(例如)具有一些拼图元素的平台游戏,则用户可能会移动整个时间并"即时"解决难题.在这种情况下,我会正常加油.此外,你必须考虑当前视图之外的其他逻辑:再次使用平台游戏的例子:如果你必须解决一个谜题来打开一扇门或其他什么,在这扇门后面也许有些怪物在等着你来.因此,如果他们巡逻,你必须更新他们的位置,即使他们在视线之外(在门后面,在建筑物外面......).在这种情况下,我不会再使用non-continuous rendering.render()如果被解雇,你提到的计时器将会调用.请参阅此参考.要运行某些东西,不需要调用render()就需要在另一个上运行它Thread,所以为此使用java.util.Timer而不是libgdx Timer.
编辑:因为你已经用"文字游戏"取代了"益智游戏",我想我知道你的意思.通常,您只需要在触发输入事件时进行渲染.但是,据我所知,你想要一些物体出现在屏幕上(使它比一个不动的图片更有趣?).为此您需要使用a Timer,我不确定libgdx Timer是否可以执行此操作,如果没有,您可以使用java.util.Timer,当Timer事件被触发时,您只需调用requestRendering()并在渲染更新gamelogic和重绘中.
| 归档时间: |
|
| 查看次数: |
744 次 |
| 最近记录: |