【问题标题】:Unreal Macro blueprint to C++虚幻宏蓝图到 C++
【发布时间】:2021-03-17 10:31:17
【问题描述】:

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

代码就是以此为基础的

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

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

【问题讨论】:

  • 我觉得不错!当您调试并看到它返回错误结果时,RowColumnNumRowsNumColumns 的值是多少,以及函数的预期与实际结果是什么?请附上minimal reproducible example
  • 'Row' 和 'Column' 的值设置为 'NumRows' 和 'NumColumns' 以检查 'NumRows' 和 'NumColums' 是否小于 0。这是为了确保代码仍然有效。 F.eks: '如果 NumRows 小于 0,则此代码有错误' 抱歉,这不是一个最小的可重现示例,但这个小代码只是检查 'NumRows' 和或 'NumColums' 是否小于 0 .

标签: c++ unreal-engine4 unreal-blueprint


【解决方案1】:

我不确定到底是什么不工作?

我要猜测一下,你期待你的(现在是 C++ 函数,而不是宏)TileValid C++ 中的节点没有蓝图宏所具有的执行引脚。

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-02-04
      • 1970-01-01
      • 1970-01-01
      • 2015-11-06
      • 1970-01-01
      • 2016-06-03
      • 2015-02-04
      • 2019-09-10
      • 2018-06-21
      相关资源
      最近更新 更多