BasePlayerGui
*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.
The BasePlayerGui là một lớp tổng quát mà tất cả các lớp lưu trữ vẽ GUI thừa hưởng từ.
Tóm Tắt
Phương Pháp
Đã trả lại một danh sách các GuiObject instanese đang chiếm phần thời gian trên màn hình.
Thuộc Tính
Phương Pháp
GetGuiObjectsAtPosition
Lấy một vị trí màn hình và trả lại một danh sách các Class.GuiObject instances đang chiếm tỉ lệ thành phần trên màn hình đó, sắp xếp theo thứ tự từ trên xuống dưới như một danh sách đầu tiên và cuối cùng trên màn hình, tương tự như vậy.
Trường hợp sử dụng chính là để nhận được GUI objects dưới chuột hoặc các nút chạm để làm những điều như cho phép lựa chọn hoặc Highlight. Đây đã có thể được thực hiện bằng cách sử dụng GuiObject.MouseEnter và
Vì các lớp con của BasePlayerGui thừa hưởng chức năng này, nó có thể được kích hoạt bởi các đối tượng lớp như PlayerGui và StarterGui thư mục.
Tham Số
Lợi Nhuận
Một bảng các GuiObject instances that occupy the given screen space.
Mẫu mã
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)