ConstructObjectFromClass节点可以在蓝图中创建一个对象(NewObject)并能很方便的初始化一些ExposedOnSpawn的属性。而继承UBlueprintAsyncActionBase则可以创建新的异步节点,但创建时可以传入的参数是固定的。于是想着创建一个结合两个节点优点于一体的新节点,既具备成员变量初始化又支持异步回调,也就是UK2Node_ConstructAsyncActionFromClass。
UK2Node_ConstructAsyncActionFromClass继承自UK2Node_GenericCreateObject,然后融入了UK2Node_BaseAsyncTask中异步回调的功能。这样只需要在蓝图中调整属性的ExposedOnSpawn,就可以动态调整需要初始化的属性而不用改动C++了。一个额外的收获:蓝图中添加的Event
Dispatcher也会自动添加回调引脚(pin)。
目前实现是基于UE4.26,代码可以放在UncookedOnly的模块中。另外需要调整UK2Node_GenericCreateObject、UK2Node_ConstructObjectFromClass
的访问修饰符。