BasePlayerGui

Hiển Thị Bản Đã Lỗi Thời

*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.

Không Thể Tạo

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ừ.

Thuộc Tính

Phương Pháp

GetGuiObjectsAtPosition

Instances

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ì 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ư PlayerGuiStarterGui thư mục.

Tham Số

Vị trí x trên màn hình so với góc trên cùng bên trái sau khi ứng dụng GuiInset .

Vị trí y trên màn hình so với góc trên cùng bên trái sau khi ứng dụng GuiInset .


Lợi Nhuận

Instances

Một bảng các GuiObject instances that occupy the given screen space.

Mẫu mã

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)

Sự Kiện