表字段中的变量名称不起作用

Con*_*son 4 lua roblox lua-table

我在为游戏编写代码时遇到了一个问题.似乎我不能在语句中使用变量;

local Username = "Cranavvo"
game.Players.Username:BreakJoints() -- Kills the player
Run Code Online (Sandbox Code Playgroud)

输出告诉我"没有这样的用户''用户名'"应该是"Cranavvo".

hjp*_*r92 10

来自Lua PiL的桌子

要表示记录,请使用字段名称作为索引.Lua通过提供a.name语法糖来 支持这种表示a["name"].

初学者常犯的错误就是混淆a.x使用a[x].第一种形式表示a["x"],即由字符串索引的表"x".

因此,当您尝试:

game.Players.Username:BreakJoints()
Run Code Online (Sandbox Code Playgroud)

Lua将其解释为:

game["Players"]["Username"]:BreakJoints()
Run Code Online (Sandbox Code Playgroud)

哪个是错的.如果要使用不同的名称作为表的索引,请像这样使用它们:

local foo = "Cranavvo"
game.Players[foo]:BreakJoints()
Run Code Online (Sandbox Code Playgroud)

但一提的是,该播放器类没有BreakJoints方法,你必须让人物模型与帮助.Character属性是这样的:

local foo = "Cranavvo"
game.Players[foo].Character:BreakJoints()
Run Code Online (Sandbox Code Playgroud)

还要提到的是,如果具有该名称的播放器不存在,则代码将中断,并且该字符也可以为空,在这种情况下它也会中断.因此,您需要添加一些错误处理.像这样:

local foo = "Cranavvo"
local Player = game.Players:findFirstChild(foo)
if Player ~= nil and Player.Character ~= nil then
    Player.Character:BreakJoints()
end
Run Code Online (Sandbox Code Playgroud)