当前位置:   article > 正文

观察UE4里“在外部存储Actor”功能的基础行为_未使用外部actor

未使用外部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的代码在:Source\Runtime\Engine\Private\Level.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到末尾的字符
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号