关于2D地图加载的问题。

来源:互联网 发布:数据库的管理实验报告 编辑:程序博客网 时间:2024/06/05 15:05

   最近在做关于XNA的一个项目,仅仅起步而已就遇到了不少困难.当然目前停留在了

对于2D地图的加载并且更新问题.我使用的是一个6400*5000以上的分辨率的图片.这个

图片就是一张完整的地图.本来准备用地图编辑器的方法来制作地图,因为也许那样更加轻松.

不过因为看了网易 云风的技术文章,发现他的方法更加方便或者说更加节约内存.最主要的是

以后可以让美工专注于地图绘制,最后只需要给我完整的地图我就可以使用了.

   目前使用的方法不过是先用 Bitmap对象加载进需要的地图,但此时程序会达到150M左右.

并且使用Bitmap对象切割方法从内存里选出需要的图片大小例如320*240 接着把320*240

的图片拼接成整个窗口大小例如800*600 这样一来一次只需要不到5块(320*240为一块)

的图片,其中3*3块为显示当前地图,其余2*2块分别为左右上下预备地图,当人物移于地图

的时候正方向至需要预先加载2-4块,斜方向则加载7块,如此一来极大地节省了内存的消耗.

   然后使用MemoryStream流对象保存在流当中并且赋值给Texture2D对象里,这样做是为

了可以在内存里操作而不需要真的把图片切割成无数个JPG图片.最后用循环绘制出来的地图程序

有3M左右大小.这只是静态时候,当更新图片是会增加到二,三十兆左右,如果再加上绘制人物、渲染

、遮盖这些恐怕要超过我估计的内存才可能顺利运行起程序.

   总的说来理论就是 开始加载窗口大小的图片,然后根据玩家移动方法预先加载相应的图片.

虽然远比整个6400分辨率的地图加载来的效率和快速,但因为大话西游使用了不到30M的内存.

   我认为应该还有更好的方法.虽然目前用户的PC机大多已经是1、2G的内存,但我个人觉得以

更低低的资源运行程序才是体现程序员的价值所在.

 

原创粉丝点击