2013-12-15 1 views
0

Мне нужна помощь с объектом «ScreenGui» в Roblox. Я пытаюсь написать код, который позволит появлению gui, когда игрок нажимает на блок через gui, не будет отображаться. Сценарий, вызывающий функцию для создания gui, находится в рабочей области, а скрипт, создающий gui, находится в папке startergui.Проблема с взаимодействием с блоками и ScreenGui в Roblox

Это скрипт, который звонит в другую:

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, когда скрипт вызывается как функция.

ответ

1

Сначала я нахожу разделение скриптов с логикой. Во-вторых, если вы положите gui в StarterGui, он будет ТОЛЬКО увиденным после вашего респауна.

Все объекты gui в StarterGui передаются игрокам 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) 

Я в настоящее время не в состоянии проверить запустить код, поэтому он не может работать, как я ожидал.

0

Прежде всего, что бы я сделал, в StarterGui есть ScreenGui, тогда под этой рамкой. В рамке вы можете поместить некоторые текстовые кнопки и текстовые поля. Я бы поставил скрипт в кадре, так что все, что нужно сделать, чтобы добраться до графического интерфейса в скрипте

local frame = script.Parent 
frame.BackgroundTransparency = 1 

Затем продолжить со сценарием.

Смежные вопросы