本章包含以下内容
- 生成一个UCLASS
- 创建一个基于自定义类UCLASS的蓝图类
- 使用ClassViewer来筛选C++类
- 在蓝图中访问UPROPERTY
- 具体说明一个作为UPROPERTY的UCLASS
- 将UCLASS指定为UPROPERTY的类型
- C++实例化UObject
- 销毁UObject类
- 创建结构体
- 创建枚举类型
上一章讲述了如何使用UE4的开发工具Visual Studio,本章主要意图是熟悉一下UE4的C++基础代码,为之后的学习打下基础。
一、创建一个UCLASS
首先,创建一个C++类选择Object
创建完成之后等待编译
完成之后编译器会创建相应的文件。
注意:头文件包含时需要注意generated.h必须是最后面包含的
二、创建一个基于自定义类UCLASS的蓝图类
来到编辑器我们右击先前创建的Object发现并不能创建基于此C++类的蓝图
我们回到编译器,按照如下修改,并且编译:
再回到编辑器查看即可看到现在可以进行创建蓝图了
Blueprintable是否添加,直接影响到是否可以将该类型在蓝图中创建变量
三、使用ClassViewer筛选C++类
我们可以使用ClassViewer窗口来进行筛选 筛选出可以进行创建蓝图处理的类。使用这样的方式在项目比较大的时候可以比较方便操作
四、在蓝图中访问UPROPERTY
添加代码
并且编译,这边宏中的EditAnywhere表示可编辑,而BlueprintReadWrite则代表的是蓝图可以访问该变量
创建蓝图并打开可见:
这边对于宏的定义做以下解释:
- EditAnywhere: 任何地方可以编辑。
- EditDefaultsOnly: 只能设置默认值。
- EditInstanceOnly: 实例化的时候设置,也就是在场景中的对象。
- BlueprintReadWrite: 蓝图可读写访问
- BlueprintReadOnly: 蓝图只读
- Category: 在蓝图节点搜索中的一个索引
五、具体说明一个作为UPROPERTY的UCLASS
添加代码:
我们设置以下他的变量值
在关卡蓝图中进行以下操作:
运行结果如下:
这个示例说明,可编辑变量值的默认值,并且在蓝图中可以获取到该变量进行打印
六、将UCLASS指定为UPROPERTY的类型
添加代码:
打开蓝图后,就可以根据需要选择类型了:
七、C++实例化UObject
添加代码:
在GameMode中添加代码:
关卡蓝图中添加代码
运行结果如下:
此为2个C++中实例化Object的方法。
八、销毁UObject类
销毁的方式比较简单,不做详细演示
在外部销毁:
if(NewObject)
{
NewObject->ConditionalBeginDestroy();
NewObject= nullptr;
}
这边插入一个信息:
在BaseEngine.ini中可以设置
TimeBetweenPurgingPendingKillObjects的值,默认情况下61.1秒会自动销毁一个object
GetWorld()->ForceGarbageCollection(true)
可以用来强制清除内存
九、创建结构体
添加代码:
蓝图中创建变量搜索结构体:
十、创建枚举类型
添加代码:
蓝图中创建变量搜索枚举类型: