簡體   English   中英

Roblox Studio - 工作區。(我的 roblox ign)。名稱:8:嘗試使用“DisplayName”索引 nil

[英]Roblox Studio - Workspace.(My roblox ign).Name:8: attempt to index nil with 'DisplayName'

所以我試圖從列表中選擇一個名稱並將播放器的 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尚不存在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM