国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Unity基于Google Protobuf序列化和反序列化小案例

這篇具有很好參考價值的文章主要介紹了Unity基于Google Protobuf序列化和反序列化小案例。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

1.協(xié)議定義,簡單實(shí)現(xiàn)傳玩家的2D坐標(biāo)? ?

syntax = "proto3";
package SocketGameProtocol;

message PlayerInfo
{
	float xPos=1;
	float yPos=2;
}

google.protobuf.dll,unity,c#

2.在Unity的Assets目錄下創(chuàng)建一個Plugins文件夾(必須這樣命名),此文件專門存放擴(kuò)展文件,

再新建文件夾BaseInfolibrary,將Google.Protobuf.dll拖入

google.protobuf.dll,unity,c#

google.protobuf.dll,unity,c#

?3.新建一個Test.cs腳本

?腳本中引入命名空間

using SocketGameProtocol;
using Google.Protobuf;
using System;
using System.IO;
    private PlayerInfo info;
    public byte[] Init(Vector2 pos)
    {
        if (info == null)
        {
            info = new PlayerInfo();
        }
        info.XPos = pos.x;
        info.YPos = pos.y;
        byte[] data = Serialize(info);
        return data;
    }
    //序列化
    private byte[] Serialize(PlayerInfo model)
    {
        try {
            using (MemoryStream ms = new MemoryStream()) {
                model.WriteTo(ms);
                return ms.ToArray();
            }
        } catch (Exception ex) {
            Debug.Log ("序列化失敗: " + ex.ToString());
            return null;
        }
    }
    //反序列化
    private PlayerInfo DeSerialize(byte[] data)
    {
        return PlayerInfo.Parser.ParseFrom(data);
    }

后續(xù)

代碼改進(jìn):通用序列化模板(只用來序列化Message)

    /// <summary>
    /// 序列化protobuf
    /// </summary>
    /// <param name="msg"></param>
    /// <returns></returns>
    public static byte[] SerializeMsg(IMessage msg)
    {
        using (MemoryStream rawOutput = new MemoryStream())
        {
            msg.WriteTo(rawOutput);
            byte[] result = rawOutput.ToArray();
            return result;
        }
    }
    /// <summary>
    /// 反序列化protobuf
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="dataBytes"></param>
    /// <returns></returns>
    public static T DeserializeMsg<T>(byte[] dataBytes) where T : IMessage, new()
    {
        T msg = new T();
        msg= (T)msg.Descriptor.Parser.ParseFrom(dataBytes);
        return msg;
    }

序列化前提還是要知道消息的類型,以下是調(diào)用

google.protobuf.dll,unity,c#

?文章來源地址http://www.zghlxwxcb.cn/news/detail-556571.html

