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

128 篇文章 152 订阅

目标

一般情况下,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到末尾的字符
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值