问题描述
我在将 Unreal 蓝图中的宏转换为 C++ 时遇到了一些问题。宏影响了我的很多代码,在包含的图片中,C++代码与代码所基于的宏不相似
代码基于此
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
将解决可执行变量