# H5开发带有地图编辑器的游戏
- 首先我们需要一个编辑器相关的东西得借助什么。这块有很多种选择,比如xml,csv、json、甚至纯文本都是可以的
但是基于小巧和种种原因,我最终选择了json,并且决定地图编辑器用U3d实现,而游戏则用H5实现
首先思考何为地图编辑器,这个得从游戏开发中的脚本开始说起了,其实脚本语言和外置的json、xml高度相似,如果你读过游戏的编译原理这本书的话…
书籍地址:https://book.douban.com/subject/1927405/
1.地图编辑器到底需要什么
1.如果采取json格式如何设计数据类型
首先在游戏里,必然存在地形、障碍物、敌人、特效多种类型的元素,当然如果要设计一些比较高端的元素可能需要在json中外部引用进行扩展脚本,这里就不在这一次探讨的范围,这次我们主要还是区分地形,障碍物、敌人、特效这几种情况进行设计。
不同的敌人、障碍物、地形都得设置不同的参数,json包括的作用就很好显示出来了,也就是葫芦娃套娃,一层套一层,单位放在单位类里面,而这个单位的属性又放在单位这个类里面,单位的属性又有具体的子属性。
为了方便大家的理解,我这里直接放出一个实例给大家看看
{
"enemy": [
{
"id": 207,
"type": 2,
"name": "瘦子",
"posX": 55.0,
"posY": 0.0,
"C": 30.0,
"Size": 0.10000000149011612,
"shakeTime": 300.0,
"speedipa": 300.0,
"idleAni": "slim_idle",
"beHitAni": "slim_die",
"audioSrc": "Q",
"isbeHit": true
},
{
"id": 901,
"type": 2,
"name": "女神",
"posX": 80.0,
"posY": 0.0,
"C": 10.0,
"Size": -0.15000000596046449,
"shakeTime": 100.0,
"speedipa": 100.0,
"idleAni": "Lady_idle",
"beHitAni": "Lady_die",
"audioSrc": "Q",
"isbeHit": false
},
{
"id": 207,
"type": 2,
"name": "瘦子2",
"posX": 25.0,
"posY": 0.0,
"C": 30.0,
"Size": 0.10000000149011612,
"shakeTime": 300.0,
"speedipa": 300.0,
"idleAni": "slim_idle",
"beHitAni": "slim_die",
"audioSrc": "Q",
"isbeHit": true
}
],
"Length": 100
}
引入眼帘就是各种参数了,这里参数并没有进行太过复杂的套娃,毕竟我目前开发这款游戏属于偏休闲横板游戏,自然也没有设计过于复杂的参数和套娃模式了。
这里还是给大家介绍下这些参数的作用。
| 字段名 | 数值类型 | 值 | 作用 |
|---|---|---|---|
| id | number | 207 | 用于区分具体对象 |
| type | number | 2 | 进行功能函数调用 |
| name | String | 瘦子(敌人) | 用于给对象起名字 |
| posX | number(float) | 55.0 | 判断对象x位置 |
| posY | number(float) | 0.0-为了避免参数太多,这里应该和x放在一起,string里逗号进行split分开比较好但是这里为了比较便于理解就分开了 | 判断对象y位置 |
| C | number(float) | 30.0 | 参数C,通过公式来计算,来为不同单位添加不同的打击感 |
| Size | number(float) | 0.10000000149011612 | 参数SIze,通过公式来计算,来为不同单位添加不同的打击感 |
| shakeTime | number(float) | 300.0 | 单位被击杀后晃动摄像机时间 |
| idleAni | String | slim_idle | 单位默认的动画文件 |
| beHitAni | string | slim_die | 单位被打击事播放的动画文件 |
| audioSrc | string | Q | 单位死亡播放的声音文件 |
| isbeHit | bool | true | 是否需要被击杀进行计分 |
| func1 | obj | e |

最低0.47元/天 解锁文章
831

被折叠的 条评论
为什么被折叠?



