[UE4]创建对象的的几种姿势(C++)
DEMO源代码
这个DEMO演示了在C++代码中,创建UE4的常见类型的对象,包括Actor,ActorComponent,加载资源等。
源代码请从这里下载:https://code.csdn.net/neil3d/unrealcookbook
使用的引擎版本为:4.11.2
打开项目后,启动“CreateObjectDemo/CreateObjectDemoMap.umap”地图文件便可运行。
创建组件
/* <CreateObjectDemo> * 创建Component对象,要使用CreateDefaultSubobject模板函数 */
MyComponent = CreateDefaultSubobject<UMyActorComponent>(TEXT("MyComponent"));
加载资源对象
/* <CreateObjectDemo> * 加载模型、贴图等对象,使用StaticLoadObject函数 */
UStaticMesh* SM_Vase = Cast<UStaticMesh>(StaticLoadObject(UStaticMesh::StaticClass(), NULL, TEXT("/Game/Assets/StaticMeshes/SM_Vase")) );
StaticMeshComponent = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("StaticMeshComponent"));
StaticMeshComponent->SetStaticMesh(SM_Vase);
创建Actor对象
/* <CreateObjectDemo> * 创建AActor派生类对象不要用NewObject或new,而要用UWorld::SpawnActor() */
UWorld* World = GetWorld(); FVector pos(, , );
AMyActor* MyActor = World->SpawnActor<AMyActor>(pos, FRotator::ZeroRotator);
创建UObject对象
/* <CreateObjectDemo> * 使用NewObject模板函数,来创建UObject派生类对象 */
MyObject = NewObject<UMyObject>();
1.CreateDefaultSubobject必须写在Actor的无参构造函数中,否则crash;
2.CreateDefaultSubobject中的TEXT或者FName参数在同一个Actor中不能重复,否则crash;
UE4不推荐try catch,并且默认是不支持的,UE4推荐Assertions。
https://answers.unrealengine.com/questions/264921/cannot-use-try-with-exceptions-disabled.html
https://docs.unrealengine.com/latest/INT/Programming/Assertions/index.html
int i=+;
verify(i==);
上面是verify的简单用法,运行后会直接crash,就是这么高冷。听说还可以用
UE_LOG(Fatal, ...);
来打断执行。
https://community.gamedev.tv/t/try-catch-not-preventing-crashing/8481/6
使用actorObject->IsA,不为actorObject带上UPROPERTY()也会crash..
[UE4]创建对象的的几种姿势(C++)的更多相关文章
- 快速了解IOC的几种姿势
一.首先我们了解IOC如何注入的几种姿势 构造函数注入(Constructor Injection) Ioc容器会智能的选择和调用合适的构造函数以创建依赖的对象.如果被选择的构造函数具有相应的参数,I ...
- 两个文件去重的N种姿势
最近利用shell帮公司优化挖掘关键词的流程,用shell替代了多个环节的操作,极大提高了工作效率. shell在文本处理上确有极大优势,比如多文本合并.去重等,但是最近遇到了一个难搞的问题,即两个大 ...
- 又拍云张聪:OpenResty 动态流控的几种姿势
2019 年 1 月 12 日,由又拍云.OpenResty 中国社区主办的 OpenResty × Open Talk 全国巡回沙龙·深圳站圆满结束,又拍云首席架构师张聪在活动上做了< Ope ...
- 补习系列(7)-springboot 实现拦截的五种姿势
目录 简介 姿势一.使用 Filter 接口 1. 注册 FilterRegistrationBean 2. @WebFilter 注解 姿势二.HanlderInterceptor 姿势三.@Exc ...
- python打开文件的N种姿势
# python打开文件的N种姿势 print('[1]使用open()函数+简单for循环') f1 = open('python.txt') for line in f1: print(line. ...
- [转]地图投影的N种姿势
此处直接给出原文链接: 1.地图投影的N种姿势 2.GIS理论(墨卡托投影.地理坐标系.地面分辨率.地图比例尺.Bing Maps Tile System)
- 【bzoj3224】Tyvj 1728 普通平衡树 01Trie姿势+平衡树的四种姿势 :splay,旋转Treap,非旋转Treap,替罪羊树
直接上代码 正所谓 人傻自带大常数 平衡树的几种姿势: AVL Red&Black_Tree 码量爆炸,不常用:SBT 出于各种原因,不常用. 常用: Treap 旋转 基于旋转操作和随机数 ...
- SpringBoot系列教程web篇Servlet 注册的四种姿势
原文: 191122-SpringBoot系列教程web篇Servlet 注册的四种姿势 前面介绍了 java web 三要素中 filter 的使用指南与常见的易错事项,接下来我们来看一下 Serv ...
- python HelloWorld 的 4 种姿势,你知道几种
安装完 Python 之后该干啥,当然是要 say HelloWorld 了. python.exe 就是个普通程序 和其它所有命令一样,在命令行中敲下 python 并回车的时候,操作系统去 PAT ...
随机推荐
- 特征选择: 卡方检验、F 检验和互信息
特征选择是特征工程中的重要一环,其主要目的是从所有特征中选出相关特征 (relevant feature),或者说在不引起重要信息丢失的前提下去除掉无关特征 (irrelevant feature) ...
- iOS 开发 Framework
制作Framework 的好处和缺点 好处: 1.如果模块间接口定义的比较完善,模块化的程序具有很好的可扩展性与内聚性: 2.物理上的模块化便于开发过程的管理与测试,尤其是在程 ...
- ubuntu12.04 alternate win7 双系统安装
ubuntu alternate的安装比desktop复杂一点,因为alternate的安装过程有个步骤是检测cd-rom,如果你是刻盘安装,自然没问题,但是,现在的安装一般是将系统刻到U盘里,或者在 ...
- python学习之-软件开发的目录规范
通常软件目录下有几个标准文件夹 软件主文件夹命名,通常都是大写(ATM_SHOPPING) ------------------------------------------------------ ...
- Win7不能用鼠标双击运行jar文件怎么办?
Java应用程序jar文件可以由 JVM(Java虚拟机)直接执行,只要操作系统安装了JVM便可以运行作为Java应用程序的jar文件,其跨平台特性使得很多工具软件都用jar方式来部署分发,比如用于H ...
- Django中提供了6种缓存方式
开发调试 内存 文件 数据库 Memcache缓存(python-memcached模块) Memcache缓存(pylibmc模块) 1. 开发调试 1 2 3 4 5 6 7 8 9 10 11 ...
- 开源泛域名服务xip.io部署试用
xip.io 是一个很方便的泛域名服务,类似的有一个xip.name 的开源实现 下载 go get github.com/peterhellberg/xip.name 启动 二进制包在GOPATH/ ...
- 【转】linux下解压.bz2压缩文件
原文网址:http://zhidao.baidu.com/question/90378903.html tar-c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压 ...
- oracle之 redo过高诊断
一.诊断过度redo 要找到生成大量重做的会话,您可以使用以下任何一种方法.这两种方法都检查生成的撤销量.当一个事务生成撤销,它将自动生成重做. 当需要检查生成大量的程序时,使用第一个查询.当这些程序 ...
- POJ2279杨氏矩阵+钩子定理
题目:http://poj.org/problem?id=2279 有dp做法,但会MLE. dp的思想很好,是通过 “按身高由小到大往进放” 把 “身高小于” 的条件转化成 “放进去的先后” ,于是 ...