通常,函数只能使用它们内部编码的信息。然而,有时你可能无法提前知道这些信息是什么,或者你希望能够使用相同的函数处理多条相似的信息。例如,如果你想使用一个函数以巨大的字母向所有人显示完成障碍课程最快的人的名字。你不会知道未来获胜者的名字,直到比赛结束。
参数是你希望在稍后时间传递给函数的信息的占位符。它们就像窗口,允许你传递信息给函数。
使用参数和事件设置陷阱
这个脚本将创建一个陷阱部件,摧毁触碰该部件的任何东西,包括其他部件。你需要使用一个参数来设置它。小心将陷阱固定在不会掉落并意外摧毁东西的地方。
创建一个新部件
需要设置一个部件,该部件将摧毁触碰它的任何东西。
- 创建一个新的部件,确保它没有接触任何东西。如果它接触了其他东西,可能会过早触发。
- 在资源管理器中,将部件重命名为:TrapPart。
- 固定该部件。
设置脚本
使用你对变量和游戏层次结构的了解来引用陷阱部件。
在陷阱部件中添加一个新脚本。将脚本重命名为 TrapScript。
删除 Hello World 并添加一个描述性注释。
在注释下方,创建一个新变量,用于查找脚本的父级。
-- 摧毁触碰父级的任何东西local trap = script.Parent
创建一个带参数的函数
陷阱将使用一个函数来摧毁触碰该部件的任何东西。为了工作,函数需要知道是什么触碰了该部件。这意味着需要使用参数。参数在函数名称后面的 () 中输入。它们看起来像这样:
local function functionName(parameterName)
end通过参数传递的实际信息称为参数值。你将创建一个名为 onTouch() 的新函数,带有一个名为 objectTouched 的参数,用于跟踪触碰陷阱的任何东西,然后摧毁触碰的部件。
创建一个局部函数。它可以命名为任何名称,但本课程将使用 onTouch
local trap = script.Parentlocal function onTouch()end在 () 中输入参数的名称。本课程将使用 objectTouched。
local trap = script.Parentlocal function onTouch(objectTouched)end在 local function onTouch() 和 end 之间创建一个打印语句。你将使用它来检查在下一部分中是否有东西触碰了该部件。
local trap = script.Parentlocal function onTouch(objectTouched)print("有东西触碰了陷阱")end
使用事件调用函数
我们希望函数在任何东西触碰该部件时运行。为了实现这一点,将函数连接到 Touched 事件。事件是游戏中发生的事情。例如,玩家触碰一个部件或失去生命。当一个函数连接到一个事件时,每当事件发生时,函数就会运行。
Touched 事件在一个部件触碰另一个部件时触发,可以用于创建按钮、陷阱和其他玩家交互的对象。
在函数的 end 下面,输入 trap.Touched:Connect(onTouch)
local trap = script.Parentlocal function onTouch(objectTouched)print("有东西触碰了陷阱")end-- 将函数连接到 Touched 事件trap.Touched:Connect(onTouch)点击测试,然后触碰该部件。检查你的测试打印语句:有东西触碰了陷阱。如果你在输出窗口中看不到该字符串,请检查以下内容:
- 确保字符串 "有东西触碰了部件!" 在 local function onTouch() 和 end 之间。
- 检查 Touched 是否大写。
现在函数已正确设置,使用它来摧毁触碰该部件的任何东西。在函数内部,在字符串之后输入 objectTouched:Destroy() 完整的代码应为:
local trap = script.Parentlocal function onTouch(objectTouched)print("有东西触碰了陷阱")-- 摧毁触碰的对象objectTouched:Destroy()endtrap.Touched:Connect(onTouch)再次测试,看看当部件被触碰时会发生什么。你的角色应该会缺少脚或手。如果部件触碰到角色的头或脖子,甚至可能会完全被摧毁。
总结
参数用于将通常超出范围(函数无法看到的地方)的信息传递到函数中。同时,事件是在游戏中发生重要事情时发出的特殊信号。不同的对象有不同的事件。函数可以连接到事件,以便每次事件触发时都被调用。这个小脚本将一个函数连接到陷阱的 Touched 事件,并通过参数传递了触碰陷阱的内容。