共计 2206 个字符,预计需要花费 6 分钟才能阅读完成。
函数功能
Function
插件已被新的内置函数特性所取代,现已弃用。本手册条目仅出于存档目的提供,未来可能会被移除。
Function
对象可以在一个动作(调用函数)中运行不同的事件(在函数上)。这与传统编程语言中的函数类似。使用函数可以帮助你组织事件,避免重复一组动作或事件。
关于函数
Function
对象的主要目的是使用“调用函数”动作。这需要函数的名称(例如,调用函数“CreateEnemy”)。然后,该动作触发相应的“在函数上”事件(例如,在函数上“CreateEnemy”),运行事件的动作和任何子事件,然后返回到原始的“调用函数”动作并从那里继续。
再举一个例子,假设你每 5 秒钟在游戏中创建一个具有随机属性的敌人,使用此事件:
创建敌人的事件
假设还有两个其他事件,你想以相同的方式创建敌人:一个是玩家走进陷阱时,另一个是每 4 秒钟在 boss 战斗中。没有函数,你可能需要多次复制 - 粘贴动作,如下所示:
多个事件都以相同的方式创建敌人
注意这变得不方便。可能有时候你需要在更多的地方重复动作。如果你想做出改变,那么你必须找到你重复动作的每一个地方,并重复改变。我们可以使用函数来消除重复。通过创建一个包含重复动作的 CreateEnemy 函数,我们可以将所有重复的动作替换为像这样的“调用函数”动作:
使用函数防止重复动作
这与以前的事件完全相同,但更短且更方便。我们可以在任何我们想要创建敌人的地方使用“调用 CreateEnemy”动作,它使用“在 CreateEnemy 事件上”的相同动作集。
将事件的许多部分像这样分解成函数通常是有用的,因此它们可以方便地在整个事件表上重复使用。
函数参数
在调用函数时,您还可以传递参数。这些只是可供函数使用的数字或字符串。例如,从之前的示例中,我们可以修改 CreateEnemy 函数以接受两个参数:创建敌人的 X 和 Y 坐标。这有助于通过使用来自调用函数的操作的额外信息使函数更具通用性。
要向函数调用添加参数,请在编辑“调用函数”操作时单击“参数”对话框中出现的“添加参数”链接。这是仅在该操作的“函数”对象中显示的特殊链接。在 On 函数事件中,您可以使用带有参数的零基索引的 Param 表达式来检索相应的值。
高级函数功能
就像在编程语言中一样,Function 对象支持以下功能:
- 函数调用其他函数
- 函数调用自身(递归)
- 从函数返回值
- 从表达式调用函数(也返回返回值)
请注意,调用其他函数或递归的函数会创建一个新的局部变量“堆栈”。换句话说,就像在编程语言中一样,每个级别的函数调用都有唯一的局部变量。这不适用于静态局部变量或全局变量。
还要注意,如果错误地使用了 Function 对象(如调用不存在的函数或访问未传递的参数),则会将日志记录到浏览器控制台。这可以帮助在大项目中识别使用函数的问题。
从函数返回值
函数也可以返回结果。例如,阶乘函数可以计算数学结果并返回。在 On 函数事件中,可以使用 Set return value 操作设置返回值。
如果使用 Call function 操作调用了事件,则之后可以使用 ReturnValue 表达式获取返回值。也可以直接从表达式使用 Call 表达式调用函数;在这种情况下,返回值会自动作为 Call 表达式的结果返回。
JavaScript 集成
强烈建议使用 Addon SDK 将 JavaScript 代码与 Construct 集成。但是,也可以使用以下函数从 JavaScript 代码触发 Function 对象中的函数:
- if (self.c2_callFunction)
- self.c2_callFunction("name", ["param1", "param2"]);
由于遗留原因,该名称仍指 C2。请注意,如果 Function 对象未包含在项目中,则该函数将不存在,因此在使用它之前必须检查 if。具有给定“名称”的函数是同步触发的。参数是可选的,可以省略,但必须在第二个参数中作为数组提供,并且参数只能是字符串或数字值(任何其他类型在 Construct 中将返回为 0)。该方法还返回 Construct 中设置的返回值(如果有),并且只能返回字符串或数字。c2_callFunctionc2_callFunction
功能条件
比较参数
将其中一个参数的值与函数调用进行比较。此条件应仅在 On 函数事件中使用,因为在函数调用之外没有设置参数。
On 函数
在使用相应的调用函数操作时触发。
函数操作
调用表达式
这是调用函数操作的替代方法。它只是提供一个参数来输入表达式,结果将被忽略。您可以使用它通过 Function.Call(…)表达式调用函数,如果使用大量参数,这可能会更方便。
调用函数
触发相应的 On 函数事件。可以传递由 Param 表达式访问的其他参数。
设置返回值
在函数事件中,设置要返回给调用方的值。这要么由 Call 表达式返回,要么稍后使用 ReturnValue 表达式访问。
函数表达式
叫
直接从表达式调用函数。表达式返回函数中设置的返回值,如果未设置返回值,则返回 0。可以选择在函数名称后添加其他参数,例如 .Function.Call("CreateEnemy", 123, 456)
参数
检索由函数调用的从零开始的索引传递给函数调用的参数。例如,返回第一个参数的值。Function.Param(0)
参数计数
返回传递给函数调用的参数数。
返回值
使用上次函数调用中的“设置返回值”操作返回值集。如果函数中未使用 Set 返回值,则返回 0。