|
|
发表于 2007-5-23 18:24:00
|
显示全部楼层
Re: Re: Re:讨论:效率最高的游戏循环,怎么写?
snhun: Re: Re:讨论:效率最高的游戏循环,怎么写?
错了~~~
我的意思是:
1、有系统消息的时候处理“所有的”系统消息(因为是循环),处理完“[...
表达能力太差了!!!
你的意思是:当处理到游戏逻辑的时候,一定没有系统消息了。
我告诉你,也错了,你只能处理一段时间内的系统消息,就在你处理游戏逻辑的时候,又有系统消息来了,只是你已经跑过了那段while了,所以你不知道。新的系统消息就需要在下一次的MainLoop里面来处理了。这是轮讯机制,不是事件触发机制,你不可能在一个Loop里面可以处理完不同时间片来的系统消息,所以这种写法和用if是一样的道理,最好的方式是用for,或者在while里面加计数器,否则游戏逻辑处理不到,游戏就会卡住,任何玩家都不会接受这种情况的。
来,哥哥给你改一下:
while( true )
{
int iMsgCnt = 0;
while( HaveSysMsg ) // 小弟弟,记住了,这里不能写成死循环了,哥哥教你的,要记住,以后写错了,别人要笑话你的
{
DoSysMsg();
iMsgCnt++;
if( iMsgCnt >= 100 ) // 这个100,只是给你举个例子,你不要再钻牛角尖了
{
break;
}
}
DoGameLogic();
}
但是你不能说iron和我的意思是错的,是你表达能力的确欠佳啊。 |
|