libgdx:[25]建立游戏循环

2024-10-14 22:52:52

此篇简单介绍游戏循环的建立

工具/原料

libgdx

eclipse

Building the game loop 建立游戏循环

1、游戏循环将会寄宿于CanyonBunnyMain类的render()方法里。在我们可以添加新代码之前,我们需要导入下面的包来获得一些将要用到的类的访问路径。... ...三条倒入语句省略,具体请查看图书。

2、After that, add the following code to create() :然后把下面的代码添加到create()方法中:。。。 。。。

3、首先,我们把libgdx的内置记录日志的级别调到debug。 这个模块允许我们在控制台打印所有的 在运行时将被记录下来的东西。注意:在发布你的游戏之前不要忘记把游戏的记录级别调到更合适的水平比如log_none或者log_info。

4、在那之后我们简单的创建一个worldcontroller和worldrender类的实例并在各自的成员变量中保存他们。为了能够持续的升级和在屏幕上绘制游戏世界,在render()方法中添加下面的代码:。。。 。。。

5、游戏世界根据deltatime逐步升级。幸好libgdx早就为我们准备好了调用deltatime的方法,我们可以直接请求g颊俄岿髭dx.graphics模块的getDeltatime() 方法获得deltatime并把它传递给worldcontroller的updat()方法。在那之后,libgdx直接执行两个被gdx.gl模块调用的OpenGL。第一次调用glclearcolor()设置颜色,用的是一个用十六进制标示的RGB值的浅蓝色。每个颜色成分都被表示成一个0到1之间的八位浮点数。这就是我们通常把每个颜色部分的值表示为255.0f(8bit=28=256=0..255每个颜色部分256个级别)的原因。有些人比较喜欢用十六进制的表示方法来表示颜色,有些则喜欢用十进制的,如果你喜欢用十进制的方式表示颜色下面是一个用十进制表示颜色的例子。。。

6、第二个调用glclear()用我们之前设置的颜色填充屏幕因此清除屏幕上所有的先前的内容。最后一步是把最新的游戏界面绘制在屏幕上。

7、不要改变前面代码命令的执行顺碌食撞搁序,例如,你可以先绘制然后再升级游戏界面。这种情况下游戏的状态将会永远比现在的游戏状态滞后一个帧。这个变化很小以至于不会被觉察到。这当然取决于很多因素。跟一个卡片类游戏相比如果你的游戏是一个要求很快到反映速度的动作游戏,那这个问题将会很明显。

8、Next, add the following code to resize() :下一步添加如下代码到resize()方法中:

9、无论何时一个改变尺寸的事件发生,applicationlistener接口的resize()方法都会被调用。因为这个方法跟我们的游垡幢踔笠戏渲染有关,我们希望它能够在worldrender中得到控制,所以就把它传进的参数直接传递给worldrender的resize方法。

10、同样的在dispose方法中添加代码:

11、无论何时一个dispose事件发生,他将传递给renderer。这里有一些很小的代码的更改来提高代码在android设备上的执行效率。就像我们在第二章多平台支持中所学的,在android平台上有些让游戏暂停和重新开始的事件。以防暂停和恢复事件的发生,我们通常希望我们的游戏也依照事件做相应的处理。为了实现这个功能我们需要一个新的成员变量:paused.添加下面的代码:privatebooleanpaused;

12、然后如下面代码所示更改 create()和render()方法。。。。。

13、最后,添加代码到pause()和resume()方法以便游戏能够通过设置paused为正确的状态,回应这个事件。(通过自带方法设置paused变量的值)

14、现在我们得到了一个舞台,现在将我们的开发过程快速地浏览一遍会很有用,如果一切都按照我们期望的那样实现了。选择一个平台运行你的游戏来测试一下。下面是一个在window上运行的截图。

libgdx:[25]建立游戏循环

15、你应该看到蓝色填满了整个屏幕。确实地,这并不怎么令人兴奋,因为他并不怎么像是一个游戏。不管怎么样我们所做的一切已经为我们下一步扩展我们的游戏打下了一个良好的基础。

猜你喜欢