【问题标题】:What is the correct way to communicate variables through nested functions in Godot?通过 Godot 中的嵌套函数传递变量的正确方法是什么?
【发布时间】:2021-04-03 14:44:43
【问题描述】:
  • 我有函数 a、b 和 c。
  • a 调用 b 100 次。
  • b 调用 c 100 次。
  • 因此,如果 a 被调用一次,c 就会被调用 10,000 次。
  • c 需要 a 范围内的许多变量。

我应该:

  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 错了吗?

【问题讨论】:

  • 这是 GDScript 吗?在另一个范围内定义一个函数是什么意思?

标签: godot


【解决方案1】:

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

我不想做 4,因为只有在较低范围内的一个地方使用的成员变量似乎很糟糕。

为它创建一个新类。


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

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

我不想做1,因为那样b和c会有很多参数

为此,您可以定义一个新类来保存它们,这样您就可以传递一个参数,该参数是该新类的一个对象。一旦你有了一个新类,并且只在函数 a 中使用它......那么将函数 a 变成新类的成员是有意义的......如果你对其他函数做同样的事情,那么你就不用' 根本不需要传递参数,并且您实际上有解决方案 4。


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

【讨论】:

  • 我不在自定义版本中;我只是没有意识到在另一个函数中定义一个函数是不可能的,或者至少不像在 Python 中那样简单。我的错。
猜你喜欢
  • 2019-01-27
  • 2012-08-16
  • 1970-01-01
  • 2021-10-09
  • 2014-04-28
  • 2018-09-23
  • 1970-01-01
  • 1970-01-01
  • 2011-10-09
相关资源
最近更新 更多