BasePlayerGui
*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.
O BasePlayerGui é uma classe abstrata que todos os classos de armazenamento de desenhos de GUI herdam.
Resumo
Métodos
Retorna uma lista de todas as instâncias GuiObject ocupando o ponto dado na tela.
Propriedades
Métodos
GetGuiObjectsAtPosition
Toma uma posição na tela e retorna uma lista de todas as instâncias GuiObject que estão ocupando essa posição na tela, classificadas na ordem em que aparecem na tela, do topo ao fundo, respectivamente, como o primeiro e último índice, respectivamente.
O caso de uso principal é obter objetos GUI sob os botões do mouse ou toque do jogador para fazer coisas como permitir seleção ou destaques. Esses efeitos já podem ser alcançados usando GuiObject.MouseEnter e GuiObject.MouseLeave , mas isso requer que o desenvolvedor rastreie esses eventos para seus objetos de UI em todos os momentos, mesmo se eles só precisam dessas funções em
Como as crianças de BasePlayerGui herdam essa função, ela pode ser executada por objetos de classe, como os PlayerGui e StarterGui pastas.
Parâmetros
Devolução
Uma tabela das instâncias GuiObject que ocupam o espaço de tela dado.
Amostras de código
local UserInputService = game:GetService("UserInputService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
-- Create a Folder and ScreenGui to contain the highlight Frames
local highlights = Instance.new("Folder")
highlights.Name = "Highlights"
highlights.Parent = playerGui
local highlightsContainer = Instance.new("ScreenGui")
highlightsContainer.Name = "Container"
highlightsContainer.Parent = highlights
highlightsContainer.DisplayOrder = 99999
-- Creates a semi-transparent yellow Frame on top of the gui with the same AbsoluteSize and AbsolutePosition
local function highlightAsFrame(gui)
local highlight = Instance.new("Frame")
highlight.Name = "Highlight"
highlight.Parent = highlightsContainer
highlight.Size = UDim2.new(0, gui.AbsoluteSize.X, 0, gui.AbsoluteSize.Y)
highlight.Position = UDim2.new(0, gui.AbsolutePosition.X, 0, gui.AbsolutePosition.Y)
highlight.BackgroundColor3 = Color3.fromRGB(255, 255, 10) -- Yellow
highlight.BackgroundTransparency = 0.75
highlight.BorderSizePixel = 0
highlight.LayoutOrder = gui.LayoutOrder - 1
end
-- Use GetGuiObjectsAtPosition to get and highlight all GuiObjects at the input's position
local function highlightGui(input, _gameProcessed)
local pos = input.Position
local guisAtPosition = playerGui:GetGuiObjectsAtPosition(pos.X, pos.Y)
highlightsContainer:ClearAllChildren()
for _, gui in ipairs(guisAtPosition) do
if gui:IsA("GuiObject") then
highlightAsFrame(gui)
end
end
end
-- Fire highlightGui on InputBegan if input is of type MouseButton1 of Touch
local function InputBegan(input, gameProcessed)
local inputType = input.UserInputType
local touch = Enum.UserInputType.Touch
local mouse1 = Enum.UserInputType.MouseButton1
if inputType == touch or inputType == mouse1 then
highlightGui(input, gameProcessed)
end
end
UserInputService.InputBegan:Connect(InputBegan)