【问题标题】:Trouble with interaction with blocks and ScreenGui in Roblox与 Roblox 中的块和 ScreenGui 交互的问题
【发布时间】:2014-01-03 05:01:15
【问题描述】:

我需要有关 Roblox 中“ScreenGui”对象的帮助。我正在尝试编写代码,当玩家通过 gui 点击一个块时弹出 gui 将不会显示。调用该函数使 gui 弹出的脚本在工作空间下,创建 gui 的脚本在 startergui 文件夹中。

这是调用另一个脚本的脚本:

script.Parent.ClickDetector.MouseClick:connect(shared["ShowGui"]);

要调用的脚本是:

shared["ShowGui"] = function()
    print("Hello World");
    sg = Instance.new("ScreenGui", game.StarterGui);
    fr = Instance.new("Frame", sg);
    fr.Size = UDim2.new(0,200,0,60);
    fr.Position = UDim2.new(0, 0, 0.5, -60);
    fr.Visible = true;
    fr.Active = true;
    fr.BackgroundColor3 = Color3.new(1, 0, 0);
end 

当我单击块时,正在调用该函数,控制台正在输出“Hello World”,所以我知道它正在被调用。

我还测试了不作为函数的代码,并且 gui 显示为应有的样子。

所以现在我只是想弄清楚为什么当脚本被作为函数调用时它不会创建 gui。

【问题讨论】:

    标签: roblox


    【解决方案1】:

    首先我发现脚本的分离是不合逻辑的。 其次,如果你在 StarterGui 中放置一个 gui,它只会在你重生后才能看到。

    StarterGui 中的所有 gui 对象在玩家重生后都与玩家的 PlayerGui 相关。

    尝试将此脚本放入砖块中:

    script.Parent.ClickDetector.MouseClick:connect(function(PlayerThatClicked)
        Screen = Instance.new("ScreenGui", PlayerThatClicked.PlayerGui)
        Frame = Instance.new("Frame", Screen )
        Frame.Size = UDim2.new(0,200,0,60)
        Frame.Position = UDim2.new(0, 0, 0.5, -60)
    end)
    

    我目前无法测试运行代码,因此它可能无法按预期工作。

    【讨论】:

      【解决方案2】:

      首先我要做的是在 StarterGui 中有一个 ScreenGui,然后在它下面有一个 Frame。在框架中,您可以放置​​一些文本按钮和文本框。我会把脚本放在框架中,所以你需要做的就是在脚本中找到 gui

      local frame = script.Parent
      frame.BackgroundTransparency = 1
      

      然后你继续脚本。

      【讨论】:

        猜你喜欢
        • 2020-08-19
        • 2019-03-24
        • 2018-10-01
        • 2010-12-19
        • 2015-10-19
        • 2012-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多