BasePlayerGui

Veraltete anzeigen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Nicht erstellbar

Die BasePlayerGui ist eine abstrakte Klasse, von der alle GUI-Zeichnungsklassen erben.

Eigenschaften

Methoden

GetGuiObjectsAtPosition

Instances

Nimmt eine Bildschirmposition ein und gibt eine Liste aller GuiObject Instanzen zurück, die diese Bildschirmposition belegen, sortiert in der Reihenfolge, in der sie auf dem Bildschirm erscheinen, von oben nach unten als erster und letzter Index, jeweils.

Der Hauptanwendungsfall ist es, GUI-Objekte unter der Maus oder dem Touch-Eingabefeld des Spieler:inzu erhalten, um Dinge wie die Bereitstellung der Auswahl oder das Highlighten zu tun. Diese Effekte können bereits mit GuiObject.MouseEnter und GuiObject.MouseLeave erzielt werden, aber dies erfordert den Entwickler, diese Ereignisse für seine UI-Objekte zu verfolgen, auch wenn sie nur in bestimmten Situ

Da die Kinderklassen von BasePlayerGui diese Funktion erben, kann sie von Klassenobjekten wie den PlayerGui und StarterGui Ordnern ausgeführt werden.

Parameter

Die x-Position auf dem Bildschirm in der oberen linken Ecke nach dem GuiInset ist angewendet.

Die y-Position auf dem Bildschirm in Bezug auf die oberste linke Ecke nach dem GuiInset ist angewendet.


Rückgaben

Instances

Eine Tabelle der GuiObject Instanzen, die den gegebenen Platzbelegen.

Code-Beispiele

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)

Ereignisse