码迷,mamicode.com
首页 > 编程语言 > 详细

Unity3D protobuf-net使用方式

时间:2017-09-02 16:52:12      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:add   poi   protoc   get   ini   return   重启   unity3   queue   

 

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使用方式

标签:add   poi   protoc   get   ini   return   重启   unity3   queue   

原文地址:http://www.cnblogs.com/mrblue/p/7466881.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!