这个函数没有官方中文名,大家都称之为为蓝图构造函数(Construction Script)。
Construction Script如果直接翻译的话,就是构造脚本,在引擎中作为初始化函数来使用,Actor被生成的一瞬间运行的逻辑,且只运行一次。
Begin Play (事件蓝图)是在游戏运行时运行的逻辑,他可以按时间运行,按次运行
构造函数和Begin Play的区别在于,同样是初始化,但是构造函数是在对象生成的时候就进行的初始化,或者说在类被实例化(创建出新的实例或者对象)时会执行一次,而Begin Play则是在游戏开始时进行的初始化。也就是说构造函数要更加早于Begin Play事件,并且构造函数相比之下更加的灵活,而且甚至可以在游戏运行之前就进行初始化。
蓝图中的构造脚本(Consttruction Script)和C++中类的构造函数不是一个东西!!!以下是C++的不同讲解:
这个蓝图构造函数在C++中实际上是OnConstruction这个函数。这是一个创建于AActor的虚函数,形参表中只有(const FTransform& Transform)这一个参数。可以在自己的类中直接重写这个函数,然后在里面写逻辑即可。
蓝图构造函数不同于C++原生的构造函数的地方在于,C++原生的构造函数仅仅只在被实例化的时候会执行一次,而蓝图构造函数则能在编辑器中被反复调用。
对于蓝图构造函数,当你将类拖放到场景中时,它就被实例化了,这时就会调用一次。而当你拖动物体,旋转物体,缩放物体甚至修改它的参数,对他进行编译时,都会调用这个蓝图构造函数。这样能够反复利用的原理让这个函数有了更广泛的应用空间。
通常使用蓝图构造函数时都是设置物体的大小或者材质的,比如说在某个Actor里为它的StaticMeshComponent设置一个特定的材质,或者创建动态材质,或者为某个actor里它的Material Instance(材质实例)效果切换