在游戏开发过程中,读取配置文件是必不可少的,使用JSON作为配置文件是很常见的。本文重点介绍在 Cocos Creator 开发中如何读取和解析 JSON 数据文件以及如何编写 JSON 文件。
一、JSON简介
1.什么是JSON
JSON的英文全称是JavaScript Object Notation,即JavaScript Object Notation。
二、JSON的特点
它是一种轻量级文本数据交换格式,类似于 XML游戏动态,但比 XML 更小、更快且更易于解析。
使用 JavaScript 语法来描述数据对象,JS 程序可以在没有解析器的情况下生成原生的 JavaScript 对象。
语言和平台无关,当今大多数编程语言都支持 JSON。
3.JSON语法
JSON 语法是 JavaScript 语法的一个子集,具有以下规则:
- 数据在名称/值对中
- 以逗号分隔的数据
- 大括号持有对象
- 方括号保存数组
2.如何解析JSON文件
一、主要原则
大括号代表对象,方括号代表数组;
4、如何阅读?
Cocos Creator 提供了 cc.load.loadRes 来专门加载位于 resources 目录下的文件,所以请提前将 JSON 文件放在 asserts/resources 目录下。
让我们从一个简单的 JSON 文件开始,如下所示:
是不是很简单?实际的JSON配置往往比这更复杂3D动画,所以我们现在在JSON文件中添加一些元素,如下:
三、Cocos Creator 读取 JSON 文件注意事项
creator读取json文件的一个坑(可能是操作文本内容导致的错误)
在creator中使用cc.loader.loadRes( url, cc.RawAsset, ( err, res )=>{ } ) 读取游戏文件后,发现第二次进入游戏时出错。
现在总结一下这个问题:
对于动态加载的资源,第二次读取会直接从缓存中读取,所以如果读取了一个文本数据,修改了文本数据,那么对应的,下次读取数据时,会读取修改后的文本。比如文本数据是一个数组[1,2,3],第一次读取后删除最后一位数据变成[1,2],那么下一次读取就是[1,2]。为了避免这种情况,可以对数据进行序列化和反序列化操作,深拷贝后使用。
4. 读取JSON常用代码示例
注意:当使用上面的代码报文件不存在或者下载文本失败的错误时,再查看资源管理器中是否有两个资源文件夹,其中一个是新建的,另一个可能是之前新建的但是已经删除了cocos xml 读取节点,但是删除的并不彻底,因为cocos creator中的资源都有一个唯一标识的uuid,所以还要找到文件E:\Projects\your project\library\uuid-to-mtime.json ,在里面找到之前的资源文件uuid,先把它剪切成文本文件,然后保存uuid-to-mtime.json,重启软件,看看能不能进入,如果不能cocos xml 读取节点,把剪切下来的uuid复制回来,然后重启而已。
3.编写Json文件