| |
|
阅读网 -> 人物音乐 -> yaml这么难用,为什么还能流行起来? -> 正文阅读 |
|
[人物音乐]yaml这么难用,为什么还能流行起来? |
[收藏本文] 【下载本文】 |
yaml这么难用,为什么还能流行起来? 关注问题?写回答 [img_log] Python yaml这么难用,为什么还能流行起来? |
如果你只是想用作配置文件,JSON肯定足够,这就是为什么python和 .NET SDK都内置JSON解析库,也是为什么大家公认JSON是当下最直观、最好用的数据交换格式 但如果游戏开发框架在没有Tilemap编辑器的情况下需要搭建二维游戏地图,至少我自己认为JSON是不够的。不信的话,使用以下python代码分别对YAML、JSON生成15*15的二维整数列表,保证立竿见影、一目了然
|
![]() |
YAML当中的list item本身可以放进去列表对象,所以在YAML这样写二维数组就清爽多了 |
![]() |
同样的数据在JSON中显示并且Shift+Alt+F之后…… 看到没有?二维数组拉丝拉到第257行啦! Unity和Godot玩家既然可以享受可视化界面搭建游戏地图的乐趣,自然就不需要繁琐地手打二维数组。但如果你用的是pygame、MonoGame等纯写代码的游戏框架,你要做的游戏地图的规模不止是我上面测试的数组大小呢?这个时候硬编码游戏地图(人话:直接把游戏地图数据塞进游戏代码里面),无疑增加代码本身的负担,而且YAML数据本身像JSON一样可以由键值对组成。下面是我随手编写的又一段测试代码,用来测试游戏关卡数据的读写,当然这只是我象征性地随机生成5组关卡数据,实际开发的时候需要把读取到的数据进一步处理成游戏物品 注:python的YAML解析库需要通过终端命令“pip install PyYAML”安装
以下是随机生成的游戏地图加上读取关卡数据的结果,相当于是我平常怎么手写YAML二维数组,程序代码就怎么生成YAML二维数组。YAML字符串不一定用引号包裹,除非是关键字或者纯数字就必须加引号才能表示为字符串,比如 'null'、'22.5' 等;波浪符在YAML表示空值,所以在YAML存储波浪符就要写成 '~'
Enter level number: 3 [['E', 'E', 'B', 'A', 'D'], ['E', 'C', 'E', 'D', 'D'], ['C', 'C', 'E', 'D', 'B'], ['A', 'D', 'C', 'E', 'D'], ['C', 'D', 'E', 'A', 'A']] 至于为什么我把二维数组序列化到YAML的时候不用YAML解析库,原因已经在上面说到了,JSON数组容易拉丝而YAML用横杠表示列表项,直接序列化成YAML怕不是也拉丝?
最后也让大家欣赏一下拉丝版YAML数据,就是我这里测试的10*10整数列表:
|
作为简单配置文件不比JSON和XML高到哪里去了 自带缩进的层次结构在作为i18n翻译文件的时候要比只有一层的po有些优势 替代方案也不是没有 要是觉得嵌套和转义烦人的话,去用toml啊 再厉害一点还有hocon 如果用clojure生态,估计早就用edn了 |
|
[收藏本文] 【下载本文】 |
上一篇文章 下一篇文章 查看所有文章 |
|
|
古典名著
名著精选
外国名著
儿童童话
武侠小说
名人传记
学习励志
诗词散文
经典故事
其它杂谈
小说文学 恐怖推理 感情生活 瓶邪 原创小说 小说 故事 鬼故事 微小说 文学 耽美 师生 内向 成功 潇湘溪苑 旧巷笙歌 花千骨 剑来 万相之王 深空彼岸 浅浅寂寞 yy小说吧 穿越小说 校园小说 武侠小说 言情小说 玄幻小说 经典语录 三国演义 西游记 红楼梦 水浒传 古诗 易经 后宫 鼠猫 美文 坏蛋 对联 读后感 文字吧 武动乾坤 遮天 凡人修仙传 吞噬星空 盗墓笔记 斗破苍穹 绝世唐门 龙王传说 诛仙 庶女有毒 哈利波特 雪中悍刀行 知否知否应是绿肥红瘦 极品家丁 龙族 玄界之门 莽荒纪 全职高手 心理罪 校花的贴身高手 美人为馅 三体 我欲封天 少年王 旧巷笙歌 花千骨 剑来 万相之王 深空彼岸 天阿降临 重生唐三 最强狂兵 邻家天使大人把我变成废人这事 顶级弃少 大奉打更人 剑道第一仙 一剑独尊 剑仙在此 渡劫之王 第九特区 不败战神 星门 圣墟 |
网站联系: qq:121756557 email:121756557@qq.com |