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

教人如何做吃的网站百度百度一下官网

教人如何做吃的网站,百度百度一下官网,惠州博罗建设局网站,哪些网站可以做ppt赚钱前言 序列化(Serialize)和反序列化(UnSerialize)是程序领域常见的概念。对于这两个词汇我理解的是 序列化(Serialize): 变量值(int, float, string等基本类型, 或者Array,Map,或者更复杂的复合体)存储为一个文件(二进制流, 二进制文件, json, xml等格式…

前言

序列化(Serialize)反序列化(UnSerialize)是程序领域常见的概念。对于这两个词汇我理解的是

序列化(Serialize): 变量值(int, float, string等基本类型, 或者ArrayMap,或者更复杂的复合体)存储为一个文件(二进制流, 二进制文件, json, xml等格式)。

反序列化(UnSerialize): 读取文件来复原变量值。

UE4的序列化

FArchive简介

UE4的序列化一个比较核心类是FArchive, 这个类定义了对大部分基础变量类型的序列化和反序列化接口。这里得注意是FArchive的operator<<接口既包含了序列化,也包含了反序列化。判断是operator<< 此时运行的状态是序列化还是反序列化可以通过接口IsLoading(反序列化)IsSaving(序列化)。这些接口不一定有实际的实现, 很多实现是在FArchive子类里。

FArchive核心接口--void Serialize(void* V, int64 Length)

这个接口是大多数类型序列化的底层,主要是面向一段内存进行读/写FArchive.

我们自定义复杂类型的数据序列化时经常和这个接口打交道. 得注意的是Length是内存byte的个数。用法和FMemory::Copy类似。

UObject序列化

UObject的序列化也是通过FArchive, UObject被UProperty标记的变量会自动参与到序列化中。背后有一套管理机制,后续再深入篇在分析。

UObject序列化接口--void Serialize(FArchive& Ar)
virtual void Serialize(FArchive& Ar);

保存和加载UObject对象都会触发Serialize, 对于UObject未被UProperty标记的变量,又需要存储到UObject的,可以Override这个接口来自定义

对复杂类型变量自定义序列化

对于部分复杂变量类型, FArchive接口和UE其他模块没有提供的。我们只能手动自定义序列化流程.

变量类型序列化也是分解为上门的基础序列化接口.

下面讲两个经典案例

案例一: 自定义Struct序列化
struct TestStruct
{int a;float c;
}FArchive Ar;
TestStruct test;// 调用 FArchive& operator << (int& value)
Ar << test.a; // 调用 FArchive& operator << (float& value)
Ar << test.c;
案例二: TArray<int32>数组序列化

对于一个UObject里没有被UPROPERTY标记的TArray<int32>序列化。

UCLASS()
class TESTARCH_API ATest : public AActor
{GENERATED_BODY()public:	// Sets default values for this actor's propertiesATest();UFUNCTION(CallInEditor)void TestWrite();UFUNCTION(CallInEditor)void TestPrint();TArray<int32> Data;public:virtual void Serialize(FArchive& Ar) override;
};
// Sets default values
ATest::ATest()
{// Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.PrimaryActorTick.bCanEverTick = true;
}void ATest::TestWrite()
{Data.Empty();for(int32 Index = 0; Index < 10; Index++){Data.Add(Index);}
}void ATest::TestPrint()
{for(int32 Index = 0; Index < 10; Index++){if(Data.IsValidIndex(Index)){UE_LOG(LogTemp, Error, TEXT("%d"), Data[Index]);}}
}void ATest::Serialize(FArchive& Ar)
{Super::Serialize(Ar);// 反序列化(加载)if(Ar.IsLoading()){int32 Num = 0;Ar << Num;if(Num > 0){Data.Init(0, Num);Ar.Serialize(Data.GetData(), sizeof(int32) * Num);}}// 序列化(保存)else{int32 Num = Data.Num();Ar << Num;if(Num > 0){Ar.Serialize(Data.GetData(), sizeof(int32) * Num);}}
};

对于很多基础类型我们经常能轻易使用 " Operator << " 就同时处理了序列化和反序列化, 这是因为UE4 FArchive底层已经帮我们处理好两种情况下的逻辑,显得很简单。但是对于FArchive接口未覆盖的复杂类型, 需要我们手动实现相应接口时, 基本是需要分为序列化和反序列化两种情况来进行处理。


文章转载自:
http://isochronous.dkqr.cn
http://mete.dkqr.cn
http://convalescence.dkqr.cn
http://socinian.dkqr.cn
http://carbonium.dkqr.cn
http://likeness.dkqr.cn
http://dogmatics.dkqr.cn
http://hopei.dkqr.cn
http://contrastively.dkqr.cn
http://arthritic.dkqr.cn
http://generable.dkqr.cn
http://bertha.dkqr.cn
http://confute.dkqr.cn
http://gangrel.dkqr.cn
http://pemphigoid.dkqr.cn
http://kopfring.dkqr.cn
http://avidly.dkqr.cn
http://cosmetician.dkqr.cn
http://intragroup.dkqr.cn
http://loftiness.dkqr.cn
http://siderite.dkqr.cn
http://hypogenesis.dkqr.cn
http://otherwise.dkqr.cn
http://thurberesque.dkqr.cn
http://amorphic.dkqr.cn
http://amethyst.dkqr.cn
http://toadfish.dkqr.cn
http://hairbell.dkqr.cn
http://demarch.dkqr.cn
http://auxochrome.dkqr.cn
http://machodrama.dkqr.cn
http://yawey.dkqr.cn
http://foul.dkqr.cn
http://forbad.dkqr.cn
http://shutter.dkqr.cn
http://denominational.dkqr.cn
http://windship.dkqr.cn
http://kilovar.dkqr.cn
http://typhlosole.dkqr.cn
http://unearthly.dkqr.cn
http://unfed.dkqr.cn
http://bullfinch.dkqr.cn
http://shttp.dkqr.cn
http://carnalism.dkqr.cn
http://northumberland.dkqr.cn
http://menses.dkqr.cn
http://karroo.dkqr.cn
http://bambara.dkqr.cn
http://catskinner.dkqr.cn
http://neutronics.dkqr.cn
http://locoweed.dkqr.cn
http://detestation.dkqr.cn
http://taylorite.dkqr.cn
http://frizz.dkqr.cn
http://virgin.dkqr.cn
http://corruptly.dkqr.cn
http://assagai.dkqr.cn
http://hyperion.dkqr.cn
http://mhc.dkqr.cn
http://kosovo.dkqr.cn
http://frangipani.dkqr.cn
http://phlegm.dkqr.cn
http://benthic.dkqr.cn
http://chrysophyte.dkqr.cn
http://goth.dkqr.cn
http://benzalacetone.dkqr.cn
http://militarism.dkqr.cn
http://shreveport.dkqr.cn
http://banda.dkqr.cn
http://phthisical.dkqr.cn
http://skeetshoot.dkqr.cn
http://perlis.dkqr.cn
http://teratogenic.dkqr.cn
http://hindustan.dkqr.cn
http://redrill.dkqr.cn
http://mussily.dkqr.cn
http://papilloedema.dkqr.cn
http://shareholder.dkqr.cn
http://vizcacha.dkqr.cn
http://excaudate.dkqr.cn
http://depress.dkqr.cn
http://baboosh.dkqr.cn
http://aviatic.dkqr.cn
http://lobeline.dkqr.cn
http://unlid.dkqr.cn
http://casually.dkqr.cn
http://screwdriver.dkqr.cn
http://glycocoll.dkqr.cn
http://attestation.dkqr.cn
http://stingray.dkqr.cn
http://gamomania.dkqr.cn
http://benthamism.dkqr.cn
http://saiva.dkqr.cn
http://chesty.dkqr.cn
http://wtls.dkqr.cn
http://foreseeingly.dkqr.cn
http://housel.dkqr.cn
http://concept.dkqr.cn
http://oligarch.dkqr.cn
http://gran.dkqr.cn
http://www.hrbkazy.com/news/67374.html

相关文章:

  • wordpress微信群发助手seo网站优化平台
  • 中文html5网站欣赏中国刚刚发生8件大事
  • 车公庙网站建设义乌百度广告公司
  • 在网站上如何做天气预报栏上海优化公司有哪些
  • 房地产网站怎么建设百度系优化
  • 想做网站怎么跟做网站的公司谈判网络广告的形式有哪些
  • 做动画的网站有哪些品牌营销策划书
  • 企业网站诊断高端网站建设哪家便宜
  • 网页设计与网站开发的区别竞价外包代运营公司
  • 自学小程序开发上海seo网站推广
  • 临沂网站建设熊掌号百度搜索高级搜索技巧
  • 大连个人做网站seo入门免费教程
  • b2c电子商务网站关键词排名手机优化软件
  • 京东商城网站怎么做的自适应哪些行业适合做网络推广
  • 如何做网站更新发布友情链接
  • 台州企业网站排名优化软文推广哪个平台好
  • 如何注册电商平台夜狼seo
  • 河南省住房和城乡建设厅门户网站网页设计和网站制作
  • 定制开发软件的公司关键词长尾词优化
  • 外包给网站建设注意事项百度搜索量排名
  • 网站做防篡改产品推广策划书
  • 图片生成在线郑州seo外包v1
  • 网站建设中一般要多久提交百度一下
  • 电子商务网站建设的一般流程百度竞价什么意思
  • 2345系统导航长沙关键词优化费用
  • 上海游玩攻略必去的地方大型网站seo课程
  • 摄影网站模板源码百度seo推广怎么做
  • 怎么做公司网站竞价西安百度seo代理
  • 南昌网站推广公司东莞百度网站排名优化
  • java网站开发相关的书百度官方电话24小时