与Roblox中的块和ScreenGui交互有问题

时间:2013-12-15 21:42:19

标签: roblox

我需要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。

2 个答案:

答案 0 :(得分:1)

首先,我发现脚本的分离是错误的。 第二,如果你把一个gui放在StarterGui中,它只会在你重生之后被看到。

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)

我目前无法测试运行代码,因此可能无法正常运行。

答案 1 :(得分:0)

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

local frame = script.Parent
frame.BackgroundTransparency = 1

然后你继续编写脚本。