C#开发的OpenRA游戏高性能内存访问的方法
一个游戏性能往往是比较关键的,
因为游戏很多时候是比拼的是人的速度和技巧。
比如王者荣耀里,一个大招是否及时地放得出来,就会影响到一场比赛的关键。
而这个大招的释放,又取决于游戏运行在手机上的性能。
如果游戏太耗性能,导致手机卡机,那么操作上就会受到影响。
所以对于游戏来说,不会放过优化性能的任何方式。
由于这里是采用垃圾回收的方式语言C#,那么在不优化的情况下,它是使用管制的内存。
那么这种管制内存,就会存在一些性能损失。
要避免这种性能损失,就需要使用一些特殊的方法。
在C#里采用关键unsafe和fixed来配合实现内存快速度访问,而不需要内存回收系统干预。
虽然这样会比危险一些,但是为了性能的提升,这些冒险是值得的。
在OpenRA里定义FastCopyIntoSprite函数,这个函数是用来从一个PNG文件生成一个Sprite。
什么是Sprite?
(1).Sprite在2D游戏术语里面是指 像素图。
(2).Sprite是2D游戏中最基础的 组件。
(3).我们一般把Sprite称之为 精灵。
为何要创建一个Sprite对象?
(1).单纯的图像文件是