BasePlayerGui

Pokaż przestarzałe

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Brak możliwości tworzenia

BasePlayerGui to abstrakcyjna klasa, od której wszystkie klasy przechowywania rysunków GUI dziedziczą.

Właściwości

Metody

GetGuiObjectsAtPosition

Instances

Bierze pozycję ekranu i zwraca listę wszystkich instancji, które zajmują tę pozycję ekranu, sortowaną według kolejności, w jakiej pojawiają się na ekranie od góry do dołu jako pierwszy i ostatni indeks, odpowiednio.

Głównym przypadkiem użycia jest uzyskanie obiektów GUI pod myszką lub dotknięciem gracza, aby wykonać rzeczy takie jak umożliwienie wyboru lub podświetlenia.Te efekty można już osiągnąć za pomocą GuiObject.MouseEnter i GuiObject.MouseLeave, ale wymaga to, aby programista śledził te wydarzenia dla swoich obiektów interfejsu użytkownika przez cały czas, nawet jeśli potrzebuje tylko tej funkcjonalności w określonych przypadkach.

Ponieważ dziecięce klasy BasePlayerGui dziedziczą tę funkcję, mogą być uruchamiane przez obiekty klas takie jak PlayerGui i StarterGui foldery.

Parametry

Pozycja x na ekranie względem lewego górnego rogu po zastosowaniu GuiInset jest zastosowana.

Wartość domyślna: ""

Pozycja y na ekranie względem lewego górnego rogu po zastosowaniu GuiInset jest zastosowana.

Wartość domyślna: ""

Zwroty

Instances

Tabela instancji GuiObject zajmujących dany obszar ekranu.

Przykłady kodu

All GUIs returned by BasePlayerGui:GetGuiObjectsAtPosition() are 'cloned' by the highlightAsFrame() local function, which creates a Frame GUI positioned on top of the specified GUI that is semi-transparent and the same GuiBase2d.AbsoluteSize and GuiBase2d.AbsolutePosition.

These highlights are added to the HighlightsContainer ScreenGui in the Highlight folder of the player's PlayerGui folder. Both are created by the code sample. All highlight GUIs are Instance:Destroy()ed every time highlightGui() executes.

Note that HighlightContainer's ScreenGui.DisplayOrder is 99999, a large number, so that it is unlikely any other GUI will render on top of the highlight GUIs.

Selecting GUIs at a Position

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)

Zdarzenia