游戏性能优化的几个技巧

时间:2022-09-14 13:14:04

把多张小图合并为一张大图

图片资源在游戏中会大量频繁地使用,而图片在内存中是按照2的幂次方来加载的,例如一张大小是20*20像素的图片,在程序运行中是按照32*32来处理的,而且从磁盘上加载每一张图片都属于IO操作,非常耗费CPU时间,尤其是在Android的低端设备上。所以通过图片打包工具(例如TexturePacker)把多张小图片合并到一张大图里,可大大减少IO操作,有效地减小内存占用,提高加载速度。

压缩图片

图片也是占用内存和包体积最多的资源,例如一张大小是1024*1024像素、格式为RGBA8888的图片,每个像素占4个字节,则该图片所占的内存就是1024*1024*4,即4MB,如果这张图片没有半透明色,可以把它转换为RGB565或RGB5551,这样每个像素只占2个字节,画质没降多少,但该图片所占内存降了一半,即1024*1024*2=2MB。或者图片对画质要求不高,可转换为RGBA4444,同样能节省一半内存。另外使用第三方工具(如ImageAlpha)对图片进行压缩,可在基本不损画质的情况下,减小图片大小。

减少不必要的定时刷新(update)

定时刷新类似于轮询机制,程序会固定的定时调用该update函数,如每帧或每秒。整个游戏是靠update来驱动的,例如士兵的移动、武器的自动开火、子弹的碰撞检测等,这其中每一个upate都需要耗费cpu时间去处理,有些情况下可能是不必要的,所以把相关的逻辑尽量放在一个update中,或者采用事件驱动,只有当该事件确实发生后才去执行相关逻辑,这些都可以减轻cpu的负担,提高游戏性能。