所以我试图从列表中选择一个名称,并将玩家的DisplayName设置为该名称。。这是starterCharacterScripts中的LocalScript。
local player = game.Players.LocalPlayer
print("Getting name of player ".. player.Name)
local Names = {<my names dont worry about em>}
local ChosenName = Names[math.random(1, #Names)]
print("Got name: " .. ChosenName)
local name = player.Name
game.Workspace.name.Humanoid.DisplayName = Names[math.random(1, #Names)]```
为什么最后一行没有使用ChosenName
而不是Names[math.random(1, #Names)]
?这只是第二次选择一个随机名称,该名称可能与打印有"Got name: "
的名称匹配,也可能不匹配。
但是,就目前的问题而言,game.Workspace.name.Humanoid.DisplayName
引用的表是什么?这个错误似乎表明没有DisplayName
字段,所以我怀疑表中还没有添加Humanoid
字段。
> Names = {'Trillian', 'Ford', 'Arthur', 'Zaphod', 'Marvin'}
> ChosenName = Names[math.random(1, #Names)]
如果正在使用的表OP代码已经有一个name
字段,则:
> game.Workspace.name.Humanoid = { DisplayName = ChosenName }
将起作用。如果表还没有name
字段,则:
> game.Workspace.name = { Humanoid = { DisplayName = ChosenName }}
无论哪种方式,您现在都应该有:
> game.Workspace.name.Humanoid.DisplayName
Marvin
除非game
表还没有Workspace
字段。这里的一般原则是game.Workspace.name.Humanoid.DisplayName
是game["Workspace"]["name"]["Humanoid"]["DisplayName"]
的句法糖。如果Workspace
字段是表,则尝试访问name
字段;如果name
字段是表,则尝试访问Humanoid
字段。如果尚未创建Humanoid
字段,则返回nil
,并且["DisplayName"]
尝试索引nil
,从而导致错误。
给定一个类似的表格
t = {}
您可以使用t.something = something
创建新字段一级深度,但不能以这种方式创建嵌套表字段,例如t.something.else = something_else
,因为第一个字段something
还不存在。