UE4中的常用宏定义
在UE4中,给我们定义了很多各式各样的宏定义,其中,最常用的就是那些和反射有关的宏,我们知道,C++本身是不支持反射的,于是UE4自身就给我们定义了这些宏,为我们提供反射的功能,常见的宏如下:
UCLASS():
我们在新建一个UE4的C++类的时候,UE4会在这个类的上面添加上一个UCLASS()宏定义,这个宏会让我们的这个类在UE4编辑器中可见,并且可以让这个类继承出蓝图类,由于其父类(Actor)的UCLASS()中已经为我们填好参数,而这个参数是可以继承下来的,所以我们的这个新建的类的宏定义中无需填写任何的参数也可让这个类继承出对应的蓝图类。
其常见的参数如下:
Blueprintable:表示我们这个类可以开放让蓝图进行继承。
NotBlueprintable:表示我们这个类不允许让蓝图进行继承,如果我们不进行指定,则默认值为这个。
UPROPERTY():
如果我们在这个类中新建了一个变量或者组件,而这个变量或者组件我们希望在蓝图或者编辑器场景中可以编辑调用,那么我们就需要在这个变量或者组件的上方声明UPROPERTY()宏,为这个变量或组件添加反射机制,然后填入我们所需要的参数即可。
其常见的参数如下:
EditAnywhere:表示我们这个属性在任何地方都可以被编辑,即使是他的实例,即拖入场景后的那个实例的细节面板上。
EditDefaultsOnly:表示我们这个属性在只在自身可以被编辑,他的实例不能编辑。
EditInstanceOnly:表示我们这个属性蓝图类本身不能编辑,这个属性只能将这个蓝图类拖入场景后在细节面板上找到并编辑。
VisibleAnywhere:表示我们这个属性在其蓝图类任何地方都可以看到,但是我们不能进行编辑。
VisibleDefaultsOnly:表示我们这个属性只在蓝图类自身的细节面板可以看到,同时也不能进行编辑。
VisibleInstanceOnly:表示我们这个属性只在蓝图类拖入场景中生成实例后,在实例的细节面板中可以看到,同时也不能进行编辑。
BlueprintReadWrite:表示我们这个属性在蓝图中可读可写。
BlueprintReadOnly:表示我们这个属性在蓝图中只能读,不能写。
BlueprintWriteOnly:表示我们这个属性在蓝图中只能写,不能读。
UFUNCTION():
同理,如果我们希望开放的是一个方法,而不是一个变量或者组件,那么我们需要在这个函数的声明上面添加这个UFUNCTION()宏定义,然后填入对应的参数即可。
其常见的参数如下:
BlueprintCallable:表示我们这个函数可以开放给蓝图进行调用。