`
aigo
  • 浏览: 2644844 次
  • 性别: Icon_minigender_1
  • 来自: 宜昌
社区版块
存档分类
最新评论

[UE4]C++实现动态加载UObject:StaticLoadObject();以Texture和Material为例

UE4 
阅读更多

相关内容:

C++实现动态加载的问题:LoadClass<T>()和LoadObject<T>()

http://aigo.iteye.com/blog/2281558
C++静态加载问题:ConstructorHelpers::FClassFinder()和FObjectFinder() 

http://aigo.iteye.com/blog/2281373

 

示例1:

动态加载Object的工具方法

 UTexture2D* MyTextureLoader::LoadTextureFromPath(const FString& Path)
 {
     if (Path.IsEmpty()) return NULL;
 
     return Cast<UTexture2D>(StaticLoadObject(UTexture2D::StaticClass(), NULL, *(Path)));
 }
 
调用:
 FString PathToLoad = "/Game/Textures/YourStructureHere";
 UTexture2D* tmpTexture = LoadTextureFromPath(PathToLoad);
 

 

 

示例2:
加载MaterialTexture

struct FConstructorStatics
 {
     ConstructorHelpers::FObjectFinderOptional<UTexture> TextureFinder;
     ConstructorHelpers::FObjectFinderOptional<UMaterial> MaterialFinder;
     FConstructorStatics()
         : TextureFinder(TEXT("Texture2D'/Game/Textures/2DBackground.2DBackground'"))
         , MaterialFinder(TEXT("Material'/Game/Materials/DynamicTextureMaterial.DynamicTextureMaterial'"))
     {
     }
 };
 static FConstructorStatics ConstructorStatics;
 
 Texture = ConstructorStatics.TextureFinder.Get();
 UMaterial* Material = ConstructorStatics.MaterialFinder.Get();
 DynamicMaterial = UMaterialInstanceDynamic::Create(Material, this);
 

设置调用加载好的Material和Texture:

DynamicMaterial->SetTextureParameterValue(FName("DynamicTexture"), Texture);
Mesh->SetMaterial(0, DynamicMaterial);
 
 

如果资源永不再使用,想销毁资源对象,代码如下:

Texture2D* mytex; //这里假设mytex合法有效

mytex->ConditionalBeginDestroy();
mytex = NULL;
GetWorld()->ForceGarbageCollection(true);

  

 

Dynamic Asset Loading with C++

https://www.youtube.com/watch?v=pJIAmSGxfmQ

 

Dynamic Load Object

https://wiki.unrealengine.com/Dynamic_Load_Object

分享到:
评论

相关推荐

    UE4插件模板Q

    UE4,全称为Unreal Engine 4,是由Epic Games开发的一款强大且广泛应用于游戏开发、影视制作、虚拟现实等领域的实时3D引擎。它的插件系统是其灵活性和可扩展性的重要体现,允许开发者根据需求自定义功能,增强引擎...

    UE4简介学习攻略 UE4 Demo代码 面试内容

    自2012年首次展示以来,UE4经过不断的发展和完善,已经成为游戏开发、虚拟现实(VR)和增强现实(AR)应用程序,以及影视制作、建筑可视化、虚拟培训等领域的佼佼者。它提供了丰富的功能和工具,包括场景编辑器、...

    UE基础面试,比较难回答的问题\字符串\代理\容器等

    - **BlueprintNativeEvent**:C++实现默认功能,蓝图重写后调用蓝图的功能。 - **BlueprintCallable**:允许蓝图调用。 #### 十一、日志调试技术 **11.1 日志调试** 在UE中,调试日志主要用于追踪代码执行情况,...

    DataAccessUE4:用于保存 UObject 的虚幻引擎的数据访问模块

    旨在与 SQLite 一起使用,但如果接口实现正确,则可以进行修改以支持各种其他数据库。 概述 在使用 Unreal 时,我希望能够将 UObjects 保存到本地数据库 sqlite,但我不想每次创建新对象时都必须编写自定义代码。 ...

    UE4-CheatSheet:用于虚幻引擎4 C ++编程的备忘单,根据CC BY-NC-SA 4.0许可

    C++与UE4的集成主要通过宏和插件实现。例如,你可以使用`DECLARE_DYNAMIC_MULTICAST_DELEGATE`声明一个可广播的多播委托,用于事件处理。UE4的宏系统简化了诸如属性注册、事件绑定等任务。同时,通过创建插件,你...

    Building_Escape:一个简单的UE4游戏

    在游戏开发的世界中,Unreal Engine 4(简称UE4)以其强大的图形渲染能力、高效的物理引擎和丰富的资源库,成为了众多开发者首选的游戏引擎。本篇文章将深入探讨“Building_Escape”项目,这是一个基于UE4的简单逃生...

    ue4-log-macros:具有有用宏的单个头文件,用于登录虚幻引擎4项目

    ue4-log-宏带有有用宏的单个头文件,用于登录虚幻引擎4项目。 这些宏扩展了标准UE_LOG宏的用法。 带有_PRINTF后缀的宏可以具有格式化文本(请参见示例),而不能仅包含const字符串。 用法示例: # pragma once# ...

    kitelightning.github.io:风筝和闪电的UE4,图形和Gamedev开源软件库

    风筝和闪电的开源UE4存储库 ... 完全访问UE4的反射层(UObject,UFunction和蓝图) 广泛支持Python中的本机Slate小部件和UMG 支持编辑器扩展(自定义视口,工具栏按钮,自定义上下文菜单) 自动化:创建自定

    GamePlay架构之Actor和Component.docx

    UE4建议避免在Component中实现复杂的游戏逻辑,而是将其保留在Actor或者单独的系统中,以保持代码清晰和模块化。 在UE4中,Actor的父子关系不是直接通过Actor本身来设定的,而是通过Component的AttachToActor或...

    RuntimeBPs:该项目允许在UE4中使用类似于Visual Studio蓝图的可视化脚本,但是在运行时。 设置方式不使用任何UE4样板,并且可以进行一些调整以在其他引擎中使用

    设置方法不使用任何UE4样板,并且可以进行一些调整以在其他引擎中使用。 当前引擎版本是4.25它是如何工作的? 我试图为最终用户尽可能接近地复制UE4的蓝图编辑器。 因此,对于最终用户而言,如果他们以前使用过UE4...

    Unreal Engine V4.6 源码.zip

    虚幻引擎(Unreal Engine,简称UE)是Epic Games公司开发的一款强大的游戏开发引擎,以其高度的灵活性、丰富的图形渲染能力和高效的性能而备受赞誉。Unreal Engine 4.6是该引擎的一个早期版本,虽然不是最新的,但其...

    PuzzleDungeon:我的Unreal Engine 4项目中使用的C ++代码

    3. **C++类和继承**:在UE4中,游戏对象通常以C++类的形式存在,这些类可能继承自UE4的基类,如`AActor`或`UObject`。通过继承,可以创建具有特定功能的游戏实体,如玩家角色、敌人、物品等,并且可以添加新的成员...

    Bluelua:轻量级的ue4 lua框架

    适用于UE4的Bluelua 用Lua替换蓝图,使其与蓝图保持一致,然后无缝切换。 通过反射访问UObject的属性和方法,而无需生成胶合代码,更加简单,易于扩展。 现在支持Android,iOS,Mac,Windows,Linux。 二手开源库 ...

    UAssetParser:解析UObject资产文件,主要用于数据表

    解析UObject资产文件的过程涉及到一系列复杂的操作,包括读取文件头信息、理解资产的元数据、解码数据块以及将解析后的数据转换为可用的游戏对象。UAssetParser的核心功能就是处理这些步骤,使得开发者能够高效地...

    UMI.CMS调试工具「UMI.CMS Debugging Tool」-crx插件

    - 从UMI解析XML,将XML节点的属性(如页面,对象标识符,@link)直接转换为链接以进行升级://,uobject://等元素链接以蓝色和黑体字体突出显示。在showStreamsCalls中,每个呼叫也被转换成一个链接。 - 能够处理...

    UE4CPPInventory

    在UE4(Unreal Engine 4)中,C++是一种常用的语言来开发游戏逻辑和系统,包括库存系统。"UE4CPPInventory"项目...通过理解和实现这些概念,开发者可以构建出一个功能完善的库存系统,以支持玩家在游戏中与物品的交互。

    UMI.CMS Debugging Tool-crx插件

    工具,以促进umi.cms上的开发和调试站点的开发和调试网站 扩展促进UMI.cm上的站点的开发和调试。 - 自动确定和显示常用调试资源的链接,例如.xml ,? showstreamscalls,uobject://,Upage://,Udata://等。 - 在...

    UnrealEngine4-SwissKnife:为Unreal Engine4设计的可逆工具,用于调试对象JIT

    UnrealEngine4-SwissKnife 为Unreal Engine4设计的可逆工具,用于调试对象JIT 该项目使您可以检查GEngine World的Actors数组下的所有UObject。 它应该可以轻松地用于许多UE4游戏,而对于其他游戏,您可以随时对其...

    USharp:虚幻引擎4的C#插件

    该项目适用于mono-ue 各个部分,大致相似,但支持Mono,.NET Framework和.NET Core。 使用的C ++代码主要是PInvoke方法,等效的单ue后端代码。 该项目目前不适用于大多数用例。 有很多错误并且缺少功能。 加入...

    自制虚幻引擎QTE系统源码.zip

    1. **UObject**:虚幻引擎的基础对象,用于表示游戏中的所有可序列化数据和可动态调用的方法。QTE系统的源码可能会定义一系列继承自`UObject`的类,如`UQTEManager`,用于管理QTE事件的整体流程。 2. **蓝图**:...

Global site tag (gtag.js) - Google Analytics