为什么这个改变 Roblox Studio GUI 代码的方法不起作用?

我试图创建一个每5秒钟更改一次的 TextLabel。我有以下代码,但它不起作用。

local player = game.Players:GetPlayerFromCharacter(part.Parent) —这是我们获取 PlayerGui 对象的途径。
  local PlayerUI = player:WaitForChild(“PlayerGui”)
  local txtLabel = PlayerUI[“Welcome_Text”].TextLabel
while x < 1 do
  wait(5)
  txtLabel.Text = “欢迎来到 The Shadow Realm!”
  wait(5)
  txtLabel.Text = “警告:该游戏可能对一些 Roblox 玩家来说太恐怖了。”
end

我收到了一个错误消息,说:

ServerScriptService.Script:2: attempt to index global 'part' (a nil value)

我不知道在哪里放置我的 GUI。

点赞
用户9922866
用户9922866

如果我正确理解您要做的事情,您应该能够创建一个ScreenGui并将其放置在StartGui中,这样每个玩家在加入游戏时都会将其复制到他的PlayerGui中。您可以在该GUI中放置一个LocalScript,以控制屏幕上的文本。

我认为您的LocalScript应该像这样:

-- Customize names on your own; these are just generic placeholders.
-- The structure of the GUI would look like this:
--
-- ScreenGui
--    LocalScript
--    Frame
--        TextLabel

local WELCOME = "Welcome to the Shadow Realm!"
local WARNING = "Warning! This game contains scenes that may be too scary for some players"

local runService = game:GetService("RunService")

local gui = script.Parent
local frame = gui.Frame
local label = frame.TextLabel

local function update_text()
    label.Text = WELCOME
    wait(5)
    label.Text = WARNING
    return
end
runService.RenderStepped:Connect(update_text)

将此LocalScript作为客户端GUI的一部分,可以将开销转移到客户端,并消除使用Players::GetPlayerFromCharacter方法的需要。

2020-03-09 19:55:45