【UE4_C++】 初步使用UE4 C++类

本章包含以下内容
  • 生成一个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)

可以用来强制清除内存

九、创建结构体

添加代码:
在这里插入图片描述
蓝图中创建变量搜索结构体:
在这里插入图片描述
在这里插入图片描述

十、创建枚举类型

添加代码:
在这里插入图片描述
蓝图中创建变量搜索枚举类型:
在这里插入图片描述
在这里插入图片描述

发布了5 篇原创文章 · 获赞 0 · 访问量 33

猜你喜欢

转载自blog.csdn.net/qq_34261504/article/details/104871015