在 Godot 中通过嵌套函数传递变量的正确方法是什么?

What is the correct way to communicate variables through nested functions in Godot?

我应该:

  1. 通过 b 和 c 传递变量作为参数。
  2. 在 a 的范围内定义 b 和 c,以便它们可以访问 a 的变量。
  3. 在a的范围内定义b,在b的范围内定义c。
  4. 将a定义的文件中的variables设为成员变量,并在a中修改。
  5. 做点别的事。

我不想执行 1,因为那样 b 和 c 将有 许多 参数。我不想执行 2 或 3,因为每次调用 a 时都会不必要地重新定义 b 和 c。我不想做 4 因为成员变量只在较低范围的一个地方使用似乎很糟糕。还有其他选择吗?我有什么理由不做 1-4 错吗?

我建议做4(在a定义的文件中使变量成为成员变量,并在a中更改它们)。

I don't want to do 4 because having member variables that are only used in a single place in a lower scope seems bad.

为其创建一个新的 class。


如果从1开始(通过b和c传递变量作为参数)。

您必须解决您描述的许多参数问题:

I don't want to do 1 because then b and c will have many parameters

为此,您可以定义一个新的 class 来保存它们,这样您就可以传递一个参数,它是那个新的 class 的对象。一旦你有了一个新的 class,并且假设它只被函数 a... 使用,那么让函数 a 成为新的 class...对于其他函数,那么你根本不需要传递参数,你实际上有解决方案4.


我不确定 2 和 3。Lambda 函数是 Godot 4.0 (see) 中即将推出的功能,尚未发布。您使用的是自定义构建还是……什么?