zoukankan      html  css  js  c++  java
  • Protobuf在Unity中的通讯使用

    代码很简单直接上了

    using ProtoBuf;
    using UnityEngine;
    using System.IO;
    using System;

    public class Test2 : MonoBehaviour
    {

    private void Start()
    {
    NetModel item = new NetModel()
    {
    ID = 1,
    Commit = "LZ",
    Message = "Unity"
    };

    byte[] result = Serialize<NetModel>(item);

    NetModel backIns = DeSerialize<NetModel>(result);
    Debug.Log(backIns.ID);
    Debug.Log(backIns.Commit);
    Debug.Log(backIns.Message);


    }

    public byte[] Serialize<T>(T classValue)
    {

    try
    {
    using (MemoryStream memory = new MemoryStream())
    {
    Serializer.Serialize<T>(memory, classValue);
    byte[] result = new byte[memory.Length];
    memory.Position = 0;
    memory.Read(result, 0, result.Length);
    return result;
    }
    }

    catch (Exception e)
    {
    Debug.Log(e);
    return null;
    }

    }

    public T DeSerialize<T>(byte[] value) //where T : class // 这里可以做个约束class类型, 也可以做个基佬,让所有序列化类继承之再去约束这个类更安全
    {


    try
    {
    using (MemoryStream ms = new MemoryStream())
    {
    ms.Write(value, 0, value.Length);
    ms.Position = 0;
    return Serializer.Deserialize<T>(ms);

    }
    }
    catch(Exception e)
    {
    Debug.Log("Error:"+e);
    return default(T);
    }


    }

    [ProtoContract]
    public class NetModel
    {
    [ProtoMember(1)]
    public int ID;
    [ProtoMember(2)]
    public string Commit;
    [ProtoMember(3)]
    public string Message;


    }

    }

    本博客所有内容均为原创,转载请注明出处.
  • 相关阅读:
    编程路上有你们陪着值了
    我是屌丝程序猿,我为自己代言.
    JSON转换类
    深入理解requestAnimationFrame
    CentOS部署yapi
    前端三种路由方式
    yarn安装使用
    三大框架对比
    es6异步编程
    JS原型链
  • 原文地址:https://www.cnblogs.com/what-lee/p/9274311.html
Copyright © 2011-2022 走看看