[英]How would i assign only DisplayName and Name from PrincipalSearcher to List?
[英]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.DisplayName
是game["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.