我在为游戏编写一些代码时遇到了一个问题。似乎我不能在语句中使用变量;
local Username = "Cranavvo"
game.Players.Username:BreakJoints() -- Kills the player
输出告诉我“没有像‘用户名’这样的用户”,应该是
"Cranavvo"
。
最佳答案
To represent records, you use the field name as an index. Lua supports this representation by providing
a.name
as syntactic sugar fora["name"]
.A common mistake for beginners is to confuse
a.x
witha[x]
. The first form representsa["x"]
, that is, a table indexed by the string"x"
.
因此,当您尝试:
game.Players.Username:BreakJoints()
Lua 将其解释为:
game["Players"]["Username"]:BreakJoints()
这当然是错误的。如果要使用不同的名称作为表的索引,请像这样使用它们:
local foo = "Cranavvo"
game.Players[foo]:BreakJoints()
但要提到的是 Player 类没有 BreakJoints 方法,您必须在 model 属性的帮助下获取字符 .Character ,如下所示:
local foo = "Cranavvo"
game.Players[foo].Character:BreakJoints()
另外要提到的是,如果具有该名称的玩家不存在,则代码将中断,并且角色可以为空,在这种情况下它也会中断。因此您需要添加一些错误处理。像这样:
local foo = "Cranavvo"
local Player = game.Players:findFirstChild(foo)
if Player ~= nil and Player.Character ~= nil then
Player.Character:BreakJoints()
end
关于lua - 表字段中的变量名不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15730646/