我有一个关于良好做法的问题.我正在做一个简单的游戏,我正在搞乱一些精灵.
我有一个精灵课.在该类中,有一个每隔几毫秒运行一次的计时器.
现在,我有一个List<Creatures>和"生物"的每个人,在它们中有一个Sprite对象来运行动画.所以这意味着每个生物都有一个同样的东西.
我决定更改它,并制作一个只在列表上迭代的计时器,并调用为每个"Creature"创建动画的函数.
什么是好习惯?
如果它们都以相同的间隔运行,那么一个大计时器肯定是要走的路.
即使它们以不同的间隔运行,一个大的计时器(用逻辑确定哪些子处理程序触发)通常仍然是最好的.
一些库将在内部添加此逻辑,并且仅从OS请求单个计时器.您还没有确切地说明您正在使用哪个计时器(.NET至少有四个),所以我建议您自己使用集中计时器.
我有一个精灵课.在该类中,有一个每隔几毫秒运行一次的计时器.
不幸的是,它实际上并不存在.您受到(非高性能)系统时钟的分辨率的限制,该时钟约为15 ms.因此,如果您愿意,可以将间隔设置为1,但这不是您实际获得的间隔.
回到主题,对于游戏,一切都应该在同一个时钟上运行.对于每个刻度,你将有一个循环,它更新游戏的逻辑状态(位置和诸如此类),然后是显示(动画帧,blit到屏幕等).如果将它们放在不同的计时器上,您可能会遇到问题,因为在并行更新对象时协调对象的状态变得非常困难.
还要意识到,您需要对更新速率进行标准化,以确保事物不会更快或更慢地更新(取决于渲染帧所需的时间).您需要检查上次更新和新更新之间的增量并采取相应措施.