Unity 使用JSONObject解析Json

2022-02-26 12:06:04 字數 1339 閱讀 2107

之前已經用過jsonutility和newton.json來解析json了,為什麼現在又要用乙個新的jsonobject來解析json?

在unity遊戲開發中,使用newton.json來反序列化時,需要指定確定的型別,這會帶來什麼問題?

在遊戲的道具系統中,有乙個父類item類,包含屬性id和name,有乙個子類consumable消耗品類,包含屬性hp和mp,uml如下:

後端返回的物品資訊json如下:

[,]

使用newton.json時,**如下:

//

itemsjson是包含了物品資訊的json字串

public

void parseitemjson(string

itemsjson)

itemlist.add(temp);}}

按照以上思路,先以item型別來反序列化,然後根據item.type來判斷物品類的具體子型別,如果為consumable消耗品型別,就獲取該型別的hp和mp屬性,再按消耗品型別來例項化物件。

但是由於反序列化時指定為item型別,所以即便json字串中包含了hp和mp的內容,也不會被解析到item物件身上。

所以問題是:解析為父類時,再想根據父類中的屬性來轉型為子類,會導致轉型失敗!

現在改用jsonobject,可以解決該問題。

根據它的readme以及裡面自帶的demo,可以快速學習使用該外掛程式。**修改為如下:

private listitemlist = new list();

//////

解析物品json

/// public

void parseitemjson(string

itemsjson)

debug.log("item.id = " + item.id + " , consumable.hp = " + ((consumable)item).hp);

itemlist.add(item);}}

執行後可以正確解析json,拿到父類和子類的屬性值。

學習資料:

使用vscode除錯unity

一般使用unity開發時,編輯都是用vs,但是最近使用的都改用vs2017或2019了,不但開啟vs耗時 長,而且除錯時非常卡頓,如果vs中已經打好斷點,然後啟動unity開始除錯,基本上卡住半分鐘後才 有反應,而且如果是除錯過程中新增斷點,又會卡段一段時間,簡直人都要被逼瘋了,如果非得用vs,建議...

Unity使用VSCode Debug 打斷點

名稱 優點缺點 安裝包大小 mono 過時了沒下暫時不知道 rider 800m visual code 輕量化 包小 安裝快 60m visual studio 功能齊全 大 占地 安裝慢 約等於2g 記事本記事本寫 那我服 安裝vscode unity內選擇外部工具 雙擊unity指令碼開啟vs...

Unity指令碼使用總結

update是每一幀都呼叫,相鄰兩幀間隔的時間為time.deltatime。fixedupdate是與幀無關,到一定時間就呼叫,不會因為卡幀就出問題。在update和fixedupdate都呼叫完後就會呼叫lateupdate,一般這步可以讓攝像機看看更改的了地方.update和lateupdat...