到了這里,關(guān)于Unity基于Google Protobuf序列化和反序列化小案例的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 在Unity中使用Protobuf進(jìn)行序列化

    在Unity中使用Protobuf進(jìn)行序列化

    目錄 1.介紹 1.1 什么是Protobuf 1.2 Protobuf和其他數(shù)據(jù)序列化方案對比 2.下載Protobuf 2.1?方案一 使用VS的Nuget包管理器進(jìn)行安裝(推薦) 2.1.1安裝Protobuff包 2.1.2拷貝.dll文件 2.2 方案二 從Github下載并自己生成.dll 2.2.1 下載Probuff 2.2.2?VS打開解決方案 2.2.3 安裝.NET SDK 2.2.4 生成.dll文件 3

    2024年04月12日
    瀏覽(30)
  • 什么是序列化和反序列化?

    JSON(JavaScript Object Notation)和XML(eXtensible Markup Language)是兩種常用的數(shù)據(jù)交換格式,用于在不同系統(tǒng)之間傳輸和存儲數(shù)據(jù)。 JSON是一種輕量級的數(shù)據(jù)交換格式,它使用易于理解的鍵值對的形式表示數(shù)據(jù)。JSON數(shù)據(jù)結(jié)構(gòu)簡單明了,易于讀寫和解析,是基于JavaScript的一種常用數(shù)據(jù)

    2024年02月09日
    瀏覽(29)
  • Java序列化和反序列化

    目錄 一、序列化和反序列化 二、Java序列化演示 三、反序列化漏洞 1、含義 ?序列化就是內(nèi)存中的對象寫入到IO流中,保存的格式可以是二進(jìn)制或者文本內(nèi)容。反序列化就是IO流還原成對象。 2、用途 (1)傳輸網(wǎng)絡(luò)對象 (2)保存Session 1、序列化 java.io.ObjectOutputStream代表對象

    2023年04月25日
    瀏覽(24)
  • 【Linux】序列化和反序列化

    【Linux】序列化和反序列化

    在網(wǎng)絡(luò)編程中,直接使用 結(jié)構(gòu)體 進(jìn)行數(shù)據(jù)傳輸會出錯,因?yàn)?本質(zhì)上socket無法傳輸結(jié)構(gòu)體 ,我們只有將結(jié)構(gòu)體裝換為字節(jié)數(shù)組,或者是字符串格式來傳輸,然后對端主機(jī)收到了數(shù)據(jù),再將其轉(zhuǎn)化為結(jié)構(gòu)體,這就是序列化和反序列化的過程! 序列化 (Serialization)是將對象的狀態(tài)

    2024年02月10日
    瀏覽(19)
  • Java序列化和反序列化機(jī)制

    在閱讀 ArrayList 源碼的時候,注意到,其內(nèi)部的成員變量動態(tài)數(shù)組 elementData 被Java中的 transient 修飾 transient 意味著Java在序列化時會跳過該字段(不序列化該字段) 而Java在默認(rèn)情況下會序列化類(實(shí)現(xiàn)了 Java.io.Serializable 接口的類)的所有非瞬態(tài)(未被 transient 修飾

    2024年03月15日
    瀏覽(27)
  • jackjson自定義序列化和反序列化

    jackjson自定義序列化和反序列化

    JRT引用的jackjson作為json處理庫。由于JRT.ORM要求表不用datetime類型,把日期和時間用Int存儲,所以O(shè)RM要支持日期時間的轉(zhuǎn)換。為什么要把日期時間不用datetime而用Int,比如日期:20240117,時間就是從0點(diǎn)到當(dāng)前的秒數(shù)。因?yàn)椴挥胐atetime兼容性好,不會因?yàn)椴煌瑤靌atetime函數(shù)不同而要

    2024年01月18日
    瀏覽(21)
  • TCP定制協(xié)議,序列化和反序列化

    TCP定制協(xié)議,序列化和反序列化

    目錄 前言 1.理解協(xié)議 2.網(wǎng)絡(luò)版本計算器 2.1設(shè)計思路 2.2接口設(shè)計 2.3代碼實(shí)現(xiàn): 2.4編譯測試 總結(jié) ? ? ? ? 在之前的文章中,我們說TCP是面向字節(jié)流的,但是可能對于面向字節(jié)流這個概念,其實(shí)并不理解的,今天我們要介紹的是如何理解TCP是面向字節(jié)流的,通過編碼的方式,自

    2024年02月12日
    瀏覽(23)
  • java中的序列化和反序列化

    objectOutputStream 對象的序列化,以流的形式將對象寫入文件 構(gòu)造方法: objectOutputStream(OutputStream out) 傳入一個字節(jié)輸入流創(chuàng)建objectOutputStream對象 成員方法: void writeObject(object obj) 將指定的對象寫入objectOutputStream 使用步驟: 創(chuàng)建一個類,這個類實(shí)現(xiàn)Serializable接口,Serializable是一

    2024年02月14日
    瀏覽(19)
  • Java中序列化和反序列化解釋

    在Java中,序列化(Serialization)是指將對象的狀態(tài)轉(zhuǎn)換為字節(jié)流的過程,以便將其保存到文件、在網(wǎng)絡(luò)中傳輸或持久化到數(shù)據(jù)庫中。而反序列化(Deserialization)則是將字節(jié)流轉(zhuǎn)換回對象的過程,恢復(fù)對象的狀態(tài)。 序列化和反序列化主要用于以下場景: 1. 對象持久化:通過序列

    2024年02月07日
    瀏覽(23)
  • [計算機(jī)網(wǎng)絡(luò)]---序列化和反序列化

    [計算機(jī)網(wǎng)絡(luò)]---序列化和反序列化

    前言 作者 :小蝸牛向前沖 名言 :我可以接受失敗,但我不能接受放棄 ?? 如果覺的博主的文章還不錯的話,還請 點(diǎn)贊,收藏,關(guān)注??支持博主。如果發(fā)現(xiàn)有問題的地方歡迎?大家在評論區(qū)指正? 目錄 ?一、再談協(xié)議 二、序列化和反序化 1、網(wǎng)絡(luò)版本計算器的場景搭建 2、

    2024年02月20日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包