之前已經用過jsonutility和newton.json來解析json了,為什麼現在又要用乙個新的jsonobject來解析json?
在unity遊戲開發中,使用newton.json來反序列化時,需要指定確定的型別,這會帶來什麼問題?
在遊戲的道具系統中,有乙個父類item類,包含屬性id和name,有乙個子類consumable消耗品類,包含屬性hp和mp,uml如下:
後端返回的物品資訊json如下:
[,]使用newton.json時,**如下:
//按照以上思路,先以item型別來反序列化,然後根據item.type來判斷物品類的具體子型別,如果為consumable消耗品型別,就獲取該型別的hp和mp屬性,再按消耗品型別來例項化物件。itemsjson是包含了物品資訊的json字串
public
void parseitemjson(string
itemsjson)
itemlist.add(temp);}}
但是由於反序列化時指定為item型別,所以即便json字串中包含了hp和mp的內容,也不會被解析到item物件身上。
所以問題是:解析為父類時,再想根據父類中的屬性來轉型為子類,會導致轉型失敗!
現在改用jsonobject,可以解決該問題。
根據它的readme以及裡面自帶的demo,可以快速學習使用該外掛程式。**修改為如下:
private listitemlist = new list();執行後可以正確解析json,拿到父類和子類的屬性值。//////
解析物品json
/// public
void parseitemjson(string
itemsjson)
debug.log("item.id = " + item.id + " , consumable.hp = " + ((consumable)item).hp);
itemlist.add(item);}}
學習資料:
使用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...