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

   最近在做关于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的内存,但我个人觉得以

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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
tIDE是多国语言的免费软件,但是!竟然没有中文,关于它的介绍自己看就不说了,下面来创建第一张地图,用于我们的TD游戏。 你现在需要一张这样的tile图片,来做完地图的基本元件 在Explorer面板Map节点地下的Tile Sheets右键Add,然后浏览选择上面的或者你自己的tile文件。 OK弹出Tile Sheet Properties对话框设置一下Tile Size让Tile完美的切割。这里的值是60x60。 ok,然后会在Tile picher面板里就会出现一个个分割好的Tile。 有了这些tile的支持就可以在map上玩拼图了。在map Explorer面板下的Map节点的Layers上右键Add,在弹出的Layer Properties设置地图的大小Layer Size,因为我现在只打算做一个最简单的也就是一屏幕而且不能拖动所以这里设置14x8 (800/60 x 480/60),OK。 为了方便绘制在工具面板的右上角有一个显示网格的按钮,点下去它 右边的绘图工具栏上有一个很好使用的按钮区域绘制,它能把选择区域填充出当前选择的tile,下面就先在tile Picker选择一块浅色的草地区域绘制到整个地图。然后画上我们的路。 Save as为 tmx类型的文件 中间如果出现警告确定就好了 这里出现了最关键的一步,这里一定要选Base64(gzip compressed),ccx现在的版本还只支持这一种。 把生成的tmx文件以及tile图片入我们的项目中。 这里可能需要调整一下tmx文件中的Image source的路径 在程序中显示TMX地图 先显示出来看看努力的效果,之后再慢慢完善。 把GameScreen构造函数中的说明Label删除,添CCTMXTiledMap 代码很简单如下 private GameScreen() { CCTMXTiledMap tmxmap = CCTMXTiledMap.tiledMapWithTMXFile("Map/Level1"); addChild(tmxmap); }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值