Unity發(fā)布WebGL之無盡深淵(二)
????????書接上文,在處理了一些奇怪bug和修改了一波底層(取消掉萬惡的線程)之后,我們迎來了新一輪的bug,能夠載入史冊的RuntimeError: memory access out of bounds。
????????在我查閱了大量國內(nèi)資料得到一些奇奇怪怪的解決方法,比如擴大內(nèi)存大小、UI圖片比Canvas大、某個引用值為空、顏色修改導致報錯等等。但我發(fā)現(xiàn)都不適用我,于是,我開始了我的墻外之旅。
????????在墻外翻閱了一些大佬的文章后,有一位大佬的一句話隔著屏幕給了我一巴掌。他說任何錯誤都可能導致這個報錯,直接給我整麻了,再加上沒有辦法使用DevelopmentBuild,我只能一次次打包debug測試,最后發(fā)現(xiàn)問題出現(xiàn)在對json文件的反序列化附近。
????????我當時使用的Newtonsoft.Json可能因為版本原因不僅序列化功能不能執(zhí)行,連反序列化功能也會報錯,于是我根據(jù)大佬的指示替換了一個Json.Net 9.0.1的package,序列化問題得到了解決。鏈接如下:
????????https://github.com/SaladLab/Json.Net.Unity3D/releases
????????總的來說這個內(nèi)存訪問越界的問題發(fā)生的情況還是很多的,但是他的實際問題其實和Unity設置的內(nèi)存大小關(guān)系并不是很大,大多數(shù)情況是出在某個函數(shù)執(zhí)行過程中因為無法正常執(zhí)行導致內(nèi)存堆積之后越界的。所以我們在排查錯誤的時候不能只盯著表現(xiàn)來查找原因,要找到問題的本質(zhì)。
????????WebGL的坑肯定不只以上這么多,如果我以后遇到了其他的有(shen)意(jing)思(bing)的問題,解決之后我還會再繼續(xù)記錄的。
????????PS:他喵的,好不容易發(fā)布出來能打開了,才發(fā)現(xiàn)不支持Post Processing后處理,當場裂開。。。