使用参数和事件

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

通常,函数只能使用它们内部编码的信息。然而,有时你可能不知道这些信息会是什么,或者你希望能够使用相同的函数处理多个相似的信息。例如,如果你想用一个函数向所有人显示最快完成障碍赛课程的人的名字,而那个人的名字在比赛结束之前是无法知道的。

参数是你希望稍后提供给函数的信息的占位符。它们就像窗户,让你能够传递信息给函数。

使用参数和事件设置一个陷阱

这个脚本将创建一个陷阱部件,销毁触碰到该部件的任何物体,包括其他部件。你需要使用一个参数来进行设置。小心使陷阱固定在一个不会掉落并意外破坏其他东西的位置。

创建一个新部件

需要设置一个部件,该部件将销毁接触到它的任何物体。

  1. 创建一个新的部件,它不要接触到其他任何东西。如果它碰到其他东西,可能会过早触发。
  2. 在资源管理器中,将部件重命名为:TrapPart。
  3. 固定该部件。

设置脚本

利用你对变量和经验层次结构的了解来引用陷阱部件。

  1. 在陷阱部件中添加一个新的脚本。将脚本重命名为 TrapScript

  2. 删除 Hello World,并添加一个描述性注释。

  3. 在注释下,创建一个新变量,以找到脚本的父对象。


    -- 销毁接触父对象的任何物体
    local trap = script.Parent

创建一个带有参数的函数

陷阱将使用一个函数来销毁接触到该部件的任何物体。为了使其生效,函数需要知道是什么接触了该部件。这就意味着要使用参数。参数在函数名后面的 () 内部编写。它们看起来像这样:


local function functionName(parameterName)
end

传递给参数的实际信息称为参数值(argument)。你将创建一个名为 onTouch() 的新函数,带有一个名为 objectTouched 的参数,用于追踪接触到陷阱的任何物体,然后销毁接触的部件。

  1. 创建一个局部函数。它可以命名为任意名称,但本课将使用 onTouch


    local trap = script.Parent
    local function onTouch()
    end
  2. () 内键入参数的名称。本课将使用 objectTouched。


    local trap = script.Parent
    local function onTouch(objectTouched)
    end
  3. local function onTouch()end 之间创建一个打印语句。你将用这个语句在下个部分检查是否有东西接触了该部件。


    local trap = script.Parent
    local function onTouch(objectTouched)
    print("某物接触了陷阱")
    end

使用事件来调用函数

我们希望函数在任何物体接触到该部件时运行。为了实现这一点,将函数连接到 Touched 事件。事件是在体验中发生的事情。就像玩家触碰一个部件或失去生命。当一个函数连接到一个事件时,该函数在每次事件发生时运行。

Touched 事件在一个部件触碰另一个部件时触发,可用于创建按钮、陷阱和玩家互动的其他物体。

  1. 在函数的 end 下面输入 trap.Touched:Connect(onTouch)


    local trap = script.Parent
    local function onTouch(objectTouched)
    print("某物接触了陷阱")
    end
    -- 将函数连接到 Touched 事件
    trap.Touched:Connect(onTouch)
  2. 点击测试,然后触碰该部件。检查你的测试打印语句:某物接触了陷阱。如果你在输出窗口中看不到字符串,请检查以下内容:

    • 确保字符串 "某物接触了部件!" 在 local function onTouch() 和 end 之间。
    • 检查 Touched 是否大写。
  3. 现在函数已正确设置,利用它来销毁接触该部件的任何物体。在函数内部,在字符串后输入 objectTouched:Destroy()。完成的代码应该为:


    local trap = script.Parent
    local function onTouch(objectTouched)
    print("某物接触了陷阱")
    -- 销毁接触的物体
    objectTouched:Destroy()
    end
    trap.Touched:Connect(onTouch)
  4. 再次测试,看看当部件被触碰时会发生什么。你的角色应该缺少脚或手。如果部件接触到角色的头或脖子,它甚至可能会被完全销毁。

总结

参数用于将通常超出范围(函数无法看到)的信息传递到函数中。同时,事件是当某些重要事情发生时在体验中触发的特殊信号。不同的物体有不同的事件。函数可以连接到事件,以便每次事件触发时都调用。这段小脚本将函数连接到陷阱的 Touched 事件,并通过参数传递了触碰陷阱的内容。