UEC++ UClass类

一、UClass的定义与功能

UClass是虚幻引擎中实现反射机制的关键部分,它允许引擎在运行时动态地查询和操作类的信息。每个UClass都保留了一个称作“类默认对象(Class Default Object,简称CDO)”的模板对象,这个对象由类的构造函数生成,并且之后不会被修改。UClass和CDO都可以为特定对象实例恢复,但它们通常为只读。

二、UClass的使用

在UE中,使用UCLASS()宏来定义一个类,并为其生成UClass类型信息。这个宏通常放在类声明的开始处,并可以包含一些修饰符和元数据来定义类的特定行为。例如:

 

cpp复制代码

在这个例子中,MyClass是一个继承自UObject的类,UCLASS()宏为其生成了UClass类型信息,而GENERATED_BODY()宏则用于在类体中插入必要的辅助代码。

三、UClass的修饰符与元数据

UCLASS()宏可以接受一些修饰符和元数据来定义类的特定行为。这些修饰符和元数据可以控制类在编辑器中的显示方式、类的序列化行为、类的实例化方式等。例如:

  • abstract:将类声明为抽象基类,防止用户实例化这个类。
  • BlueprintType/NotBlueprintType:将类公开为可用于蓝图中的变量的类型或防止其用于蓝图中的变量。
  • Blueprintable/NotBlueprintable:指定该类是否可以作为创建蓝图的可接受基类。
  • ClassGroup:在Actor浏览器中启用Group View后,将类及其任何子类包含在指定的组中。
  • HideCategories/ShowCategories:隐藏或显示类在虚幻编辑器属性窗口中的特定类别。

此外,还可以使用元数据(meta)来定义更复杂的类行为。元数据以键值对的形式指定,例如:

UCLASS()  
class MyClass : public UObject  
{  
    GENERATED_BODY()  
    // 类的成员变量和函数  
};

这将为类指定一个在编辑器中显示的友好名称。

四、UClass与蓝图系统的交互

在UE的蓝图系统中,UClass扮演着重要角色。蓝图系统允许设计师通过可视化界面创建和编辑游戏逻辑,而不需要编写代码。UClass为蓝图系统提供了类的类型信息,使得蓝图可以识别和操作不同类型的对象。例如,在蓝图中创建一个新的对象时,需要指定该对象的类类型(即UClass),以便蓝图系统知道如何创建和初始化该对象。

UClass*将返回指向指定类的类引用类型,而UObject*是指向指定类的对象引用类型

五、UClass的反射机制

UE的反射机制允许在运行时动态地查询和操作类的信息。这是通过UClass实现的。通过UClass,可以获取类的名称、属性、方法等信息,并可以动态地创建类的实例、调用类的方法等。这种反射机制为UE提供了极大的灵活性和可扩展性,使得开发者可以在不修改源代码的情况下添加新的游戏逻辑和功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值