Roblox 工作室 - 工作区。(我的机器人 ign)。名称:8:尝试用'DisplayName'索引 nil



所以我试图从列表中选择一个名称,并将玩家的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.DisplayNamegame["Workspace"]["name"]["Humanoid"]["DisplayName"]的句法糖。如果Workspace字段是表,则尝试访问name字段;如果name字段是表,则尝试访问Humanoid字段。如果尚未创建Humanoid字段,则返回nil,并且["DisplayName"]尝试索引nil,从而导致错误。

给定一个类似的表格

t = {}

您可以使用t.something = something创建新字段一级深度,但不能以这种方式创建嵌套表字段,例如t.something.else = something_else,因为第一个字段something还不存在。

最新更新