在c++中调用蓝图的自定义事件
时间: 2023-10-13 10:06:50 浏览: 117
在C++中调用蓝图的自定义事件:
1. 在C++类中声明一个UPROPERTY,用于保存指向蓝图对象的指针。
```cpp
UPROPERTY(BlueprintReadWrite, Category = "MyCategory")
class UMyBlueprint* MyBlueprintObject;
```
2. 在C++类中声明一个函数,用于调用蓝图中的自定义事件。
```cpp
UFUNCTION(BlueprintCallable, Category = "MyCategory")
void CallMyBlueprintEvent();
```
3. 在函数的实现中,使用蓝图对象的指针调用自定义事件。
```cpp
void MyClass::CallMyBlueprintEvent()
{
if (MyBlueprintObject)
{
MyBlueprintObject->MyCustomEvent();
}
}
```
4. 在蓝图中,创建一个自定义事件,并将其添加到MyBlueprintObject中。
5. 在蓝图中,将MyBlueprintObject的引用传递给C++对象。
6. 在C++中,调用CallMyBlueprintEvent函数,从而触发蓝图中的自定义事件。
相关问题
怎么在C++里调用蓝图中的自定义事件
在C++中,可以通过以下步骤来调用蓝图中的自定义事件:
1. 在蓝图中创建一个自定义事件,并确保其被公开(Public)。
2. 在C++类中添加一个指向蓝图的引用,例如:
```c++
UPROPERTY(EditAnywhere, BlueprintReadWrite)
UBlueprint* MyBlueprint;
```
3. 在C++中调用蓝图中的自定义事件,例如:
```c++
if (MyBlueprint)
{
MyBlueprint->ProcessEvent(FindFunctionChecked(TEXT("MyCustomEvent")), nullptr);
}
```
这里,`MyCustomEvent`是蓝图中的自定义事件的名称。通过`FindFunctionChecked`函数可以找到该事件的指针,然后使用`ProcessEvent`函数来调用该事件。
需要注意的是,该方法仅适用于通过蓝图创建的自定义事件。如果要调用蓝图中的其他函数或变量,可以在蓝图中添加一个函数或变量,并在C++中使用`MyBlueprint->FindFunction()`或`MyBlueprint->FindVariable()`来查找并访问它们。
在蓝图里使用C++里面的自定义变量
在Unreal Engine的蓝图(Blueprints)中,虽然默认是以视觉化的方式设计流程,但你仍可通过蓝图节点(Node)与C++类交互,包括访问和修改自定义变量。以下是如何在蓝图中使用C++自定义变量的步骤:
1. **引用C++类**:在蓝图中,你需要将C++类关联到蓝图组件上。在“对象”面板中右键点击,选择“添加类引用”,找到并选中包含自定义变量的C++类。
2. **暴露给蓝图**:在C++代码中,使用`DECLARE_DYNAMIC_ACCESSOR`或`UFUNCTION(BlueprintCallable)`等蓝图可见的函数或访问器,让自定义变量能从蓝图中被调用。例如:
```cpp
UFUNCTION(BlueprintCallable)
void SetMyCustomVariable(float InValue);
```
这允许你在蓝图中调用SetMyCustomVariable函数来更新变量。
3. **调用C++函数**:在蓝图中,你会看到一个新节点,如“Get/Set Property”或“Call Function”。在这里输入关联的C++函数名字,并指定所需的参数类型,如上面的`SetMyCustomVariable`。
4. **读取变量**:如果你有返回值,可以使用类似“Get Property”的节点来读取自定义变量。如果没有显式设置读取函数,可以通过类的名称和成员名直接访问,如`MyClassInstance.MyCustomVariable`。
5. **蓝图信号与回调**:如果你希望在C++中对自定义变量的变化做出响应,可以在C++中定义一个蓝图信号,然后在蓝图中触发它,以便处理相应的事件。
阅读全文