当前位置: 首页 > news >正文

国外 网站设计济南网站优化公司排名

国外 网站设计,济南网站优化公司排名,手机网站建设全包,新手站长做什么网站什么是FlatBuffer 为什么用FloatBuffer,优势在哪? 下图是常规使用的各种数据存储类型的性能对比。 对序列化数据的访问不需要打包和拆包——它将序列化数据存储在缓存中,这些数据既可以存储在文件中,又可以通过网络原样传输&…

 什么是FlatBuffer

为什么用FloatBuffer,优势在哪?

下图是常规使用的各种数据存储类型的性能对比。 

  1. 对序列化数据的访问不需要打包和拆包——它将序列化数据存储在缓存中,这些数据既可以存储在文件中,又可以通过网络原样传输,而没有任何解析开销;(这是最主要的原因,ProtoBuffer、JSON等均需要拆包和解包)
  2. 内存效率和速度——访问数据时的唯一内存需求就是缓冲区,不需要额外的内存分配。 这里可查看详细的基准测试;
  3. 扩展性、灵活性——它支持的可选字段意味着不仅能获得很好的前向/后向兼容性(对于长生命周期的游戏来说尤其重要,因为不需要每个新版本都更新所有数据);
  4. 最小代码依赖——仅仅需要自动生成的少量代码和一个单一的头文件依赖,很容易集成到现有系统中。再次,看基准部分细节;
  5. 强类型设计——尽可能使错误出现在编译期,而不是等到运行期才手动检查和修正;
  6. 使用简单——生成的C++代码提供了简单的访问和构造接口;而且如果需要,通过一个可选功能可以用来在运行时高效解析Schema和类JSON格式的文本;
  7. 跨平台——支持C++11、Java,而不需要任何依赖库;在最新的gcc、clang、vs2010等编译器上工作良好;

 除了性能上的优势,FlatBuffer还支持把数据序列化成明文Json供开发者校验数据正确性。

游戏开发什么情况选择使用FlatBuffer 

 大量的数据配表,想要高效加载大量数据

FlatBuffer使用流程

  1. 定义FlatBuffer数据格式文件schema
  2. 序列化数据成bytes文件
  3. Unity工程中加入FlatBuffer解析源码
  4. 使用FlatC.exe工具生成C#数据解析代码
  5. 加载bytes数据解析成数据对象。

Schema

FlatBuffer的自定义数据格式文件叫Schema。文件后缀是.fbs,和protobuffer的.proto后缀类似。

Schema支持的语法有

创建MyTestData.fbs文件

//统计一下所有使用类型
//namespace的作用:1生成C#代码有命名空间  2生成文件夹
namespace MyGame;//attribute字段暂时没看啥作用
attribute "priority";//枚举使用方式1
enum Color : byte { Red = 1, Green, Blue }//枚举使用方式2
enum PhoneType : int {MOBILE = 0,HOME = 1,WORK = 2,
}table Monster {number:string (required);type:int;
}table Weapon {number:string (required);type:int;
}table Pickup {number:string (required);type:int;
}//数据对象可以是Monster、Weapon、Pickup中的任何一个
union Any { Monster, Weapon, Pickup }//自定义三维数据
struct Vec3 {x:float;y:float;z:float;
}//Monster结构中展示了常规值类型数据的使用方法
//展示了在table内使用struct、数组、union、枚举
table MyTestData {pos:Vec3;//常规值类型damage:int = 500;hp:short = 100;name:string;friendly:bool = false (deprecated, priority: 1);//数组的使用方式inventory:[int];//枚举的使用方式,支持写默认值color:Color = Blue;test:Any;
}//root_type字段非常重要
root_type MyTestData;

Flatc.exe文件

flatc文件是干嘛的?它是个把schema自定义语法文件生成目标语言代码的程序。

Releases · google/flatbuffers · GitHubFlatBuffers: Memory Efficient Serialization Library - Releases · google/flatbuffersicon-default.png?t=O83Ahttps://github.com/google/flatbuffers/releases 

 新建一个批处理文件exportCSharp.bat

flatc.exe --csharp -o Sample MyTestData.fbs

--csharp代表生成目标语言

-o代表输出文件路径为 Sample文件夹

双击运行Bat文件,发现有语法错误 

修改53行语法错误继续运行bat,成功后没啥日志

到目标文件夹去看一下

通过图片可以看出,我们在Schema文件里定义的数据类型都生成了一份C#文件,把MyGame文件夹拷贝到Unity项目中就可以解析这些数据啦

打开MyTestData文件简单看一下,反正都是数据格式咱们不需要太关心。

 下载FlatBuffer源码

为何前面已经导出了schema数据代码,还要下载FlatBuffer源码??

因为那只是数据相关的,需要源码去驱动数据代码序列化和反序列化功能。

https://github.com/google/flatbuffersicon-default.png?t=O83Ahttps://github.com/google/flatbuffers 

 把这些C#脚本拷贝到Unity项目中,多余文件可以删掉。

把源码拷贝到项目中后,编译报错

原因是我的FlatBuffer源码使用的是老版本,和flatc.exe代码的版本号不配套,你们从官网上下载肯定是配套的。

在Unity中使用FlatBuffer

完成前面的工作就可以正式使用FlatBuffer啦 

测试工程就只有FlatBuffers源码和我们生成的MyGame数据脚本

创建一个测试文件UseFlatBuffer.cs

http://www.hengruixuexiao.com/news/8502.html

相关文章:

  • 做网站排版广州seo推广公司
  • 福田区罗湖区盐田区关键词整站优化
  • 下载做网站的软件网络营销推广的方式
  • 北京疫情情况 最新消息今天推推蛙seo
  • 免费广告行业网站建设如何推广自己的产品
  • 网站设计师对应的专业最近发生的热点事件
  • 商标注册号站内关键词排名优化软件
  • 外贸网站建设软件品牌推广活动策划方案
  • 变更网站做推广需要备案郴州网站定制
  • 邢台市第三医院厦门站长优化工具
  • java做动态网站引擎网站推广法
  • 深圳做网站j华信科网络营销成功的品牌
  • 在哪个网站上做预收款报告电商入门基础知识
  • 家用电脑做网站seo关键词排名优化方法
  • 网站去版权免费发广告网站
  • 网站上怎么做支付接口博客网站登录入口
  • wordpress最常用水印搜狗搜索引擎优化论文
  • 怎么做家具定制网站seo搜索引擎优化推广专员
  • wordpress怎么调用api网站seo完整seo优化方案
  • 网站建设需要会什么软件有哪些成免费crm特色
  • 广中路街道网站建设网站seo方案策划书
  • 网站域名重定向怎么做百度seo优化推广
  • 工地施工模板尺寸要求sem和seo
  • 广告制作公司转型东莞网站seo优化托管
  • 淘宝网站是什么语言做的sem模型
  • 湖北建站公司北京seo经理
  • 滨江网站开发鸡西网站seo
  • 深圳网站设计公司设计虚拟主机搭建网站
  • 股票做空网站百度推广方式
  • 济南手机网站建设接推广一般多少钱