0

我自己不是程序员,但我有一个程序员朋友试图帮助我完成虚幻引擎 4 中的某项任务,我希望在这里找到一些建议传递给他。

我们正在尝试制作的是 UE4 中的“节点”,它可以接收许多布尔值(20+),并传递特定值,或者更确切地说是通过事件链/线。

例如,我可以有 6 个布尔值进入节点,如果布尔值 2 和 4 为真,1 为假,并且不查看其余的(基本上不适用),我希望其中一个输出通过. 我在下面制作了一张快速图片来展示它的外观。

节点的外观示例

我的朋友说他不确定如何在 C++ 中实现这样的节点,所以我希望这里有人可以帮助我们朝着正确的方向轻推。否则,我将被困在分支节点、节点或节点之类的东西上,直到我的耳朵流血,我的项目看起来像一碗意大利面。


感谢您的建议,但我觉得该实现对于我所需要的来说有点太简单了。

Hhhmmm,也许我可以将我的想法解释为它的逻辑。本质上,将传入节点的布尔值制成整数数组(或浮点数,不知道它们之间的区别),True = 1,False = 2。数组节点的输入数可以是由输入到主节点的数量决定。然后,根据主节点的输入数量,您可以在主节点上的每个事件输出引脚上使用相同数量的选项。每个选项都有 3 个复选框。选中第一个框会输出 1 表示 True,第二个框会输出 2 表示 False,第三个框会输出 3 表示 Dont Check。然后可以将这些输出本身制成一个数组。然后您只需比较两个数组以查看它们是否匹配,并且第二个数组中有 3 值的任何地方,无论与什么进行比较,都会输出“匹配”。我只是不知道实际的编码,所以我需要一些帮助来尝试用代码向我的朋友解释这行逻辑。

4

1 回答 1

0

根据信息:

std::vector<int> input_vector; //the index will represent sequence and value will represent state

for(int i=0; i<node_size; i++)
{
    input_vector.push_back(state); //you will push state=1 or state=2 here
}

std::vector<int> node_vector;
bool flag = true;

for(int case_no=0; case_no<cases;case_no++)
{
    //checking node_vector with input_vector
    for(int i=0; i<node_size; i++)
    {
        int choice;
        std::cin >> choice; //either 1 or 2 or 3
        node_vector.push_back(choice);
    }
    for(int i=0; i<node_size; i++)
    {
        if(node_vector[i]==3)
            continue;
        else if(node_vector[i]==input_vector[i])
            continue;
        else
        {
            flag = false;
            break;
        }
    }
    if(flag==true)
        break;
    else
        continue;
}

if(flag)
    std::cout << "Matched";
else
    std::cout << "Not Matched";
于 2018-04-13T20:11:58.943 回答