http://www.cnblogs.com/linqing/p/5008862.html
-
ue4动态加载
2017-08-30 16:56:00http://www.cnblogs.com/linqing/p/5008862.html 转载于:https://www.cnblogs.com/chenqiuyihaha/p/7453982.html转载于:https://www.cnblogs.com/chenqiuyihaha/p/7453982.html
-
ue4动态加载资源路径信息
2019-11-22 14:30:50ue4动态加载资源 -
ue4 动态加载资源
2019-12-11 11:24:15动态加载非蓝图资源如图片声音等使用LoadObject<资源类型>(nullptr, TEXT("资源路径引用")) 加载蓝图资源获得蓝图类 LoadClass<蓝图的类型(nullptr, TEXT("资源路径引用_C")) 这里需要注意就是资源的路径...动态加载非蓝图资源 如图片 声音等使用LoadObject<资源类型>(nullptr, TEXT("资源路径引用"))
加载蓝图资源 获得蓝图类 LoadClass<蓝图的类型(nullptr, TEXT("资源路径引用_C")) 这里需要注意就是资源的路径需要额外加上_C
例如
UClass* result1 = LoadClass<ACharacter>(nullptr, TEXT("Blueprint'/Game/Map/Test/tt.tt_C'"));
根据名称动态加载UClass
UClass* result = FindObject<UClass>(ANY_PACKAGE, TEXT("PersonCharacterBase"));
-
UE4动态加载数据表
2018-09-28 14:36:59.1.创建一个数据表 需要改成UTF-8编码 2.创建一个Actor .h ...UFUNCTION(BlueprintCallable, Category = "MySocket") ... GetCsvContents(FString csvPath, int LieNum);...#include "Runtime/Co....1.创建一个数据表
需要改成UTF-8编码
2.创建一个Actor
.h
UFUNCTION(BlueprintCallable, Category = "MySocket") TMap<int, FString> GetCsvContents(FString csvPath, int LieNum);
.cpp
#include "Runtime/Core/Public/Serialization/Csv/CsvParser.h" #include "Runtime/Core/Public/Misc/Paths.h" TMap<int, FString> AMyActor::GetCsvContents(FString csvPath, int LieNum) { FString csvFile = FPaths::ProjectContentDir() + csvPath; TMap<int, FString> csvContent; if (FPaths::FileExists(csvFile)) { FString FileContent; //Read the csv file FFileHelper::LoadFileToString(FileContent, *csvFile); FCsvParser* csvfiles = new FCsvParser(FileContent); TArray<FString> t_str; TArray<TArray<const TCHAR*>> content = csvfiles->GetRows(); for (TArray<const TCHAR*>& ite : content) { for (const TCHAR*& chr : ite) { //aa.Append(chr); t_str.Add(chr); } } /*for (int i = 0; i < t_str.Num(); i++) { UE_LOG(LogTemp, Warning, TEXT("Info= %s"), *t_str[i]); }*/ int key = 0; for (int i = 0; i < t_str.Num(); i++) { if (i % LieNum == 0) { FString rowValue = t_str[i]; for (int j = 1; j < LieNum; j++) { rowValue.Append("," + t_str[i+j]); } csvContent.Add(key, rowValue); key++; } } return csvContent; } else return csvContent; }
datatable
USTRUCT(BlueprintType) struct FAssetAttribute : public FTableRowBase { GENERATED_USTRUCT_BODY() public: FAssetAttribute() : AssetName(LOCTEXT("CylinderBuilderName", "Cylinder")) , Category("123") , AssetDataPath(TEXT(StaticMesh'/Game/model/aa.aa')) , ICONpath(TEXT("AssetToolEdMode.BoxBrush")) , ToolTip(LOCTEXT("CylinderBuilderName", "Cylinder")) , Type(AssetType::A_StaticMesh) , netPath(TEXT("AssetToolEdMode.BoxBrush")) { } public: UPROPERTY(BlueprintReadWrite, EditAnywhere) FText AssetName; UPROPERTY(BlueprintReadWrite, EditAnywhere) FString Category; UPROPERTY(BlueprintReadWrite, EditAnywhere) FString AssetDataPath; UPROPERTY(BlueprintReadWrite, EditAnywhere) FString ICONpath; UPROPERTY(BlueprintReadWrite, EditAnywhere) FText ToolTip; UPROPERTY(BlueprintReadWrite, EditAnywhere) AssetType Type; UPROPERTY(BlueprintReadWrite, EditAnywhere) FString netPath; };
FString tablePath = "DataTable'/MyAsset/DataAsset.DataAsset'"; UDataTable* pDataTable = LoadObject<UDataTable>(NULL, *tablePath); TArray<FName> RowNames; FString ContextString; RowNames = pDataTable->GetRowNames(); for (auto& name : RowNames) { FAssetAttribute* pRow = pDataTable->FindRow<FAssetAttribute>(name, ContextString); if (pRow) { //LogDebug("read by row name --- RowName:%s, ID:%d, Name:%s, HP:%d", *(name.ToString()), pRow->ID, *pRow->Name, pRow->HP); } }
-
UE4 动态加载资源,运行内存优化
2019-04-15 18:09:09UE4中可能使用到DataAsset或者存储相关模型数据,基于UE4的运行机制,当前地图包含的所有资源都会在进入该地图时候统一全部加载,这就导致了如果我们在这个地图中只使用到了一部分DataAsset中的数据,但是依然会把...UE4中可能使用到DataAsset或者存储相关模型数据,基于UE4的运行机制,当前地图包含的所有资源都会在进入该地图时候统一全部加载,这就导致了如果我们在这个地图中只使用到了一部分DataAsset中的数据,但是依然会把其中所有的数据全部加载进来,模型,贴图,材质等,无端增加了许多内存开销。
但是其实UE4本身还给出了另外一种方法。比如用 TSoftObjectPtr<UStaticMesh> 代替 UStaticMesh* ,用TSoftObjectPtr标识的资源只会引用到该资源的链接,但是不会自动加载该资源,需要使用时候再手动加载和释放来达到降低内存消耗的目标。
USTRUCT(Blueprintable) struct FTestMeshInfo : public FTableRowBase //声明为TableRow是为了方便使用DataTable来管理数据 { GENERATED_BODY() UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "DA") int32 MeshID; UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "DA") TSoftObjectPtr<UStaticMesh> MeshResource; FTestMeshInfo() { MeshID = 0; MeshResource = FSoftObjectPath(""); } };//本文为CSDN博主执手画眉弯原创,未经允许不得转载!
//资源信息列表 TArray<FTestMeshInfo> TestMeshInfoList; //加载的资源列表 TArray<FSoftObjectPath> ObjToLoadList;
//加载资源 bool UTestGameInstance::LoadMeshRes(const TArray<int32> &LoadMeshIDList) { for(auto MeshID: LoadMeshIDList) { for(auto &MeshInfo : TestMeshInfoList) { if(MeshID == MeshInfo.MeshID) { ObjToLoadList.AddUnique(MeshInfo.MeshResource.ToSoftObjectPath()); } } } //加载资源 if (ObjToLoadList.Num() > 0) { UAssetManager::GetStreamableManager().RequestAsyncLoad(ObjToLoadList, FStreamableDelegate::CreateUObject(this, &UTestGameInstance::LoadMeshResCallBack), 0, true); return true; } else { return false; } } //加载完成回调 void UTestGameInstance::LoadMeshResCallBack() { GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, TEXT("Load Succeed!")); }//本文为CSDN博主执手画眉弯原创,未经允许不得转载! //卸载资源 void UTestGameInstance::UnloadMeshRes() { for (auto &Obj : ObjToLoadList) { UAssetManager::GetStreamableManager().Unload(Obj); } ObjToLoadList.Empty(); }
-
UE4 动态加载(C++)
2020-01-08 17:37:03UFUNCTION(BlueprintCallable) void ScanDirectory(TArray<FString>& AllFiles, const FString & FilePath, const FString& Postfix); UFUNCTION(BlueprintCallable) static TArray<... -
UE4 动态加载蓝图类型,场景根据名字查找actor,c++与蓝图交互
2018-11-22 16:32:02加载蓝图资源 void ALPCController::GenerateRainEffectBp() { UObject* loadObj = StaticLoadObject(UBlueprint::StaticClass(), NULL, TEXT("Blueprint'/Game/Camera/PostProcess/Bp/Bp_RainEffect.Bp_... -
UE4_动态加载
2019-04-03 13:09:51Ue4的世界组件可以实现地图的分段加载以达到不浪费资源的目的,世界组件跟流关卡相比的优点在于,加载大地图、多分段时,世界组件更易于编写和判断,流关卡更适合注重细节、较复杂的小型区域。 不建议在永久关卡中... -
UE4静态/动态加载资源方式
2020-10-19 17:54:49UE4动态/动态加载资源方式 静态加载 ConstructorHelpers::FClassFinder()和FObjectFinder() 动态加载 LoadObject() vs StaticLoadObject()LoadClass()和LoadObject()注意事项 本文将详细介绍使用UE4静态加载和... -
ligertoolbar 动态加载按钮_UE4资源加载的几种方式
2020-12-03 22:46:16一、直接属性引用通过在头文件中定义变量指针,并将其...不过这种方式似乎是不能动态控制,就是说点击Play按钮就全部会默认都加载。/** construction start sound stinger */ UPROPERTY(EditDefaultsOnly, Catego... -
(UE4) 动态加载DLL
2015-04-04 17:01:00目前还没有实现,实在搞不懂为什么,大概代码如下: //-------------------------------------------------------------------------------------- FString filePath = FPaths::Combine(*FPaths::GameDir(), ... -
【UE4】C++实现动态加载资源,静态加载资源
2018-05-01 14:06:16C++实现动态加载的问题http://aigo.iteye.com/blog/2268056C++实现动态加载http://aigo.iteye.com/blog/2281373UE4中资源加载资源的方式http://gad.qq.com/article/detail/41256 -
关于UE4动态资源加载(蓝图类)
2016-04-21 11:12:151.调试环境下进行的资源加载方式到打包出来后不一定能够使用。 2.假如遇到调试模式下程序运行正常,但是打包出来后程序crash,可以查看log: Saved/Logs/filename/log 3.资源路径的代码书写格式 map : "Game/... -
UE4在C++中动态加载资源
2017-08-29 16:40:10动态加载UObject和动态加载UClass分别用LoadObject(),和LoadClass() ,两者均在在UObjectGlobals.h中。 另外注意:LoadClass的模版名称,不能直接写UBlueprint,例如:LoadClass是错误的,创建蓝图时选择... -
UE4 如何做动态加载资源?
2018-12-31 22:57:35摘自:http://www.v5xy.com/?p=558(有空看下这个人的博客) .h文件 using namespace UF; UCLASS() class UDynamicLoadObjectLibrary : public UBlueprintFunctionLibrary ... UFUNCTION(Blue... -
UE4动态获得资源路径并进行加载
2019-11-22 14:31:03//根据资源获得他的path FName AMyActor::GetObjPath(const UObject* Obj) { if (!Obj) return NAME_None; FStringAssetReference ObjPath = FStringAssetReference(Obj); FString str = Obj->... -
UE4虚幻 动态加载界面weight 一个界面weight中可动态加载多条一样的weight(Item)
2018-02-01 15:38:201)在工程中新建一个一个文件夹weight(存放weight),鼠标右键---User Interface---weight Blueprint,创建好俩个UI界面,Create(主界面),UMG(放在主界面中item界面) 2)需要给地图上蓝图设置地图一运行就执行... -
[UE4]C++实现动态加载的问题
2017-03-31 18:09:51动态加载UObject和动态加载UClass分别用LoadObject(),和LoadClass() ,两者均在在UObjectGlobals.h中。 另外注意:LoadClass的模版名称,不能直接写UBlueprint,例如:LoadClass是错误的,创建蓝图时选择... -
ue4 加载材质_UE4 大世界场景中的动态物体管理方式
2020-12-08 07:49:18),今天刚好有点空闲时间,加上最近一段时间踩了 LevelStreaming 的坑,所以打算总结一下自己之前搞的一套大世界场景下动态物体的管理方式,顺带过一下动态物体的同步方式。游戏中的动态物体 游戏中一般会有各种... -
UE4 静态加载(C++)
2018-12-11 16:58:36静态加载 LoadClass<T>(): LoadClass<...动态加载与静态加载的区别: LoadObject<T>()用来加载非蓝图资源,比如动画、贴图、音效等资源; LoadClass&l... -
[UE4]C++实现动态加载UObject:StaticLoadObject();以Texture和Material为例
2019-09-09 21:56:36[UE4]C++实现动态加载UObject:StaticLoadObject();以Texture和Material为例 相关内容: C++实现动态加载的问题:LoadClass()和LoadObject() http://aigo.iteye.com/blog/2281558 C++静态加载问题:... -
UE4中动态创建并加载流关卡
2017-01-13 14:45:10在运行时将指定的.umap关卡文件以流关卡形式加载并显示出来,主要实现代码如下 关卡在Content中的路径 为 Content/TempUmap/Level_01 那么生成的PackageName就应为 Game/TempUmap/Level_01 把以下代码添加到...
收藏数
72
精华内容
28
-
页码的制作
-
Java星选一卡通
-
信息学奥赛一本通 1985:【19CSPJ普及组】加工零件
-
Driver Signature Enforcement Overrider-桌面系统工具类资源
-
321同济大学数学系《工程数学—线性代数》(第6版)笔记和课后习题(含考研真题)详解.pdf
-
2021年408考试真题 下载 PDF打印
-
转行做IT-第5章 流程控制语句
-
前端性能优化
-
RPC 用着好好的?为什么还需要使用 MQ?
-
API代理版自动发卡平台源码V4.5.6.zip
-
关于如何对Array对象使用动态属性名称
-
华为Magic(HI3650V100方案)维修图PCB位置图(PDF格式)
-
C#文件传输、Socket通信、大文件断点续传
-
jdk-8u161-linux-x64.zip
-
送给备战金三银四的码农,BAT三家大厂43道面试总结
-
matlab产生正弦波及.mif文件的程序-其它文档类资源
-
云计算基础-Linux系统管理员
-
react:仿BOSS直聘写的一个移动端招聘APP
-
2021全网最详细【WEB前端】从零入门实战教程,全课程119节
-
WPF上位机数据采集与监控系统零基础实战