BasePlayerGui

顯示已棄用項目

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

無法建立

BasePlayerGui 是一個抽象類,繼承了所有 GUI 绘制存檔類。

屬性

方法

GetGuiObjectsAtPosition

Instances

取得一個屏幕位置並返回所有 GuiObject 例子,分別按照屏幕位置排名在前側和後側,以及第一和最後側分別是第一個和最後一個索引。

主要使用案例是在玩家的滑鼠或觸摸輸入下獲得 GUI 對象來做些事,例如允許選擇或強調。這些效果可以使用 GuiObject.MouseEnterGuiObject.MouseLeave 來達成,但這需要開發人員跟蹤這些事件,即使他們只需要此功能在特定情況下。

因為 BasePlayerGui 的子類別 inherit 此功能,因此可以由類對象如 PlayerGuiStarterGui 文件夾來啟動。

參數

Class.GuiService:GetGuiInset()|GuiInset 應用後,屏幕的 x 位置相對於左上角後。

Class.GuiService:GetGuiInset()|GuiInset 應用後,屏幕的 y 位置相對於左上角。


返回

Instances

Class.GuiObject 實例的表,佔用指定的屏幕區空間。

範例程式碼

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)

活動