转自:http://aigo.iteye.com/blog/2281558

动态加载UObject和动态加载UClass分别用LoadObject<T>(),和LoadClass<T>() ,两者均在在UObjectGlobals.h中。

另外注意:LoadClass<T>的模版名称,不能直接写UBlueprint,例如:LoadClass<UBlueprint>是错误的,创建蓝图时选择的是什么父类,则写对应的父类名,假如是Actor,那么要写成:LoadClass<AActor>,否则无法加载成功。

路径名也必须带_C后缀(LoadObject不需要带_C后缀),例如,蓝图路径是:Blueprint'/Game/Blueprints/MyBP.MyBP'

加后缀以后,则是:Blueprint'/Game/Blueprints/MyBP.MyBP_C',

例子:

UClass* Test = LoadClass<AActor>(NULL, TEXT("Blueprint'/Game/Blueprints/MapPathBrush_BP.MapPathBrush_BP_C'"));  

官方还没出文档,只能先看代码注释:

// Load an object.
template< class T >
inline T* LoadObject( UObject* Outer, const TCHAR* Name, const TCHAR* Filename=nullptr, uint32 LoadFlags=LOAD_None, UPackageMap* Sandbox=nullptr )
{
return (T*)StaticLoadObject( T::StaticClass(), Outer, Name, Filename, LoadFlags, Sandbox );
}
// Load a class object.
template< class T >
inline UClass* LoadClass( UObject* Outer, const TCHAR* Name, const TCHAR* Filename=nullptr, uint32 LoadFlags=LOAD_None, UPackageMap* Sandbox=nullptr )
{
return StaticLoadClass( T::StaticClass(), Outer, Name, Filename, LoadFlags, Sandbox );
}
/**
* Find or load an object by string name with optional outer and filename specifications.
* These are optional because the InName can contain all of the necessary information.
*
* @param ObjectClass The class (or a superclass) of the object to be loaded.
* @param InOuter An optional object to narrow where to find/load the object from
* @param InName String name of the object. If it's not fully qualified, InOuter and/or Filename will be needed
* @param Filename An optional file to load from (or find in the file's package object)
* @param LoadFlags Flags controlling how to handle loading from disk
* @param Sandbox A list of packages to restrict the search for the object
* @param bAllowObjectReconciliation Whether to allow the object to be found via FindObject in the case of seek free loading
*
* @return The object that was loaded or found. NULL for a failure.
*/
COREUOBJECT_API UObject* StaticLoadObject( UClass* Class, UObject* InOuter, const TCHAR* Name, const TCHAR* Filename = NULL, uint32 LoadFlags = LOAD_None, UPackageMap* Sandbox = NULL, bool bAllowObjectReconciliation = true );
COREUOBJECT_API UClass* StaticLoadClass(UClass* BaseClass, UObject* InOuter, const TCHAR* Name, const TCHAR* Filename = NULL, uint32 LoadFlags = LOAD_None, UPackageMap* Sandbox = NULL);

 LoadObject加载例子,不需要添加后缀:

可以用LoadObject加载的文件包括:

Texture、Material、SoundWave、SoundCue、ParticlesSystem、AnimMontage、BlendSpace(1D,2D,3D)、AnimSequence、AnimBlueprint、SkeletalMesh等等。这些文件的父类都是UObject,所以也可以先加载为UObject*然后再强转为具体的类型,例如:

