ROBLOX Studio ScreenGui 乐谱显示

Posted

技术标签:

【中文标题】ROBLOX Studio ScreenGui 乐谱显示【英文标题】:ROBLOX Studio ScreenGui score display 【发布时间】:2019-03-24 03:33:04 【问题描述】:

如何对变量进行TextLabel 的文本更新?

我已尝试将文本设置为"score: ", _G.score

但它不会随变量一起更新,是的,我确实在变量更新后设置了文本。

代码:

script.Parent.mouseClick:connect(function()
   _G.score = _G.score + 1
   game.StarterGui.ScreenGui.TextLabel.Text = _G.score
end)

【问题讨论】:

此代码是位于Script 还是LocalScript 普通的Script 如果您曾在 GUI 中放置过脚本,则它应该位于 LocalScript 中。由于每个玩家的 GUI 对他们来说都是独一无二的(如果我单击一个按钮,它不应该在 您的 GUI 中进行更改),它必须由每个玩家的计算机处理。 Scripts 由服务器运行,而LocalScripts 由每个玩家的计算机在本地运行。然而,我必须承认,我不确定这是否只是形式,或者这是否真的很重要。自从我学会这一点以来已经有一段时间了。 【参考方案1】:

game.StarterGui实际上是一个模板GUI,每次玩家加入游戏时,都会制作一份副本并提供给新玩家。因此,如果您尝试修改它,您实际上并不会修改提供给所有玩家的副本。

这个问题有两种解决方案:

    只使用相对路径——也就是说,只使用以“script.”开头的 GUI 对象的路径,就像你说的 script.Parent.mouseClick:connect(…)遍历已分发给玩家的所有副本。这可以在每个Player 对象的.PlayerGui 下找到。

你几乎不应该做后者。您可以通过以下方式做出决定:

如果您的代码StarterGui(而不是在工作区或其他地方),那么您应该使用前者。这是因为当StarterGui 被复制到新玩家的GUI(称为PlayerGui)时,该脚本将与它一起被复制,因为它位于StarterGui 中。因此,像script.Parent.Something.SomethingElse.Text = "hi" 这样的相对路径将是有效的;它会影响 那个 PlayerGui

如果您有一些代码在StarterGui不是(例如在工作区中),那么您必须使用后者。这是因为这样的脚本不会被复制到每个玩家的PlayerGui 中。因此,您必须在 for 循环或类似的东西中遍历每个玩家的 PlayerGui。这种情况很少发生,如果有的话,请考虑尽可能避免这种情况,因为这是一个非常棘手的情况要尝试处理;您必须考虑特殊情况,例如玩家尚未获得StarterGui 的副本的可能性。

如果这个解释有任何令人困惑的地方,请告诉我;我会尽力解释得更好。

您可以在此处找到一些视觉效果来配合此解释以及有关官方 ROBLOX Wiki 对此主题的解释的进一步阅读:"Player vs. Starter GUIs"。

【讨论】:

以上是关于ROBLOX Studio ScreenGui 乐谱显示的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Roblox 和 Roblox Studio 在运行某些没有错误代码的脚本时都会崩溃?

如何在 Roblox Studio 中移动网格

Roblox Studio 未加载

循环中的 Roblox Studio Lua if 语句

Roblox Studio 跳过循环

Roblox Studio 价值问题