虚幻宏蓝图到 C++

问题描述

我在将 Unreal 蓝图中的宏转换为 C++ 时遇到了一些问题。宏影响了我的很多代码,在包含的图片中,C++代码代码所基于的宏不相似

Unreal blueprint

代码基于此

Macro code

bool AGrid::TileValid(int Row,int Column)
{
    if (((Row >= 0) && (Row < NumRows)) && ((Column >= 0) && (Column<NumColumns)))
    {
        return true;
    }
    return false;
}

关于如何实现此代码的任何建议?

解决方法

我不确定到底是什么不起作用?

我将猜测并说您期望您的(现在是 C++ 函数,而不是宏)TileValid 来自 C++ 的节点没有蓝图宏所具有的执行引脚。

确保您的 TileValid 函数没有用 BlueprintPure 标记,而是用 BlueprintCallable 标记。还要确保它没有被标记为 const 函数,这也会影响它的外观和功能。

BlueprintPure 和/或 const C++ 函数 BlueprintCallable 不需要直接执行(白线),而是在每次其输出引脚连接到另一个节点时执行,然后,当执行该父节点时,它们将被执行。这可能会改变他们的行为,因为他们可能使用的变量可能会在后续执行之间发生变化,从而可能会改变他们的输出。

,

这段代码在可调用 H 类中的 UFUNCTION(BlueprintCallable,BlueprintPure) 处都做了。从此代码中删除 BlueprintPure 将解决可执行变量