原文作者:@玄冬Wong
相关内容:
C++静态加载问题:ConstructorHelpers::FClassFinder()和FObjectFinder()
http://aigo.iteye.com/blog/2281373
C++实现动态加载UObject:StaticLoadObject();以Texture和Material为例
http://aigo.iteye.com/blog/2268056
动态加载UObject和动态加载UClass分别用LoadObject<T>(),和LoadClass<T>() ,两者均在在UObjectGlobals.h中。
区别:
LoadObject<T>()用来加载非蓝图资源,比如动画、贴图、音效等资源;
LoadClass<T>()用来加载蓝图并获取蓝图Class,比如角色蓝图。如果要用蓝图创建对象,必须先通过LoadClass获取class,然后再通过SpawnActor生成对象。
LoadClass参数注意事项:
另外注意: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加载例子,不需要添加后缀:
UTexture2D* Tex = LoadObject<UTexture2D>(NULL, TEXT("Texture2D'/Game/Textures/UI/tex_test001.tex_test001'"));
可以用LoadObject加载的文件包括:
Texture、Material、SoundWave、SoundCue、ParticlesSystem、AnimMontage、BlendSpace(1D,2D,3D)、AnimSequence、AnimBlueprint、SkeletalMesh等等。这些文件的父类都是UObject,所以也可以先加载为UObject*然后再强转为具体的类型,例如:
UObject* Obj = LoadObject<UObject>(NULL, TEXT("SkeletalMesh'/Game/MyMesh.MyMesh'"));
USkeletalMesh* MyMesh = Cast<USkeletalMesh*>(Obj);
另外有两个全局函数叫:StaticLoadObject()和StaticLoadClass(),应该是LoadObject<T>()和LoadClass<T>()的早期版本,前者需要手动强转,后者使用模版封装过,使用更方便,推荐使用后者
LoadClass除了可以加载蓝图,还可以加载UObject类型的native class:
UClass* Test = LoadClass<AActor>(NULL, TEXT("Class'/Script/MyProj.MyProjCharacter'"));
分享到:
相关推荐
实现了通过蓝图把场景中的AStaticMeshActor和两个动态材质实例UMaterialInstanceDynamic 传给c++ 自定义函数参数。 并在自定义函数里面实现两张材质的动态交替变更,其中一张材质还动态加载了本地1.png图片,使得能...
<CR><LF>M5310-A<CR><LF>OK<CR><LF> After this string has been received the AT Command processor is ready to accept AT commands. If the Applications core was rebooted or restarted for any reason that ...
<div class=wrap> <ul class=list> <li><a>UI设计师</a> <div class=show> <p>所属部门:技术部</p> <p>工作地点:郑州</p> <p>招聘人数:21</p> </div> </li> <li><a>前端开发工程师</a> <div class=show> <p>所属...
<CR><LF>FIRMWARE DOWNLOADING<CR><LF> Indicates UE is downloading update package. <CR><LF>FIRMWARE DOWNLOAD FAILED<CR><LF> Indicates download failed. <CR><LF>FIRMWARE DOWNLOADED<CR><LF> Indicates ...
在vue的实际开发过程中,我们如何将以选中的值直接渲染到页面中,这次主要说的是多选框和下拉列表的实现: <label>测试多选渲染:</label> <div> <template v-for=item> <input type=checkbox name=hobby :...
html代码如下: 代码如下: <div class=”wrap”> <ul class=”list> <li><a>UI设计师</a> <div class=”show”> <p>所属部门:技术部</p> <p>工作地点:郑州</p> <p>招聘人数:21</p> </div> </li> <li><a>前端开发...
发一个小工具软件 用于对付大量机械操作, 完全绿色版本 免安装直接运行<br><br>当大家进行大批量查询 比如:<br><br>SELECT * FROM TABLE <br>WHERE 字段A in<br>(<br>......................................<br>)...
<el click.once=submitOrder()>提交订单</el> </div> </template> 方法: methods: { submitOrder() { // 处理逻辑 } } 2、使用原生JS事件 在数据data里面声明一个flag属性 data() { return { isSubmit: ...
上周新接手一个网站建设的活儿,其中有需要要jquery代码...<div class=navMenu> <ul> <li><a>首页</a> <ul> <li><a>JavaScript+</a> <ul> <li><a>三角函数</a></li> <li><a>矩形</a></li> </ul> </li> <li><a>语文</a>
ue4动态加载资源
UE4加载本地图片
UE4 C++教程 虚幻四C++教程
UE4 C++ 离线API 下载直接使用 无障碍
<br/> 如果有需要请联<br/>联系人:董先生 <br/>电话:0755-81478136 传真:0755-81478136 <br/>移动电话:13928444113 <深圳> QQ:47270333<br/>E-mail:zhihui28@yahoo.com.cn <br/>Http: www.zhihui.ue.cn
std::stack<int>> third; //使用vector初始化stack ### stack常用方法### empty();//判断是否为空 push(Elem e);//栈顶压入一元素 pop();//弹出栈顶元素 top();//返回栈顶元素 size();//返回栈中元素个数
本文实例为大家分享了vue实现商城购物车功能的具体代码,供大家参考,具体内容如下 首先,先上最终的效果图 效果并不是很好看,但是这不是重点。 首先,我们先看下布局: <template> <div class=shopcar id=demo...
毕业设计基于C++的一款UE4射击游戏源码。一款UE4射击游戏Demo,包含UE4游戏框架及整套联网射击游戏功能。一款UE4射击游戏Demo,包含UE4游戏框架及整套联网射击游戏功能。一款UE4射击游戏Demo,包含UE4游戏框架及整套...
百度百科约500万条词条,可用于语义关联或简单的知识网络建立,xml格式,解压后638M,请不要用记事本直接打开,我是用UE打开的,sublime好像会有乱码,文件内容示例如下: <REC> <ID>=1 <TITLE>=百度百科 ...