BasePlayerGui

Tampilkan yang Tidak Digunakan Lagi

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Tidak Dapat Dibuat

BasePlayerGui adalah kelas abstrak yang semua kelas penyimpanan gambar GUI turun dari.

Properti

Metode

GetGuiObjectsAtPosition

Instances

Mengambil posisi layar dan mem返ikan daftar semua instansi GuiObject yang menempati posisi layar itu, diurutkan dalam urutan yang muncul di layar dari atas ke bawah sebagai indeks pertama dan terakhir, masing-masing.

Kasus penggunaan utama adalah untuk mendapatkan objek GUI di bawah input mouse atau sentuhan pemain untuk melakukan hal-hal seperti mengizinkan seleksi atau menyoroti.Efek ini sudah bisa dicapai menggunakan GuiObject.MouseEnter dan GuiObject.MouseLeave tetapi ini memerlukan pengembang untuk melacak peristiwa ini untuk objek UI mereka sepanjang waktu bahkan jika mereka hanya membutuhkan fungsi ini dalam situasi tertentu.

Karena kelas anak dari BasePlayerGui mewarisi fungsi ini, itu dapat dipecat oleh objek kelas seperti PlayerGui dan StarterGui folder.

Parameter

Posisi x di layar relatif terhadap sudut kiri atas setelah GuiInset diterapkan.

Nilai Default: ""

Posisi y di layar relatif terhadap sudut kiri atas setelah GuiInset diterapkan.

Nilai Default: ""

Memberikan nilai

Instances

Tabel instansi GuiObject yang menempati ruang layar yang diberikan.

Contoh Kode

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)

Acara