精华内容
下载资源
问答
  • ue4动态加载

    2017-08-30 16:56:00
    http://www.cnblogs.com/linqing/p/5008862.html 转载于:https://www.cnblogs.com/chenqiuyihaha/p/7453982.html

    http://www.cnblogs.com/linqing/p/5008862.html

    转载于:https://www.cnblogs.com/chenqiuyihaha/p/7453982.html

    展开全文
  • ue4动态加载资源
  • 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:09
    UE4中可能使用到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:03
    UFUNCTION(BlueprintCallable) void ScanDirectory(TArray<FString>& AllFiles, const FString & FilePath, const FString& Postfix); UFUNCTION(BlueprintCallable) static TArray<...
  • 加载蓝图资源 void ALPCController::GenerateRainEffectBp() { UObject* loadObj = StaticLoadObject(UBlueprint::StaticClass(), NULL, TEXT(&quot;Blueprint'/Game/Camera/PostProcess/Bp/Bp_RainEffect.Bp_...
  • UE4_动态加载

    2019-04-03 13:09:51
    Ue4的世界组件可以实现地图的分段加载以达到不浪费资源的目的,世界组件跟流关卡相比的优点在于,加载大地图、多分段时,世界组件更易于编写和判断,流关卡更适合注重细节、较复杂的小型区域。 不建议在永久关卡中...
  • UE4动态/动态加载资源方式 静态加载 ConstructorHelpers::FClassFinder()和FObjectFinder() 动态加载 LoadObject() vs StaticLoadObject()LoadClass()和LoadObject()注意事项 本文将详细介绍使用UE4静态加载和...
  • 一、直接属性引用通过在头文件中定义变量指针,并将其...不过这种方式似乎是不能动态控制,就是说点击Play按钮就全部会默认都加载。/** construction start sound stinger */ UPROPERTY(EditDefaultsOnly, Catego...
  • (UE4) 动态加载DLL

    2015-04-04 17:01:00
    目前还没有实现,实在搞不懂为什么,大概代码如下: //-------------------------------------------------------------------------------------- FString filePath = FPaths::Combine(*FPaths::GameDir(), ...
  • C++实现动态加载的问题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:15
    1.调试环境下进行的资源加载方式到打包出来后不一定能够使用。 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...
  • //根据资源获得他的path FName AMyActor::GetObjPath(const UObject* Obj) { if (!Obj) return NAME_None; FStringAssetReference ObjPath = FStringAssetReference(Obj); FString str = Obj->...
  • 1)在工程中新建一个一个文件夹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是错误的,创建蓝图时选择...
  • ),今天刚好有点空闲时间,加上最近一段时间踩了 LevelStreaming 的坑,所以打算总结一下自己之前搞的一套大世界场景下动态物体的管理方式,顺带过一下动态物体的同步方式。游戏中的动态物体 游戏中一般会有各种...
  • UE4 静态加载(C++)

    2018-12-11 16:58:36
    静态加载 LoadClass&lt;T&gt;(): LoadClass&lt;...动态加载与静态加载的区别: LoadObject&lt;T&gt;()用来加载非蓝图资源,比如动画、贴图、音效等资源; LoadClass&l...
  • [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 把以下代码添加到...

空空如也

空空如也

1 2 3 4
收藏数 72
精华内容 28
关键字:

ue4动态加载