无法访问 Roblox 文本框中的文本

Cannot Access Text In A Roblox TextBox

每当我尝试在 robloxian lua 中执行这组代码时,我都无法访问文本框。此代码支持执行此操作,但我认为它访问的是文本框内文本的 属性。这是我正在使用的代码的代表。因此,假设 Bob 想与 John 交谈。我会这样写。

game.StarterGui.ScreenGui.Frame.JohnsSpeech.Text = game.StarterGui.ScreenGui.Frame.JohnsUserSetText.Text

现在,JohnsUserSetText 是文本框,而 JohnsSpeech 是语音。但是当我尝试这样做时,它不起作用。它只是说明属性中的任何文本。任何帮助,将不胜感激。谢谢!好好休息!

应该做什么? .Text 是 属性 文本框或类似的东西

注意:您正在更改启动器图形用户界面,这意味着使用当前图形用户界面的任何人在死亡和重生之前都不会获得更新的图形用户界面。如果您想在他们的 GUI 中更新,请通过 Game.Players.playernamehere.PlayerGui

访问它

StarterGui 是游戏在重新加载所有内容时导入玩家的内容,又名:重生或加入

如果您需要更新每个玩家 Gui 的提示,请告诉我,我可以举一些例子

正如 M. Ziegenhorn 所说,您的问题是您指的是 StarterGui,而不是 PlayerGui。

StarterGui 是包含默认 GUI 的容器,这些 GUI 在生成时会提供给玩家,而 PlayerGui(例如 game.Players.Ravenshield.PlayerGui)是为每个玩家存储 GUI 的地方。 PlayerGui 只能通过 LocalScript 访问。

访问 PlayerGui 的最简单方法显然是将 LocalScript 放在您正在使用的 ScreenGui 中。 否则,您也可以通过 game.Players.LocalPlayer.PlayerGui

轻松访问它

如果我将我的 LocalScript 直接放在我们正在使用的 ScreenGui 中,它可能看起来像这样:

local TextBox = script.Parent.TextBox
local SpeechLabel = script.Parent.SpeechLabel

SpeechLabel.Text = TextBox.Text

但是,您可能希望在他们将文本写入 TextBox 时添加文本。然后我们需要查看 ROBLOX 的文档,特别是 TextBox Object

如果向下滚动到“事件”,您可以查看 TextBox.Changed 事件。每当 TextBox 的 属性 发生变化时都会触发。 我们还可以使用 TextBox.FocusLost,它会在客户端未聚焦 TextBox 时触发。该事件提供了一个布尔值 'enterPressed',它告诉我们客户端是否按下 Enter 以失去焦点。

local TextBox = script.Parent.TextBox
local SpeechLabel = script.Parent.SpeechLabel

TextBox.FocusLost:Connect(function(enterPressed)
  if enterPressed then -- Checking if the enterPressed is true and not nil
    -- The user must have pressed enter to exit the TextBox.
    -- Could mean that they're done writing something.
    SpeechLabel.Text = TextBox.Text
  end
end)

必须使用 :Connect 方法绑定所有事件。这就是告诉 ROBLOX 开始 'listening' 事件,以确保每次发生这种情况时都会触发该函数。