UE4在C++中加载Content目录下的资源文件

本文介绍如何在UE4的C++代码中加载Content目录下的资源文件,包括模型、蓝图类等。利用LoadObject和FSoftObjectPath进行资源加载,以及LoadClass和FSoftClassPath用于加载蓝图类。同时讲解了资源路径的构造,如更改资源文件名后如何正确加载,并提及了FClassFinder在构造函数中的特殊用法。
摘要由CSDN通过智能技术生成

UE4中Content的资源都是继承于UObject类,可以使用LoadObject加载资源

UObject* object = LoadObject<UObject>(nullptr,path);

例如加载StarterContent/Props中的模型资源SM_Chair可以这样写

UStaticMesh* mesh = LoadObject<UStaticMesh>(nullptr,TEXT("/Game/StarterContent/Props/SM_Chair"));
if(mesh)
{
}

path也可以写成TEXT("/Game/StarterContent/Props/SM_Chair.SM_Chair"),点前面的字符串是资源文件名,点后面的字符串是资源名,资源名与资源文件名不一定一样,这时必须要加点,一个文件中有可能包含多个资源。

比如在外部(不是UE4编辑器中)将SM_Chair文件改名为SM_Chair1,如果要加载椅子模型必须写成下面的形式

UStaticMesh* mesh = LoadObject<UStaticMesh>(nullptr,TEXT("/Game/StarterContent/Props/SM_Chair1.SM_Chair"));

此外FSoftObjectPath也可以用于加载资源

FSoftObjectPath softClassPath(path);
UObject* Object = softClassPath.TryLoad();

TryLoad中也调用了LoadObject,加载

在Unreal Engine (UE)的C++,如果你想要创建并加载不在`Content`目录下的静态网格(Static Mesh),你需要使用`FStreamManager`或者`IFileManager`接口来处理文件路径。这里是一个基本步骤: 1. **包括头文件**: ```cpp #include "Engine.h" ``` 2. **获取文件管理器**: ```cpp IFileManager* FileManager = IFileManager::Get(); ``` 3. **指定文件路径**: 确保你有正确的相对或绝对路径。假设你想从`MyCustomPath`加载网格,路径可能是: ```cpp FString CustomFilePath = TEXT("MyCustomPath/MyStaticMesh.mesh"); ``` 4. **创建FStream或打开文件**: 使用`FStream`来操作文件,或者通过`FileManager->LoadObject`来加载静态网格源: ```cpp TArray<uint8> FileData; if (!FileManager->LoadFileIntoMemory(*CustomFilePath, FileData)) { // 处理加载失败的情况 } ``` 5. **加载静态网格**: 如果需要的话,你可以将`FileData`转换为`FStaticMesh`对象,例如: ```cpp FAssetRegistryModule::Get().RegisterObject<UStaticMesh>(nullptr, *CustomFilePath, RF_Public | RF_Standalone); TSharedPtr<FStaticMesh> StaticMesh = MakeShareable(new UStaticMesh()); if (StaticMesh->LoadFromMemory(FileData)) { // 现在你可以使用StaticMesh了 } else { // 处理加载错误 } ``` 6. **保存和卸载**: 当不再需要这个源时,记得调用`SavePackage`和`UnloadObject`以释放内存和磁盘空间: ```cpp if (StaticMesh) { StaticMesh->SavePackage(); // ... (其他清理工作) GWorld->GetAssetRegistry()->DeregisterObject(StaticMesh.Get()); } ``` 记住,这个过程假设你的游戏已经配置好支持自定义内容路径,并且文件权限允许读取。如果网格是外部源(如网络加载或从硬盘读取),你还需要考虑线程安全和网络同步。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值