观察UE4里“在外部存储Actor”功能的基础行为

目标

一般情况下,Actor保存于关卡文件中。
但是,如果将Actor的 packaging mode 设置为 External
在这里插入图片描述
则此Actor就会存储在另一个文件而非关卡文件中。

本篇目标是:

  1. 观察此功能的基础行为
  2. 观察外部文件的路径名规则

“在外部存储Actor”功能的基础行为

对于一般的Actor(默认packaging modeInternal)。修改此Actor会标脏关卡,Save All时会提示保存此关卡:
在这里插入图片描述
而对于 packaging mode 设置为 External 的Actor,修改此Actor不会标脏关卡,Save All时可见其文件并非关卡文件,而是另一个文件:
在这里插入图片描述
这个文件在UE编辑器的ContentBrowser里看不到,但可以在文件夹中找到:
在这里插入图片描述

Actor存储的外部文件路径名规则

packaging mode 设置为 External 时,引擎会创建对应的package保存Actor。创建package的代码在:SourceRuntimeEnginePrivateLevel.cpp 中的 ULevel::CreateActorPackage 函数中。可以在设置External 的时候触发这里的断点:
在这里插入图片描述
而其中 ActorPackageName 即为外部文件的路径名。
观察这里的逻辑:

首先,它与Actor的GUID有关。这里是使用 Base36Encoded 的格式将GUID转换为了字符串。 Base36Encoded格式的逻辑可在 FGuid::ToString 函数中找到:
在这里插入图片描述
逻辑类似于将GUID的四个32位的数字视为一个2^128的数字,然后将其转换为36进制的数字。(因为10个数字+26个字母等于36)。

而最后得到的文件的路径名按照顺序由以下部分拼接而成:

  1. Content路径 /
  2. 关卡路径 /
  3. GUID转字符串的第1、2个字符 /
  4. GUID转字符串的第3、4个字符 /
  5. GUID转字符串的第5到末尾的字符
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>