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

标签 lua roblox lua-table

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

local Username = "Cranavvo"
game.Players.Username:BreakJoints() -- Kills the player

输出告诉我“没有像‘用户名’这样的用户”,应该是 "Cranavvo"

最佳答案

来自 Lua PiL on tables

To represent records, you use the field name as an index. Lua supports this representation by providing a.name as syntactic sugar for a["name"].

A common mistake for beginners is to confuse a.x with a[x]. The first form represents a["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/

相关文章:

macos - 如何在终端 (Mac) 中运行 .lua 文件

python - 尝试对组内玩家进行排名时,无法创建具有 PROTOCOL_TLS_SERVER 上下文的客户端套接字

lua - 触摸功能 Roblox Studio

lua - 分析时,将被调用者时间累积给调用者的正确(或好的)方法是什么?

file - Lua 5.2中的沙箱

lua - 推送可执行函数指针?

lua - 我在 lua 中使用这些表的效率如何?

error-handling - 如何打印错误?

arrays - Lua 根据数组元素检查值

Lua:何时以及如何将表写入_G