39 lines
1.5 KiB
Markdown
Raw Normal View History

2024-10-12 17:19:46 +08:00
# BlueprintImplementableEvent
- **功能描述:** 指定一个函数调用点,可以在蓝图中重载实现。
- **元数据类型:** bool
- **引擎模块:** Blueprint
- **作用机制:** 在FunctionFlags中增加[FUNC_Event](../../../../Flags/EFunctionFlags/FUNC_Event.md)、[FUNC_Native](../../../../Flags/EFunctionFlags/FUNC_Native.md)、[FUNC_BlueprintEvent](../../../../Flags/EFunctionFlags/FUNC_BlueprintEvent.md)
- **常用程度:** ★★★★★
指定一个函数调用点可以在蓝图中重载实现。是一种方便的用来实现C++来调用蓝图函数的方式。
蓝图中如果没提供实现,调用的话相当于调用空函数。
BlueprintImplementableEvent也要配合BlueprintCallable使用如果没加BlueprintCallable的话就只能在CPP里调用在蓝图会发现找不到Call Function的节点。
## 测试代码:
```cpp
//FunctionFlags: FUNC_Event | FUNC_Public | FUNC_BlueprintCallable | FUNC_BlueprintEvent
UFUNCTION(BlueprintCallable, BlueprintImplementableEvent)
void MyFunc_ImplementableEvent();
```
## 效果展示:
右键可添加自定义实现
![Untitled](Untitled.png)
## 原理:
在C++里调用的时候里面会FindFunctionChecked根据名字寻找。如果蓝图中有找到的话则会调用。如果在蓝图中直接调用则其实是会直接FindFunctionChecked查找蓝图中有定义的话则会被直接找到。
```cpp
void AMyFunction_Default::MyFunc_ImplementableEvent()
{
ProcessEvent(FindFunctionChecked(NAME_AMyFunction_Default_MyFunc_ImplementableEvent),NULL);
}
```