UE4对象系统_序列化和uasset文件格式

UE4对象系统_序列化和uasset文件格式,第1张

虚幻的序列化这块是个人比较喜欢的技术点,个人在工作中也山寨了个简化版,UE4延续了UE3的序列化方案。它使用了访问者模式(Vistor Pattern),将序列化的存档接口抽象化,其中FArchive为访问者, 其它实现了void Serialize( FArchive&Ar )接口的类为被访问者。FArchive可以是磁盘文件访问, 内存统计,对象统计等功能。

FArchive的类继承体系如下:

定义接口如下:

通过重载operater <<来实现对数据的访问。

下面为调试时的几张堆栈图:

UE中使用统一的格式存储资源(uasset, umap),每个uasset对应一个包(package),存储一个UPackage对象时,会将该包下的所有对象都存到uasset中。UE的uasset文件格式很像Windows下的DLL文件格式(PE格式),并且使用起来神似(下一节分析Linker)。

导入表条目FObjectImport

导出表的条目FObjectExport

UE保存XML文件看有没有BOM方法:

1、ditplus看BOM头的方法:

编辑器调整为UTF8编码格式后,保存的文件前面会多出一串隐藏的字符(也即是BOM),用于编辑器识别这个文件是否是以UTF8编码。运行Editplus,点击工具,选择首选项,选中文件,UTF-8标识选择 总是删除签名,然后对PHP文件编辑和保存后的PHP文件是不带BOM的。

2、ultraedit看bom头办法:

打开文件后,另存为选项的编码格式里选择(utf-8 无bom头),确定就好。

保存为UTF-8无BOM格式方法:

如果模板采用包含的方法包含多个UTF-8文件时,则模板需要选择UTF-8无BOM格式保存格式。

2. 用mb_convert_encoding / iconv 把gb2312文件转换成UTF-8文件时,默认设置是不带BOM的。不带BOM可能出现上述乱码问题,但是带 BOM,对于PHP的include文件要小心,会在PHP字节流前面多出EF BB BF,提前输出到显示器有可能会带来程序错误。一个解决方案是凡是被include的文件都保存为ANSI,主文件可以是UTF-8。

3. 如果中文页面在html head标记中将title标记放在<meta http-equiv="content-type" content="text/htmlcharset=UTF-8″ />前面会导致页面空白。所以UTF-8页面应该使用标准顺序为:

  <meta http-equiv="content-type" content="text/htmlcharset=UTF-8" />;

  <meta http-equiv="content-language" content="zh-CN" />;

  <meta content="index,follow" />。

1、首先在电脑里打开UltraEdit软件,并且在UltraEdit软件内打开一个文件;

2、然后就可以在UltraEdit软件的下方状态栏中看到当前打开的文件编码格式,图示为“UTF-8”;

3、点击编码格式旁边的“_”,可以更改编码格式;

4、编码格式不能随便设置,不然会出现中文乱码,如下图所示。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/11797711.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存