GameMaker Studio 2

创建于:2017-04-19

创建人: dougen

192 信息 1091 成员
游戏开发工具 GameMaker Studio 2 的讨论小组

菜鸟学到的吐血教训:别写类似ds_list[| 0] = [ds_map1,"aaa",0]这样的代码……

Rusty 2018-12-02

因为在做一个带有卡牌要素的游戏,用ds_map和ds_list管理卡牌信息、牌序等等十分方便,于是当时就随手写出了类似ds_list[| 0] = [ds_map1,"aaa",0]这样的代码。现在想写存档系统了,结果一看教程,懵逼了。如果需要通过json_encode这种函数将ds数据转化为json,同时又是ds_map中含有ds_list或者ds_list中含有ds_map这种情况时,需要先使用ds_list_mark_as_map、ds_map_add_list等函数让ds_map和ds_list可以被正确写入和读取。而如果是前面这种ds_list含数组,数组里又含ds_map的形式,ds_list_mark_as_map、ds_map_add_list等函数貌似就不适用了,转成json来存档读档就会出错。于是乎不得不把ds连同相关的自定义function也改一遍……不幸中的万幸就是这部分代码本来就是刚学GMS的时候写的,也该优化了……

总之给同为新手的朋友一句话:如果想用json的格式来保存存档信息,就千万别因为一时方便就写成类似ds_list[| 0] = [ds_map1,"aaa",0]这样的代码,可以写成ds_list[| 0]=ds_map1; ds_map1[? "string"]="aaa"; ds_map[? "number"]=0;这样,把"aaa"、0这类写在ds_map里,才能正常用json函数创建/读取存档文件……

不过也可能有把ds_list[| 0] = [ds_map1,"aaa",0]这种函数正常转写成json的方法,只不过我太菜没注意到……

总之,供各位朋友参考了……含泪发布。

(转发自:原日志地址

近期喜欢的会员

 

加入 indienova

  • 建立个人/工作室档案
  • 建立开发中的游戏档案
  • 关注个人/工作室动态
  • 寻找合作伙伴共同开发
  • 寻求线上发行
  • 更多服务……
登录/注册