Android简单游戏框架结构八

本文介绍游戏主循环的设计原理,包括不同状态下的逻辑处理、渲染及延时控制等关键环节,并提供具体的实现代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.1.2游戏主循环

游戏主循环需要处理的是不同状态下游戏的逻辑、渲染以及延时。其中延时是需要尽量精确控制的,它是游戏速度的主要控制方法。当然游戏速度的控制还有许多其他的方法,现有游戏框架仅对固定FPS进行设置。

关于延时部分,其中延时时间是由FPS的设定以及每次循环被游戏逻辑以及渲染消耗的时间所控制,因此需要计算逻辑以及渲染所消耗的时间,再以标准时间减掉消耗的时间才是循环暂停的时间。

首先在循环起始处需要记录循环起始时间,设置变量startTime进行记录。记录的代码如下:

startTime = System.currentTimeMillis();

计算延时时间代码如下:

delayTime = startTime + 1000/fps -System.currentTimeMillis();

计算后需要判断延时时间是否超过了正常的延时时间,若超过了则delayTime为负值,此时需要修正delayTime为0。

游戏循环代码如下:

public void run() {
// TODO Auto-generated method stub
long startTime;
long delayTime;
while(!threadEnd){
startTime = System.currentTimeMillis();
if(!threadPouse){
switch(gameState){
case GAMESTATE_LOADING:
loadingLogic();
break;
case GAMESTATE_LOGO:
logoLogic();
break;
case GAMESTATE_MENU:
menuLogic();
break;
case GAMESTATE_PLAY:
playLogic();
break;
case GAMESTATE_END:
endLogic();
break;
}

}
render();
try {
delayTime = startTime + 1000/fps -System.currentTimeMillis();
if(delayTime < 0){
delayTime = 0;
}
Thread.sleep(delayTime);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值