在游戲開發(fā)過程中,讀取配置文件是必不可少的,而使用JSON做配置文件又比較常見,本文重點給大家講述如何在Cocos Creator開發(fā)中讀取和解析JSON數(shù)據(jù)文件以及如何寫JSON文件。
一、 JSON簡介
1. 什么是JSON
JSON的英文全稱是JavaScript Object Notation,即JavaScript對象表示法。
2. JSON的特點
是一種輕量級的文本數(shù)據(jù)交換格式,類似XML,但是比XML更小、更快、更易解析。
使用JavaScript語法來描述數(shù)據(jù)對象,JS程序無需解析器即可生成原生的JavaScript對象。
獨立于語言和平臺,目前大多數(shù)的編程語言都支持JSON。
3. JSON的語法
JSON語法是JavaScript語法的子集,具有以下規(guī)則:
- 數(shù)據(jù)在名稱/值對中
- 數(shù)據(jù)由逗號分隔
- 大括號保存對象
- 中括號保存數(shù)組
二、 如何解析JSON文件
1. 關(guān)鍵原則
大括號代表對象,中括號代表數(shù)組;
4. 用什么方法讀取?
Cocos Creator提供了cc.load.loadRes來專門加載位于 resources 目錄下的文件,所以提前把JSON文件放到 asserts/resources?目錄下即可。點擊鏈接加入群聊【Unity/Cocos交流群】
先來一個簡單的JSON文件,如下:


是不是很簡單?實際使用的JSON配置常常比這復(fù)雜一些,所以我們現(xiàn)在再給JSON文件增加一些元素,如下:


我們在代碼中定義一個解析函數(shù)叫 readJson,并且把解析出來的JSON數(shù)據(jù)保存起來,實現(xiàn)代碼如下:

3. Cocos Creator讀取JSON文件注意事項
creator讀取json文件的一個坑(對文本內(nèi)容進行操作可能導(dǎo)致的錯誤)
使用creator中的 cc.loader.loadRes( url, cc.RawAsset, ( err, res )=>{ } )讀取游戲文件后發(fā)現(xiàn)第二次進入游戲出現(xiàn)了錯誤。
現(xiàn)對這個問題總結(jié)下:
對于動態(tài)加載資源,第二次讀取會直接從緩存中讀取,所以如果讀取的是一個文本數(shù)據(jù),對文本數(shù)據(jù)修改了,那么相應(yīng)的,在下一次讀取數(shù)據(jù)會讀取修改后的文本數(shù)據(jù)。比如文本數(shù)據(jù)就一個數(shù)組[1,2,3],第一次讀取之后刪除了最后一位數(shù)據(jù)變?yōu)闉閇1,2],那么下一次讀取將會是[1,2]。為了不出現(xiàn)這種情況,可以對數(shù)據(jù)進行序列化與反序列化操作,將其深度拷貝后使用。
4. JSON讀取通用代碼示例

注意:當(dāng)使用以上代碼還報文件不存在或Download text failed的錯,那就要檢查下資源管理器里是不是有兩個resources文件夾,其中一個是最近新建的,另一個可能是以前新建的但是被刪除過,但是刪除不徹底,因為cocos creator里面的資源都是有一個唯一標識的uuid,所以,還必須找到E:\Projects\你的項目\library\uuid-to-mtime.json這個文件,在里面找到之前的resources文件uuid,先剪切放到文本文件,然后保存uuid-to-mtime.json,重啟軟件,看是否能進去,不能的話再把剪切出來的uuid復(fù)制回去,再重啟就可以了。點擊鏈接加入群聊【Unity/Cocos交流群】
三、 Json文件的寫入

