Unity3D protobuf-net使用方式
1、下载protobuf-net
2、创建Unity工程,创建一个Plugins文件夹,将protobuf-net解压把里面得protobuf-net放到Plugins
3、创建一个名为mcs的文本文件,里面写上-unsafe
4、重启Unity
5、编译自动生成cs代码工具
protogen.exe就是刚才生成的
6、编写.proto文件
message.proto里写入
message TeamCharacterOne
{
required uint64 CharacterId = 1;
required string CharacterName = 2;
required int32 RoleId = 3;
required int32 Level = 4;
required int32 Ladder = 5;
required int32 FightPoint = 6;
optional int32 QueueResult = 7;
}
7、 生成.cs代码
创建一个proto.bat文件文件
里面写入
@echo off
rem 查找文件
for /f "delims=" %%i in ('dir /b ".\*.proto"') do echo %%i
rem 转cpp for /f "delims=" %%i in ('dir /b/a "*.proto"') do protoc -I=. --cpp_out=. %%i
for /f "delims=" %%i in ('dir /b/a "*.proto"') do protogen -i:%%i -o:%%~ni.cs
pause
8、把代码放入Unity工程
9、写测试代码
using message;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine; public class NewBehaviourScript : MonoBehaviour { // Use this for initialization
void Start () {
var a = new TeamCharacterOne();
a.CharacterId = 10;
a.CharacterName = "fdsafd";
var b = Serialize(a); var data = Deserialize<TeamCharacterOne>(b);
Debug.Log(data.CharacterName);
} // Update is called once per frame
void Update () { } byte[] Serialize(object o)
{
using (MemoryStream ms = new MemoryStream())
{
ProtoBuf.Serializer.Serialize(ms, o);
byte[] result = new byte[ms.Length];
ms.Position = 0;
ms.Read(result, 0, result.Length); return result;
}
} T Deserialize<T>(byte[] b)
{
using (MemoryStream ms = new MemoryStream())
{ ms.Write(b, 0, b.Length);
ms.Position = 0;
return ProtoBuf.Serializer.Deserialize<T>(ms);
}
}
}
Unity3D protobuf-net使用方式的更多相关文章
- 在ios android设备上使用 Protobuf (使用dll方式)
http://game.ceeger.com/forum/read.php?tid=13479 如果你的工程可以以.Net 2.0 subset模式运行,请看这个帖子中的方法. 地址:http://g ...
- (转)在ios android设备上使用 Protobuf (使用dll方式)
自:http://game.ceeger.com/forum/read.php?tid=13479 如果你的工程可以以.Net 2.0 subset模式运行,请看这个帖子中的方法. 地址:http:/ ...
- 编写Unity3D着色器的三种方式
不管你会不会写Unity3D的shader,估计你会知道,Unity3D编写shader有三种方式,这篇东西主要就是说一下这三种东西有什么区别,和大概是怎样用的. 先来列一下这三种方式: fixed ...
- 投影方式- Unity3D游戏开发培训
投影方式- Unity3D游戏开发培训 作者:Jesai 2018-02-12 20:33:13 摘 要 透视投影是3D渲染的基本概念,也是3D程序设计的基础.掌握透视投影的原理对于深入理解其他 ...
- 【Unity3D基础】让物体动起来①--UGUI鼠标点击移动
背景 首先还是先声明自己是比较笨的一个人,总是找不到高效的学习方法,目前自己学习Unity3D的方式主要是两种,一种是直接看高质量的源码,另一种是光看不行还要自己动手,自己写一些有代表性的小程序,这也 ...
- google protobuf ios开发使用
简介: protobuf 即 google protocol buffer 是一种数据封装格式协议: 比如其他经常用的xml,json等格式:protobuf的优势是效率高,同样的一份数据使用prot ...
- Protocol Buffers(Protobuf)开发者指南---概览
Protocol Buffers(Protobuf)开发者指南---概览 欢迎来到protocol buffers的开发者指南文档,protocol buffers是一个与编程语言无关‘.系统平台无关 ...
- protobuf 向前兼容向后兼容
http://blog.163.com/jiang_tao_2010/blog/static/12112689020114305013458/ 不错的protobuf.. protobuf的编码方式: ...
- Linux下protobuf的编译与安装【各种奇葩问题】
1.下载源码 首先,从github上下载protobuf的源码,地址:https://github.com/google/protobuf,我选择下载2.5.0版本. 2.编译protobuf 2.1 ...
- Linux下protobuf的编译与安装
1.下载源码 首先,从github上下载protobuf的源码,地址:https://github.com/google/protobuf,我选择下载2.5.0版本. 2.编译protobuf 将下载 ...
随机推荐
- 长姿势 教你在qq空间上显示iPhone6尾巴
下午刚午休完的时候,广州很多童鞋都感受到了震感,半青也感受到了,不仅如此,我还感受到了更大震感,那就是翻一下QQ空间动态,竟然看到有一位好友的尾巴竟然显示为“iPhone6”,顿时觉得该好友逼格太高了 ...
- Java编程思想学习笔记——枚举类型
前言 关键字enum可以将一组具名的值有限集合创建一种为新的类型,而这些具名的值可以作为常规的程序组件使用. 正文 基本enum特性 调用enum的values()方法可以遍历enum实例,value ...
- web front end stack web 前段技术概览
https://github.com/unruledboy/WebFrontEndStack
- 数据库事务MTDC出错解决办法
Communication with the underlying transaction manager has failed 与基础事务管理器的通信失败 排除步驟: 1.檢查MS DTC 設置.[ ...
- bash脚本 while语法
基本语法(比较常见的两种形式): 只要特定条件为真,”while” 语句就会执行 while [ condition ] do command1 command2 command3 done 或者 w ...
- MTK 隐藏上方的状态栏
步骤一: 源码/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.ja ...
- php根据地理坐标获取国家、省份、城市,及周边数据类
功能:当App获取到用户的地理坐标时,可以根据坐标知道用户当前在那个国家.省份.城市,及周边有什么数据. 原理:基于百度Geocoding API 实现,需要先注册百度开发者,然后申请百度AK(密钥) ...
- 10 -- 深入使用Spring -- 5... 实现任务的自动调度
10.5 实现任务的自动调度 10.5.1 使用Quartz 10.5.2 在Spring中使用Quartz
- DOS 配置IP地址
@echo off :startIP set /p source=STATIC Y or N or E: echo source:%source% if "%source%" == ...
- 【GIS】Cesium回到初始位置
var boundingSphere = new Cesium.BoundingSphere(Cesium.Cartesian3.fromDegrees(116.4, 39.9, 100), 15 ...