最近想实现一个飞机大战的游戏项目,但是没怎么开始就很卡。
我在线程里面设置了while(true)循环,然后我写了一个函数算帧率FPS。
我发现游戏帧率刚开始在30ms稳定;当出现第一个敌机时候,帧率上涨到210ms后保持稳定。
再出现一个敌机,帧率上涨到400ms后保持稳定。
出现第三个敌机后,帧率590ms并且保持稳定。
给我的感觉是生成对象多一个就涨了大约200左右的FPS。
查资料说有可能是循环次数太多。
但是我看了看我函数里面的循环,主要是循环遍历敌机和子弹使敌机、子弹移动。
我已经设置了敌机和子弹对象的生成上限都是5个,多了就不会生成了,所以我感觉循环次数也不是很多哇。
但是就是卡的不行。
我也百度了很多降低帧率的方法,好像不起什么作用。
还是我很菜,很多东西没想明白。求dl给我解答一下,谢谢啦。
是不是轮训的频率太快
python中pygame定义了pygame.time.Clock类可以控制帧率
java中不知道有没有类似的东西
提供一个思路:可以在初始化后进入while True循环,在循环最外层对时间进行判断,判断此次while和上次while的时间戳差值,如果时间戳差值大于某个特定值,才进行while内部的其他运算,然后将时间戳更新保存,用于下一轮比对
就是通过判断时间间隔的方法强行锁帧
有帮助望采纳