我们可以开始拜读UE序列化源码了,首先,不出意外的,UE的序列化即是使用的访问者模式设计,其中的重中之重就是类FArchive,类FArchive即是访问者模式中的访问者,但他不是什么简单的访问者基类,而是一个目的就是序列化别人的访问者, 由他去访问每一个可访问对象,包括基础数据类型int,float,bool,FString,或者容器 TMap...
以正反序列化UPackage的方式,将UObject连带着这堆信息一齐正反序列化 3.1. SVO UObject序列化:获得与该UObject有外部链关系的UPackage后,FLinker凭借合法的UPackage创建FLinkerSave,并序列化UPackage UObject反序列化:获得UPackage后,FLinker凭借合法的UPackage创建FLinkerLoad,并籍此反序列化UPackage UObject反序列化...
(事实上这个写入任务和之后的BitReader也只能写进某个TArray里,与我原本设想的指定硬地址序列化不同 ,仍然是序列化到一个内存对象,实际写入磁盘, 还需要另外的函数,比如这样调用 FFileHelper::SaveArrayToFile(ar,*path))
我往往只需要分析一边,那另一边的也能知道个七七八八(如同人的左右手,在大体上是对称的,但细节的纹路又有所区别),这是因为ue序列化本身也是使用的访问者模式去完成序列化,序列化和反序列化都是通过FArchive的一个<<接口去实现的,其源码上区别也就是那一些细节罢了。
将序列化的「二进制」数据以.uasset后缀的文件保存起来 LoadObject可以重新将uasset文件反序列化成UObjectimage.pngFArchive介绍UE使用访问者模式,让FArchive做访问者,来访问实现了Serialize(FArchive& Ar)的被访问者。 大多数存储使用此类型:TArray<uint8> Buffer / TArray<uint8>& Bytes FArchive 通过重载 << 来...
目录JSON简介构造Json格式方法一:使用JsonObject添加JSON头文件构造JsonObject序列化完整代码方法二:使用JsonWriter完整代码解析Json格式使用JsonObject完整代码JSON简介JSON是一个轻量级的独立于编程语言的数据交换格式,它既便于人类读写,又适合机器读写。JSON中的基本定义:JSONObject: { }内的name-value对的集合。特 ...
7-1.动态与动态多播代理和序列化 7-2.多播代理绑定与值传递 7-3.多态事件代理 第八章.UE4多线程基础 8-1.Runnable线程实例 8-2.线程切换 8-3.GraphTask线程实例 8-4.AsyncTask线程实例 8-5.UE4三种线程的使用区别 第九章.多线程进阶 9-1.线程安全 ...
当从磁盘序列化到程序包,或在联网期间序列化时,TCHAR 字符小于 0xff 的字符串均存储为一串 8 位字节,否则存储为双字节 UTF-16 字符串。序列化代码可以根据需要处理任何字节次序转换。 3、UE4 加载的文本文件。 虚幻运行时使用 UnMisc.cpp 中的 appLoadFileToString() 函数来读取外部文本文件,如 .INT 文件。
再比如创建vs和ps,最终调用的是UE自己实现的ShaderFactory,内部维护了一个ShaderCache,如果没有对应缓存UE就会创建TVulkanBaseShader对应的对象,调用Setup序列化出头部一些参数和实际的Spirv代码,填充好UniformBuffer的布局Slot等。 这里只是简单的介绍一下这些API都是在做什么,就不具体说内部实现了,有兴趣可以自己阅读源...