[UE4]C++实现动态加载的问题:LoadClass<T>()和LoadObject<T>() 及 静态加载问题:ConstructorHelpers::FClassFinder()和FObjectFinder()的更多相关文章

  1. [UE4]C++静态加载问题:ConstructorHelpers::FClassFinder()和FObjectFinder()

    http://aigo.iteye.com/blog/2281373 原文作者:@玄冬Wong 相关内容: C++实现动态加载的问题:LoadClass<T>()和LoadObject&l ...

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

    相关内容: C++实现动态加载的问题:LoadClass<T>()和LoadObject<T>() http://aigo.iteye.com/blog/2281558C++静 ...

  3. [UE4]C++实现动态加载的问题:LoadClass()和LoadObject()

    http://aigo.iteye.com/blog/2281558 原文作者:@玄冬Wong 相关内容:C++静态加载问题:ConstructorHelpers::FClassFinder()和FO ...

  4. 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间

    [源码下载] 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间 作者:webabcd 介绍速战速决 之 PHP 动态地创 ...

  5. JAVA类的静态加载和动态加载以及NoClassDefFoundError和ClassNotFoundException

    我们都知道Java初始化一个类的时候可以用new 操作符来初始化, 也可通过Class.forName()的方式来得到一个Class类型的实例,然后通过这个Class类型的实例的newInstance ...

  6. java动态加载类和静态加载类笔记

    JAVA中的静态加载类是编译时刻加载类  动态加载类指的是运行时刻加载类 二者有什么区别呢 举一个例子  现在我创建了一个类  实现的功能假设为通过传入的参数调用具体的类和方法 class offic ...

  7. Delphi静态加载DLL和动态加载DLL示例

    下面以Delphi调用触摸屏动态库xtkutility.dll为例子,说明如何静态加载DLL和动态加载DLL. 直接上代码. 1.静态加载示例 unit Unit1; interface uses W ...

  8. vc静态加载dll和动态加载dll

    如果你有a.dll和a.lib,两个文件都有的话可以用静态加载的方式: message函数的声明你应该知道吧,把它的声明和下面的语句写到一个头文件中 #pragma comment(lib, &quo ...

  9. 动态库DLL加载方式-静态加载和动态加载

    静态加载: 如果你有a.dll和a.lib,两个文件都有的话可以用静态加载的方式: message函数的声明你应该知道吧,把它的声明和下面的语句写到一个头文件中 #pragma comment(lib ...

随机推荐

  1. js中获取当前url参数值的一个方法

    var $_GET = (function(){             var url = window.document.location.href.toString();//获得当前url地址并 ...

  2. python Console menu

    I just finished a demo which is to provide an easy way to control hardware resources of A sample. Th ...

  3. 昨天办了一张地铁卡,我想到一个app

    如果成都开通 扫 二维码 做地铁.地铁是距离收费的,如果我们有一个平台,搜集所有用户的 入站 和出站二维码,然后重新分配,那么每个用户就只用 出 2块钱每次的最低消费了.哈哈............. ...

  4. php保留两位小数的3种方法

    <?php $num = 8.16789; //第一种:利用round()对浮点数进行四舍五入 echo round($num,2).PHP_EOL; //8.17 //第二种:利用sprint ...

  5. java项目发布

    一.使用eclipse把项目以war格式导出 二.把war文件放在tomcat的webapps中 三.在tomcat的conf文件夹里的server.xml进行配置: 在<Host>< ...

  6. ajaxFileupload 多文件上传

    ajaxFileupload 多文件上传 修改前的代码: var oldElement = jQuery('#' + fileElementId); var newElement = jQuery(o ...

  7. RedHat7.3创建本地yum源

    [root@master ~]# mkdir -p /var/www/html 使用安装系统的ISO镜像文件rhel-server-7.3-x86_64-dvd.iso 把rhel-server-7. ...

  8. 通过IOCTL_ATA_PASS_THROUGH访问ATA设备接口

    控制代码功能:像ATA硬盘发送ATA指令.IDE/ATA:接口,一个串行,一个并行,一般叫做IDE接口的硬盘和ATA接口的硬盘.ATA指令:可以操作ATA硬盘的指令. typedef struct _ ...

  9. 批处理手动设置电脑的ip

    参考: http://blog.csdn.net/jiangzhanchang/article/details/7063152 http://wenda.haosou.com/q/1378697364 ...

  10. WPF Demo20 模板

    <Window x:Class="控件模板.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/x ...