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;


    }

    }

    本博客所有内容均为原创,转载请注明出处.
  • 相关阅读:
    数据库之小问题
    网络基础
    react-fiber 解析
    【like-react】手写一个类似 react 的框架
    istat menus 序列号
    Git学习
    JavaScript设计模式与开发实践【第一部分】
    javascript 原生bind方法实现
    requirejs 学习
    mac 安装maven+eclipse
  • 原文地址:https://www.cnblogs.com/what-lee/p/9274311.html
Copyright © 2011-2022 走看看