Как открыть графический интерфейс при касании кирпича? (с включенной фильтрацией)

Я пытаюсь сделать корпус магазина, когда вы дотронетесь до кирпича, он откроет Shop Gui,

Теперь основная проблема заключается в том, что я не знаю, как открыть графический интерфейс, поскольку использование скриптов при включенной фильтрации просто не поможет.

У кого-нибудь есть веское объяснение?


person Lua Tutoring    schedule 05.08.2018    source источник


Ответы (1)


Прежде всего, чтобы выполнить какое-либо действие при касании кирпича, вам нужно будет использовать .Touched вашего кирпича. У вашего кирпича есть этот атрибут, потому что это тип данных, называемый Part.

Во-вторых, я не уверен, как вы хотите, чтобы графический интерфейс открывался, но самый простой способ - включить его с помощью _ 3_ вашего элемента графического интерфейса. Это просто заставит его появиться на экране. У элемента GUI есть этот атрибут, потому что это GuiObject, будь то фрейм, TextButton или что-то еще.

Код будет выглядеть примерно так:

brick = path.to.part.here
gui = path.to.gui.here

function activateGui() --shorthand for "activateGui = function()"
    gui.Enabled = true
end

brick.Touched:connect(activateGui)

Обратите внимание, что .Enabled - это boolean (true или false). Также обратите внимание, что .Touched - это специальный объект с функцией :connect(func). Это потому, что .Touched на самом деле является Event. Все Event имеют специальную :connect(func) функцию, которая принимает аргумент другой функции func, которая должна выполняться при возникновении события. В этом случае мы попросили, чтобы событие .Touched кирпича выполнялось activateGui, когда оно происходит.

Кроме того, для .Enabled по умолчанию установлено значение true, поэтому для того, чтобы этот метод работал, убедитесь, что вы установили для него значение false в ROBLOX Studio, сняв флажок .Enabled на вкладке «Свойства» для элемента графического интерфейса. Обратите внимание, что вам не нужно делать это для каждого отдельного элемента графического интерфейса; Если вы установите .Enabled в значение false для определенного элемента, все его дочерние элементы также будут автоматически скрыты, поэтому вам нужно сделать это только для родительского элемента.

Наконец, вы должны сделать это в Local Script. Поскольку графический интерфейс уникален для каждого игрока, он фактически обрабатывается компьютером каждого игрока, а не самим сервером ROBLOX. Local Scripts - это скрипты, которые специально обрабатываются компьютером игрока, а не сервером, поэтому критично, чтобы вы не пытались сделать это с помощью обычного Script < / a>, который обрабатывается сервером.

Для вашей информации приведенный выше код можно сжать до следующего, если вы хотите:

brick = path.to.part.here
gui = path.to.gui.here

brick.Touched:connect(function()
    gui.Enabled = true
end)

Это потому, что вам не нужно создавать функцию, давать ей имя и затем присваивать это имя .Touched; вместо этого вы можете просто создать его прямо на месте.

person NetherGranite    schedule 05.08.2018