我自己不是程序员,但我有一个程序员朋友试图帮助我完成虚幻引擎4中的某项任务,我希望在这里找到一些建议传递给他。
我们试图在UE4中创建一个"节点",它可以接收许多布尔值(20+),并传递特定值,或者更确切地说是通过事件链/行传递。
例如,我可以有 6 个布尔值进入节点,如果布尔值 2 和 4 为真,1 为假,其余的不被查看(基本上不适用),我希望其中一个输出通过。我在下面做了一个快速的图像来展示它的外观。
节点外观示例
我的朋友说他不确定如何在C++中完成这样一个节点,所以我希望这里有人可以帮助我们朝着正确的方向前进。否则,我会被分支节点、节点或节点等搞乱,直到我的耳朵流血,我的项目看起来像一碗意大利面。
感谢您的建议,但我觉得该实现对于我需要的东西来说有点太简单了。
嗯嗯,也许我可以解释一下我的想法。本质上,将传入到节点的布尔值制作成一个整数数组(或浮点数,实际上不知道它们之间的区别),True = 1,False = 2。数组节点的输入数量可以通过主节点的输入数量来确定。 然后,根据进入主节点的输入数量,您可以在主节点上为每个事件输出引脚提供相同数量的选项。每个选项将有 3 个复选框。选中第一个框将输出 1 表示 True,第二个框将输出 2 表示 False,第三个框将输出 3 表示不检查。 然后可以将这些输出本身制作成一个数组。然后你只需要比较两个数组,看看它们是否匹配,只要第二个数组中有 3 值,就会输出一个"正在匹配",无论它与什么进行比较。 我只是不知道实际的编码,所以我需要一些帮助来尝试用代码向我的朋友解释这行逻辑。
基于以下信息:
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";