json是這些年慢慢興起的輕量級數(shù)據(jù)交換格式纠脾。比起老大哥XML亿傅。因其更快的解析速度和更小的體積,可謂是用過的都說好淤年。一般情況下json足夠滿足你的大多數(shù)需求钧敞,但是在計算機領域蜡豹,沒有最快,只有更快犁享。
當你的傳輸數(shù)據(jù)大到一定程度的時候余素,json的速度也不能滿足你需求的時候,你就需要更快的protobuf炊昆。
protocolbuffer(以下簡稱PB)是google 的一種數(shù)據(jù)交換的格式桨吊,它獨立于語言,獨立于平臺凤巨。(百度百科)视乐。
因為其使用二進制存儲,所以會比json更快敢茁。但是缺點也是顯而易見佑淀,二進制存儲易讀性很差。
我曾遇到要解析40M json的需求彰檬。在PC端伸刃,使用litjson需要解析10秒鐘。但是將相同的內容通過protobuf再導出成bytes逢倍。只要17M捧颅。縮小了2.5倍左右较雕。但是讀取速度只要0.8秒碉哑,還包括了數(shù)據(jù)解析后的處理。
0.1秒和0.008秒可能給人差別不大亮蒋,但是10秒和0.8秒的差別真的是天壤地別扣典。
如果需要傳輸?shù)臄?shù)據(jù)量比較大時,protobuf是你的不二選擇慎玖。
如何使用呢贮尖?
我們在unity中只需要使用 protobuf-net 這個dll就行了,下面是其在GitHub上的鏈接趁怔。如何使用他鏈接內已經非常的清楚了远舅,我在這不重復說了。
其中的坑:
將類導出成protobuf或者是從protobuf導入到類時痕钢,基類的屬性是無法導入的图柏。所以說使用protobuf的模型類最好還是不要相互繼承。這點需要注意任连。
2.unity在pc端讀取2進制文件的文件是沒有要求的蚤吹。.bat.bin都可以用C# 的IO類來讀取。但是在安卓端因為沒法使用IO。如果通過resourecs.load來讀取的話裁着,2進制文件的后綴需要是.bytes繁涂。