UE4.27.2 转换虚拟资产路径到实际资产路径
2025-05-20 22:58:09
通过 FAssetData.PackageName
可以知道资产不带扩展名的虚拟路径
有的时候想要知道它对应磁盘上的实际资产绝对路径
Engine/Source/Runtime/CoreUObject/Private/Misc/PackageName.cpp 的 FLongPackagePathsSingleton
存储了虚拟路径根目录到实际路径根目录绝对路径的转化
这个映射关系存成 pair,需要转化的时候,遍历这个 pair 来对比,找到了就替换,然后返回替换后的路径
1 | bool FPackageName::TryConvertLongPackageNameToFilename(const FString& InLongPackageName, FString& OutFilename, const FString& InExtension) |
最终这个方法被封装成 FPackageName::LongPackageNameToFilename
至于后缀所有的可能,已经在 Engine/Source/Runtime/CoreUObject/Private/Misc/PackageName.cpp 给出
1 | FString FPackageName::AssetPackageExtension = TEXT(".uasset"); |
FPackageName 对它们有一层 getter 的封装
知道了这些,给定任意一个资产,就可以知道它不带后缀的路径
给定任意一个资产,怎么知道他对应的后缀是什么呢?
感觉这就需要客户端自己安排了