sliverlight游戏地图编辑器
没有地图编辑器的游戏不是好游戏--至理明言。
到目前为止,教程示例游戏中虽然实现了A*,但是还无法轻松的为地图设置障碍物;并且游戏所有地图均为一张整的大图片,
主角的移动会导致窗体对地图的不停切割,越大的地图带来的负面性能损耗越明显。对地图进行切片处理则可达到性能的最大优化:
载入的时候按需加载,地图根据主角的位置仅显示特定部份;并且如果还能配上任意勾勒的遮挡物,那么这一切的一切将更能完美的
诠释我们的游戏。开发制作地图编辑器已迫在眉睫。
第一步:设计布局
通用型的编辑器必须能够适应所有尺寸的地图,因此我选择ScrollViewer作为地图的承载容器,并通过设置它的
HorizontalScrollBarVisibility与VerticalScrollBarVisibility均为auto使之能自适应地图尺寸,
即当地图超出窗体尺寸的情况下出现滚动条。由于一个ScrollViewer只能承载一个Content,因此为了可以在其上面能够
进行障碍物的绘制及擦除操作,我们还必须添加另外一个背景透明的ScrollViewer用于承载障碍物网格(Grid):
第二步,设计功能
1)载入地图:
通过OpenFileDialog来开启一个文件选择对话框,并通过文件选择过滤器Filter限制加载图片的类型为*.jpg和*.png
2)布局网格:
为了可以适应不同GridSize尺寸的需要,我们需要更加灵活的网格模型,因此选择Grid做为主体,当加载完地图后,
我们可以根据该地图的相关数据自动在画板ScrollViewer中动态添加Grid(包括行数和列数)
3)设置障碍物:
通过为画板ScrollViewer注册鼠标左键点击事件及鼠标移动事件并配合一定的逻辑来实现障碍物的绘制于擦除
4)模拟A*寻路:
在画板上描绘完障碍物后,再通过自行绘制起点与终点,并将教程中的A*寻路dll引用到本编辑器中即可以实现A*寻路模拟
4)障碍物数组的导出与导入:
我们可以事先制作好一个xml模板用于存放地图中的障碍物信息
作者:深蓝色右手