GuiObject

Pokaż przestarzałe

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Brak możliwości tworzenia
Brak możliwości przeglądania

GuiObject jest abstraktną klasą (tak jak BasePart ) dla obiektu interfejsu użytkownika 2D

Aby manipulować układem obiektów GUI w szczególny sposób, możesz użyć struktury układu, takiej jak lista/felks lub koszyk, a możesz stylować je poza ich podstawowymi właściwościami poprzez modyfikatory wyglądu.

Chociaż możliwe jest wykrywanie wydarzeń przycisku myszy na dowolnym obiekcie GUI używając InputBegan i InputEnded, tylko ImageButton i 1>

Podsumowanie

Właściwości

Właściwości odziedziczeni z: GuiBase2d

Metody

Zdarzenia

Zdarzenia odziedziczeni z: GuiBase2d

Właściwości

Active

Odczyt równoległy

Ta właściwość określa, czy ten GuiObject będzie zatapiał wejście do przestrzeni 3D, tak jak podstawowe modele z klasą ClickDetector taką jak DragDetector. Innymi słowy, jeśli gracz próbuje kliknąć na detektorze za pomocą myszy, UI zablokuje wejście, aby dotrzeć do

Dla obiektów GuiButton (ImageButton i Class.TextButton</

Przykłady kodu

TextButton Active Debounce

-- Place this LocalScript within a TextButton (or ImageButton)
local textButton = script.Parent
textButton.Text = "Click me"
textButton.Active = true
local function onActivated()
-- This acts like a debounce
textButton.Active = false
-- Count backwards from 5
for i = 5, 1, -1 do
textButton.Text = "Time: " .. i
task.wait(1)
end
textButton.Text = "Click me"
textButton.Active = true
end
textButton.Activated:Connect(onActivated)

AnchorPoint

Odczyt równoległy

Właściwość AnchorPoint określa punkt pochodzenia GuiObject , w odniesieniu do jego wielkości absolutnej. Właściwość GuiObject.Position określa, z którego pochodzi element (przez 1> Class.GuiObject.Position1> ) i z którego rozszerzenie 4> Class.GuiObj.Size4> zostanie wykonane.

Zobacz tutaj dla ilustrowanych diagramów i szczegółów.

Przykłady kodu

AnchorPoint Demo

local guiObject = script.Parent
while true do
-- Top-left
guiObject.AnchorPoint = Vector2.new(0, 0)
guiObject.Position = UDim2.new(0, 0, 0, 0)
task.wait(1)
-- Top
guiObject.AnchorPoint = Vector2.new(0.5, 0)
guiObject.Position = UDim2.new(0.5, 0, 0, 0)
task.wait(1)
-- Top-right
guiObject.AnchorPoint = Vector2.new(1, 0)
guiObject.Position = UDim2.new(1, 0, 0, 0)
task.wait(1)
-- Left
guiObject.AnchorPoint = Vector2.new(0, 0.5)
guiObject.Position = UDim2.new(0, 0, 0.5, 0)
task.wait(1)
-- Dead center
guiObject.AnchorPoint = Vector2.new(0.5, 0.5)
guiObject.Position = UDim2.new(0.5, 0, 0.5, 0)
task.wait(1)
-- Right
guiObject.AnchorPoint = Vector2.new(1, 0.5)
guiObject.Position = UDim2.new(1, 0, 0.5, 0)
task.wait(1)
-- Bottom-left
guiObject.AnchorPoint = Vector2.new(0, 1)
guiObject.Position = UDim2.new(0, 0, 1, 0)
task.wait(1)
-- Bottom
guiObject.AnchorPoint = Vector2.new(0.5, 1)
guiObject.Position = UDim2.new(0.5, 0, 1, 0)
task.wait(1)
-- Bottom-right
guiObject.AnchorPoint = Vector2.new(1, 1)
guiObject.Position = UDim2.new(1, 0, 1, 0)
task.wait(1)
end

AutomaticSize

Odczyt równoległy

Ten parametr jest używany do automatycznego rozmiaru obiektów interfejsu użytkownika na podstawie rozmiaru jego potomnych obiektów. Możesz użyć tego parametru, aby dynamicznie dodać tekst i inne treści do obiektu interfejsu użytkownika podczas edytowania lub uruchamiania, a rozmiar zostanie dostosowany do tego treści.

Gdy AutomaticSize jest ustawiony na wartość Enum.AutomaticSize do czegokolwiek innego niż None, ten obiekt interfejsu może się skalować w zależności od jego treści dzieci.

Dla więcej informacji o tym, jak używać tej właściwości i jak działa, tutaj .

Przykłady kodu

LocalScript in a ScreenGui

-- Array of text labels/fonts/sizes to output
local labelArray = {
{ text = "Lorem", font = Enum.Font.Creepster, size = 50 },
{ text = "ipsum", font = Enum.Font.IndieFlower, size = 35 },
{ text = "dolor", font = Enum.Font.Antique, size = 55 },
{ text = "sit", font = Enum.Font.SpecialElite, size = 65 },
{ text = "amet", font = Enum.Font.FredokaOne, size = 40 },
}
-- Create an automatically-sized parent frame
local parentFrame = Instance.new("Frame")
parentFrame.AutomaticSize = Enum.AutomaticSize.XY
parentFrame.BackgroundColor3 = Color3.fromRGB(90, 90, 90)
parentFrame.Size = UDim2.fromOffset(25, 100)
parentFrame.Position = UDim2.fromScale(0.1, 0.1)
parentFrame.Parent = script.Parent
-- Add a list layout
local listLayout = Instance.new("UIListLayout")
listLayout.Padding = UDim.new(0, 5)
listLayout.Parent = parentFrame
-- Set rounded corners and padding for visual aesthetics
local roundedCornerParent = Instance.new("UICorner")
roundedCornerParent.Parent = parentFrame
local uiPaddingParent = Instance.new("UIPadding")
uiPaddingParent.PaddingTop = UDim.new(0, 5)
uiPaddingParent.PaddingLeft = UDim.new(0, 5)
uiPaddingParent.PaddingRight = UDim.new(0, 5)
uiPaddingParent.PaddingBottom = UDim.new(0, 5)
uiPaddingParent.Parent = parentFrame
for i = 1, #labelArray do
-- Create an automatically-sized text label from array
local childLabel = Instance.new("TextLabel")
childLabel.AutomaticSize = Enum.AutomaticSize.XY
childLabel.Size = UDim2.fromOffset(75, 15)
childLabel.Text = labelArray[i]["text"]
childLabel.Font = labelArray[i]["font"]
childLabel.TextSize = labelArray[i]["size"]
childLabel.TextColor3 = Color3.new(1, 1, 1)
childLabel.Parent = parentFrame
-- Visual aesthetics
local roundedCorner = Instance.new("UICorner")
roundedCorner.Parent = childLabel
local uiPadding = Instance.new("UIPadding")
uiPadding.PaddingTop = UDim.new(0, 5)
uiPadding.PaddingLeft = UDim.new(0, 5)
uiPadding.PaddingRight = UDim.new(0, 5)
uiPadding.PaddingBottom = UDim.new(0, 5)
uiPadding.Parent = childLabel
task.wait(2)
end

BackgroundColor3

Odczyt równoległy

Ten właściwość określa kolor tła GuiObject (kolor wypełnienia). Jeśli twój element zawiera tekst, takich jak TextBox , TextButton lub 1> Class.TextLabel1>, upewnij się, że kolor tła kontrastuje z kolorem tekstu.

Kolejną właściwością, która określa właściwości wizualne tła, jest GuiObject.BackgroundTransparency ; jeśli ta wartość jest ustawiona na 1, zarówno tło, jak i końcowy nie zostaną renderowane.

Zobacz również BorderColor3 .

Przykłady kodu

Rainbow Frame

-- Put this code in a LocalScript in a Frame
local frame = script.Parent
while true do
for hue = 0, 255, 4 do
-- HSV = hue, saturation, value
-- If we loop from 0 to 1 repeatedly, we get a rainbow!
frame.BorderColor3 = Color3.fromHSV(hue / 256, 1, 1)
frame.BackgroundColor3 = Color3.fromHSV(hue / 256, 0.5, 0.8)
task.wait()
end
end

BackgroundTransparency

Odczyt równoległy

Właściwość ta określa przejrzystość tła i granicy GuiObject . Nie określa jednak przejrzystości tekstu, jeśli GUI jest TextBox, Class.TextButton

Jeśli ta właściwość jest ustawiona na 1, ani tło, ani rama nie będą się renderować, a tło GUI będzie całkowicie przejrzyste.

BorderColor3

Odczyt równoległy

Określa kolor GuiObject pрямоści (także znany jako kolor kredki). Jest to osobne od obiektu GuiObject.BackgroundColor3 . Nie będziesz w stanie zobaczyć granicy obiektu, jeśli jego właściwość GuiObject.BorderSizePixel jest ustawiona na 2>02>.

Uwaga, że komponent UIStroke pozwala na bardziej zaawansowane efekty graniczne.

Przykłady kodu

Button Highlight

-- Put me inside some GuiObject, preferrably an ImageButton/TextButton
local button = script.Parent
local function onEnter()
button.BorderSizePixel = 2
button.BorderColor3 = Color3.new(1, 1, 0) -- Yellow
end
local function onLeave()
button.BorderSizePixel = 1
button.BorderColor3 = Color3.new(0, 0, 0) -- Black
end
-- Connect events
button.MouseEnter:Connect(onEnter)
button.MouseLeave:Connect(onLeave)
-- Our default state is "not hovered"
onLeave()

BorderMode

Odczyt równoległy

To właściwość określa, w jaki sposób GuiObject border jest rozdzielony względem jego wymiarów, używając menu nazwy Enum.BorderMode.

Uwaga, że UIStroke może przejść nad tym właściwości i umożliwić bardziej zaawansowane efekty graniczne.

BorderSizePixel

Odczyt równoległy

Ta właściwość określa, jak szeroko renderuje się GuiObject granica, w pikselach. Ustawienie tego na 0 wyłącza całkowicie granicę.

Uwaga, że UIStroke może przejść nad tym właściwości i umożliwić bardziej zaawansowane efekty graniczne.

Przykłady kodu

Button Highlight

-- Put me inside some GuiObject, preferrably an ImageButton/TextButton
local button = script.Parent
local function onEnter()
button.BorderSizePixel = 2
button.BorderColor3 = Color3.new(1, 1, 0) -- Yellow
end
local function onLeave()
button.BorderSizePixel = 1
button.BorderColor3 = Color3.new(0, 0, 0) -- Black
end
-- Connect events
button.MouseEnter:Connect(onEnter)
button.MouseLeave:Connect(onLeave)
-- Our default state is "not hovered"
onLeave()

ClipsDescendants

Odczyt równoległy

Ten parametr określa, czy GuiObject będzie przycinać (nie widoczne) dowolną część elementów GUI pochodzących, która w innym przypadku renderuje się poza obszarem prostopadłości.

Uwaga, że GuiObject.Rotation nie jest wspierane przez tę właściwość. Jeśli ten lub dowolny poprzedni GUI ma nie zeroGuiObject.Rotation, ta właściwość jest 2>ignorowana2> i elementy GUI potomnych będą renderowane bez względu na wartość tej właściwości.

Tylko do odczytu
Bez replikacji
Odczyt równoległy

Gdy palec gracza jest przytrzymywany i trzymany na <

Interactable

Odczyt równoległy

Określa, czy GuiButton może być zainterakcjonowany z lub nie, lub czy GuiState z GuiObject zmienia się lub nie.

Na GuiButton :

  • Gdy ustawienie Interactable na GuiButton ustawione na false false , 2>Class.GuiButton2> nie będzie już można nacisnąć lub kliknąć, a 5>Class.GuiObject.Gui
  • Gdy ustawienie Interactable na GuiButton ustawione na true, 2>Class.GuiButton2> zachowa się normalnie ponownie i 5>Class.GuiObject.GuiState|GuiState5> zachowa się normalnie.

Na GuiObject :

  • Gdy ustawienie Interactable na GuiButton ustawione na false false , ustawienie 2>Class.GuiObject.GuiState|GuiState2> będzie ustawione na 5>5> .
  • Gdy ustawienie Interactable na GuiButton ustawione na true, zachowanie 2>Class.GuiObject.GuiState|GuiState2> będzie zachować się normalnie ponownie.

LayoutOrder

Odczyt równoległy

Właściwość kontroluje kolejność sortowania GuiObject przy użyciu UIGridStyleLayout (takiego jak UIListLayout lub 2>Class.UIPageLayout2>,) z ustawieniem 5>Class

GuiObjects są sortowane w rosnącej kolejności, w której niższe wartości mają priorytet nad wyższymi wartościami. Objekty z równymi wartościami zwracają się do rzędu, w którym zostały dodane.

Jeśli nie jesteś pewien, czy będziesz musiał dodać element między dwoma istniejącymi elementami w przyszłości, to dobrym praktyki jest używanie wielu 100 (0 , 100 , 1> 2001> itp.). Dzięki temu zapewnia dużą

Zobacz również ZIndex, który określa kolej renderowania obiektu zamiast sortować kolejność.

NextSelectionDown

Odczyt równoległy

Ta właściwość ustawia GuiObject wybraną, gdy użytkownik porusza selektor gamepad w dół. Jeśli ta właściwość jest pusta, poruszanie gamepadu w dół nie zmieni wybranego interfejsu.

Przenieś selektor gamepadu w dół, aby ustawić GuiService.SelectedObject na ten obiekt, chyba że GUI nie jest Selectable . Uwaga, że ta właściwość może być ustawiona na element GUI nawet jeśli nie jest Selectable, więc

Zobacz również NextSelectionUp, NextSelectionLeft i NextSelectionRight.

Przykłady kodu

Creating a Gamepad Selection Grid

-- Setup the Gamepad selection grid using the code below
local container = script.Parent:FindFirstChild("Container")
local grid = container:GetChildren()
local rowSize = container:FindFirstChild("UIGridLayout").FillDirectionMaxCells
for _, gui in pairs(grid) do
if gui:IsA("GuiObject") then
local pos = gui.Name
-- Left edge
gui.NextSelectionLeft = container:FindFirstChild(pos - 1)
-- Right edge
gui.NextSelectionRight = container:FindFirstChild(pos + 1)
-- Above
gui.NextSelectionUp = container:FindFirstChild(pos - rowSize)
-- Below
gui.NextSelectionDown = container:FindFirstChild(pos + rowSize)
end
end
-- Test the Gamepad selection grid using the code below
local GuiService = game:GetService("GuiService")
local UserInputService = game:GetService("UserInputService")
GuiService.SelectedObject = container:FindFirstChild("1")
function updateSelection(input)
if input.UserInputType == Enum.UserInputType.Keyboard then
local key = input.KeyCode
local selectedObject = GuiService.SelectedObject
if not selectedObject then
return
end
if key == Enum.KeyCode.Up then
if not selectedObject.NextSelectionUp then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Down then
if not selectedObject.NextSelectionDown then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Left then
if not selectedObject.NextSelectionLeft then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Right then
if not selectedObject.NextSelectionRight then
GuiService.SelectedObject = selectedObject
end
end
end
end
UserInputService.InputBegan:Connect(updateSelection)

NextSelectionLeft

Odczyt równoległy

Ta właściwość ustawia GuiObject wybraną, gdy użytkownik porusza selektor gamepad po lewej stronie. Jeśli ta właściwość jest pusta, poruszanie gamepadu po lewej stronie nie zmieni wybranego interfejsu.

Przenieśnik wyboru sterowania na lewo ustawia GuiService.SelectedObject na ten obiekt, chyba że GUI nie jest Selectable . Uwaga, że ta właściwość może być ustawiona na element GUI nawet jeśli nie jest Selectable, więc upe

Zobacz również NextSelectionUp , NextSelectionDown i NextSelectionRight .

Przykłady kodu

Creating a Gamepad Selection Grid

-- Setup the Gamepad selection grid using the code below
local container = script.Parent:FindFirstChild("Container")
local grid = container:GetChildren()
local rowSize = container:FindFirstChild("UIGridLayout").FillDirectionMaxCells
for _, gui in pairs(grid) do
if gui:IsA("GuiObject") then
local pos = gui.Name
-- Left edge
gui.NextSelectionLeft = container:FindFirstChild(pos - 1)
-- Right edge
gui.NextSelectionRight = container:FindFirstChild(pos + 1)
-- Above
gui.NextSelectionUp = container:FindFirstChild(pos - rowSize)
-- Below
gui.NextSelectionDown = container:FindFirstChild(pos + rowSize)
end
end
-- Test the Gamepad selection grid using the code below
local GuiService = game:GetService("GuiService")
local UserInputService = game:GetService("UserInputService")
GuiService.SelectedObject = container:FindFirstChild("1")
function updateSelection(input)
if input.UserInputType == Enum.UserInputType.Keyboard then
local key = input.KeyCode
local selectedObject = GuiService.SelectedObject
if not selectedObject then
return
end
if key == Enum.KeyCode.Up then
if not selectedObject.NextSelectionUp then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Down then
if not selectedObject.NextSelectionDown then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Left then
if not selectedObject.NextSelectionLeft then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Right then
if not selectedObject.NextSelectionRight then
GuiService.SelectedObject = selectedObject
end
end
end
end
UserInputService.InputBegan:Connect(updateSelection)

NextSelectionRight

Odczyt równoległy

Ta właściwość ustawia GuiObject wybraną, gdy użytkownik przesuwa selektor gamepad na prawo. Jeśli ta właściwość jest pusta, przesuwanie gamepadu na prawo nie zmieni wybranego interfejsu.

Przenieś sektor gamepad'a do prawej strony, aby ustawić GuiService.SelectedObject na ten obiekt, chyba że GUI nie jest Selectable. Uwaga, że ta właściwość może być ustawiona na element GUI nawet jeśli nie jest Selectable, więc upewn

Zobacz również NextSelectionUp , NextSelectionDown i NextSelectionLeft.

Przykłady kodu

Creating a Gamepad Selection Grid

-- Setup the Gamepad selection grid using the code below
local container = script.Parent:FindFirstChild("Container")
local grid = container:GetChildren()
local rowSize = container:FindFirstChild("UIGridLayout").FillDirectionMaxCells
for _, gui in pairs(grid) do
if gui:IsA("GuiObject") then
local pos = gui.Name
-- Left edge
gui.NextSelectionLeft = container:FindFirstChild(pos - 1)
-- Right edge
gui.NextSelectionRight = container:FindFirstChild(pos + 1)
-- Above
gui.NextSelectionUp = container:FindFirstChild(pos - rowSize)
-- Below
gui.NextSelectionDown = container:FindFirstChild(pos + rowSize)
end
end
-- Test the Gamepad selection grid using the code below
local GuiService = game:GetService("GuiService")
local UserInputService = game:GetService("UserInputService")
GuiService.SelectedObject = container:FindFirstChild("1")
function updateSelection(input)
if input.UserInputType == Enum.UserInputType.Keyboard then
local key = input.KeyCode
local selectedObject = GuiService.SelectedObject
if not selectedObject then
return
end
if key == Enum.KeyCode.Up then
if not selectedObject.NextSelectionUp then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Down then
if not selectedObject.NextSelectionDown then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Left then
if not selectedObject.NextSelectionLeft then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Right then
if not selectedObject.NextSelectionRight then
GuiService.SelectedObject = selectedObject
end
end
end
end
UserInputService.InputBegan:Connect(updateSelection)

NextSelectionUp

Odczyt równoległy

Ta właściwość ustawia GuiObject wybraną, gdy użytkownik przesuwa selektor gamepad w górę. Jeśli ta właściwość jest pusta, przesuwanie gamepadu w górę nie zmieni wybranego GUI.

Przenieś selektor gamepad'a w górę, aby ustawić GuiService.SelectedObject na ten obiekt, chyba że GUI nie jest Selectable. Uwaga, że ta właściwość może być ustawiona na element GUI nawet jeśli nie jest Selectable, więc upewnij się,

Zobacz również NextSelectionDown, NextSelectionLeft, NextSelectionRight .

Przykłady kodu

Creating a Gamepad Selection Grid

-- Setup the Gamepad selection grid using the code below
local container = script.Parent:FindFirstChild("Container")
local grid = container:GetChildren()
local rowSize = container:FindFirstChild("UIGridLayout").FillDirectionMaxCells
for _, gui in pairs(grid) do
if gui:IsA("GuiObject") then
local pos = gui.Name
-- Left edge
gui.NextSelectionLeft = container:FindFirstChild(pos - 1)
-- Right edge
gui.NextSelectionRight = container:FindFirstChild(pos + 1)
-- Above
gui.NextSelectionUp = container:FindFirstChild(pos - rowSize)
-- Below
gui.NextSelectionDown = container:FindFirstChild(pos + rowSize)
end
end
-- Test the Gamepad selection grid using the code below
local GuiService = game:GetService("GuiService")
local UserInputService = game:GetService("UserInputService")
GuiService.SelectedObject = container:FindFirstChild("1")
function updateSelection(input)
if input.UserInputType == Enum.UserInputType.Keyboard then
local key = input.KeyCode
local selectedObject = GuiService.SelectedObject
if not selectedObject then
return
end
if key == Enum.KeyCode.Up then
if not selectedObject.NextSelectionUp then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Down then
if not selectedObject.NextSelectionDown then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Left then
if not selectedObject.NextSelectionLeft then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Right then
if not selectedObject.NextSelectionRight then
GuiService.SelectedObject = selectedObject
end
end
end
end
UserInputService.InputBegan:Connect(updateSelection)

Position

Odczyt równoległy

To właściwość określa piksel GuiObject i pozycję skalarową używającą UDim2. Pozycja jest skoncentrowana wokół obiektu GuiObject.AnchorPoint.

Pozycja skalar jest względna wielkości rodzicielskiego elementu GUI, jeśli jest jakakolwiek.

Pikselowe części wartości UDim2 są tych samych niezależnie od rozmiarów głównego interfejsu. Wartości przedstawiają pozycję obiektu w pikselach. Aktualna pozycja pikselowa obiektu można odczytać z właściwości GuiBase2d.AbsolutePosition.

Rotation

Odczyt równoległy

Ta właściwość określa liczbę stopni, w których obrócony jest GuiObject. Obroty są względne do centrum obiektu, nie do Class.GuiObject.AnchorPoint|AnchorPoint , co oznacza, że nie można zmienić punktu obrotu. Dodatkowo, ta właściwość nie jest

Selectable

Odczyt równoległy

To właściwość określa, czy GuiObject można zaznaczyć podczas przeglądania interfejsów używając gamepadu.

Jeśli ta właściwość jest prawdziwa, można wybrać interfejs graficzny. Wybór interfejsu graficznego ustawia również właściwość GuiService.SelectedObject dla tego obiektu.

Gdy to jest fałszywe, GUI nie może być wybrane. Jakość ustawiona na fałszywą, gdy GUI jest wybrane, nie będzie go odczytywać ani zmieniać wartości właściwości GuiService.SelectedObject.

Dodaj GuiObject.SelectionGained i GuiObject.SelectionLost, aby nie zadano ognia dla elementu. Aby anulować wyboru GuiObjektu, musisz zmienić właściwość GuiService.SelectedObject.

Właściwość ta jest przydatna, jeśli GUI jest połączony z kilku GUI za pośrednictwem właściwości takich jak ta GuiObject.NextSelectionUp, GuiObject.NextSelectionDown, <

Przykłady kodu

Limiting TextBox Selection

local GuiService = game:GetService("GuiService")
local textBox = script.Parent
local function gainFocus()
textBox.Selectable = true
GuiService.SelectedObject = textBox
end
local function loseFocus(_enterPressed, _inputObject)
GuiService.SelectedObject = nil
textBox.Selectable = false
end
-- The FocusLost and FocusGained event will fire because the textBox
-- is of type TextBox
textBox.Focused:Connect(gainFocus)
textBox.FocusLost:Connect(loseFocus)

SelectionImageObject

Odczyt równoległy

Ta właściwość przejmuje ozdobę domyślnej selekcji używanej na gamepadach.

Uwaga: wybrany SelectionImageObject nakłada się na wybrany GuiObject z wielkością Size obiektu. Dla najlepszych wyników, powinieneś rozmiarować niestandardowy 2>SelectionImageObject2> za pośrednictwem skali 5>Datatype.

Zmiana SelectionImageObject za GuiObject element wpływa tylko na ten element. Aby wpływać na wszystkie elementy GUI użytkownika, ustaw właściwość PlayerGui.SelectionImageObject.

Aby zidentyfikować lub ustawić, którego elementu GUI użytkownik wybiera, można użyć właściwości GuiService.SelectedObject. Gracz używa gamepada, aby wybrać różne elementy GUI, wzywając <

SelectionOrder

Odczyt równoległy

GuiObjects z niższym SelectionOrder są wybierane wcześniej niż GuiObjects z wyższym SelectionOrder podczas uruchamiania gamepad selekcji lub wezwania GuiService:Select() na przodku. Ta wartość nie wpływa na nawigację kierunkową. Domyślna wartość to 0.

Size

Odczyt równoległy

To właściwość określa rozmiar skalary GuiObject i rozmiar piksela UDim2 używając Datatype.UDim2.

Rozmiar skalowy jest stosunkowo wielki w stosunku do rozmiaru głównego elementu GUI, jeśli jest jakakolwiek.

Pikselowe części wartości UDim2 są tych samych niezależnie od rozmiarów głównego interfejsu. Wartości przedstawiają rozmiar obiektu w pikselach. Rozmiar obiektu można czytać z właściwości GuiBase2d.AbsoluteSize.

Jeśli GuiObject ma rodzic, jego rozmiar w każdym wymiarze jest również wpływany przez SizeConstraint rodzica.

Przykłady kodu

Health Bar

local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- Paste script into a LocalScript that is
-- parented to a Frame within a Frame
local frame = script.Parent
local container = frame.Parent
container.BackgroundColor3 = Color3.new(0, 0, 0) -- black
-- This function is called when the humanoid's health changes
local function onHealthChanged()
local human = player.Character.Humanoid
local percent = human.Health / human.MaxHealth
-- Change the size of the inner bar
frame.Size = UDim2.new(percent, 0, 1, 0)
-- Change the color of the health bar
if percent < 0.1 then
frame.BackgroundColor3 = Color3.new(1, 0, 0) -- black
elseif percent < 0.4 then
frame.BackgroundColor3 = Color3.new(1, 1, 0) -- yellow
else
frame.BackgroundColor3 = Color3.new(0, 1, 0) -- green
end
end
-- This function runs is called the player spawns in
local function onCharacterAdded(character)
local human = character:WaitForChild("Humanoid")
-- Pattern: update once now, then any time the health changes
human.HealthChanged:Connect(onHealthChanged)
onHealthChanged()
end
-- Connect our spawn listener; call it if already spawned
player.CharacterAdded:Connect(onCharacterAdded)
if player.Character then
onCharacterAdded(player.Character)
end

SizeConstraint

Odczyt równoległy

Ten właściwość ustawia Size osi, na których będzie opierała się GuiObject , w stosunku do rozmiarów jego ojca.

Ta właściwość jest przydatna do tworzenia obiektów GUI, które są przeznaczone do skalowania z wysokością lub szerokości obiektu rodzica, ale nie obu, co skutecznie zachowuje stosunek aspektu obiektu.

Transparency

Ukryte
Bez replikacji
Odczyt równoległy

Mieszana własność BackgroundTransparency i TextTransparency .

Visible

Odczyt równoległy

Czy właściwość, czy GuiObject i jego potomstwo zostaną renderowane.

Renderowanie poszczególnych komponentów GuiObject można kontrolować indywidualnie poprzez właściwości przejrzystości, takie jak GuiObject.BackgroundTransparency, TextLabel.TextTransparency i 2>Class.ImageLabel.ImageTransparency2>.

Gdy ta właściwość jest false , GuiObject zostanie ignorowany przez struktury layoutu, takie jak UIListLayout , 1> Class.UIGridLayout1> i 4> Class.UITableLayout4>. Innymi słowy, przestrzeń, którą element zajmowałby w innym przypadku w stru

Przykłady kodu

UI Window

local gui = script.Parent
local window = gui:WaitForChild("Window")
local toggleButton = gui:WaitForChild("ToggleWindow")
local closeButton = window:WaitForChild("Close")
local function toggleWindowVisbility()
-- Flip a boolean using the `not` keyword
window.Visible = not window.Visible
end
toggleButton.Activated:Connect(toggleWindowVisbility)
closeButton.Activated:Connect(toggleWindowVisbility)

ZIndex

Odczyt równoległy

To właściwość określa kolejność, w której GuiObject renderuje w stosunku do innych.

Domyślnie, GuiObjects renderuje się w rosnącej kolejności priorytetu, w której ci, którzy mają niższe wartości ZIndex , są renderowani pod tymi, którzy mają wyższe wartości. Możesz zmienić kolejno

Jeśli nie jesteś pewien, czy będziesz musiał dodać element między dwoma istniejącymi elementami w przyszłości, to dobrym praktyki jest używanie wielu 100 (0 , 100 , 1> 2001> itp.). Dzięki temu zapewnia duż

Zobacz również LayoutOrder, który kontroluje sortowanie porządku w GuiObject przy użyciu struktury układu takiej jak 2> Class.UIListLayout2> lub 5> Class.UIGridLayout5>.

Metody

TweenPosition

Płynnie przesuwa GUI do nowej pozycji UDim2 w określonym czasie używając określonego Enum.EasingDirection i Enum.EasingStyle.

Funkcja ta będzie zwracać, czy gra tween. Nie będzie grać, jeśli inny tween działa na GuiObject i parametr przejścia jest fałszywy.

Zobacz również:

Parametry

endPosition: UDim2

Gdzie GUI powinien się poruszać.

easingDirection: Enum.EasingDirection

Kierunek, w którym łatwiej jest dostosować GUI do końcowej pozycji pozycja końcowa.

Wartość domyślna: "Out"
easingStyle: Enum.EasingStyle

Styl, w którym łatwo przenieść GUI do końcowej pozycji.

Wartość domyślna: "Quad"
time: number

Jak długo, w sekundach, tween powinien się zakończyć.

Wartość domyślna: 1
override: bool

Czy ulepszenie będzie nadrukować bieżące ulepszenie.

Wartość domyślna: false
callback: function

Funkcja zwrotu dzwonka do wykonania, gdy ukończy się dziecko.

Wartość domyślna: "nil"

Zwroty

Czy gra na tweenie będzie grać.

Przykłady kodu

Tween a GUI's Position

local START_POSITION = UDim2.new(0, 0, 0, 0)
local GOAL_POSITION = UDim2.new(1, 0, 1, 0)
local guiObject = script.Parent
local function callback(state)
if state == Enum.TweenStatus.Completed then
print("The tween completed uninterrupted")
elseif state == Enum.TweenStatus.Canceled then
print("Another tween cancelled this one")
end
end
-- Initialize the GuiObject position, then start the tween:
guiObject.Position = START_POSITION
local willPlay = guiObject:TweenPosition(
GOAL_POSITION, -- Final position the tween should reach
Enum.EasingDirection.In, -- Direction of the easing
Enum.EasingStyle.Sine, -- Kind of easing to apply
2, -- Duration of the tween in seconds
true, -- Whether in-progress tweens are interrupted
callback -- Function to be callled when on completion/cancelation
)
if willPlay then
print("The tween will play")
else
print("The tween will not play")
end

TweenSize

Płynnie skala GUI do nowego UDim2 w określonym czasie przy użyciu określonego Enum.EasingDirection i Enum.EasingStyle.

Funkcja ta będzie zwracać, czy graćtween. Normalnie zawsze będzie to true, ale będzie zwracać false, jeśli inny tween jest aktywny i ustawiono na fałszywy.

Zobacz również:

Parametry

endSize: UDim2

Rozmiar, który GUI powinien skalować.

easingDirection: Enum.EasingDirection

Kierunek, w którym łatwiej jest dostosować GUI do rozmiaru końcowego.

Wartość domyślna: "Out"
easingStyle: Enum.EasingStyle

Styl, w którym łatwo dostosuj GUI do rozmiaru końcowego.

Wartość domyślna: "Quad"
time: number

Jak długo, w sekundach, tween powinien się zakończyć.

Wartość domyślna: 1
override: bool

Czy ulepszenie będzie nadrukować bieżące ulepszenie.

Wartość domyślna: false
callback: function

Funkcja zwrotu dzwonka do wykonania, gdy ukończy się dziecko.

Wartość domyślna: "nil"

Zwroty

Czy gra na tweenie będzie grać.

Przykłady kodu

Tween a GuiObject's Size

local guiObject = script.Parent
local function callback(didComplete)
if didComplete then
print("The tween completed successfully")
else
print("The tween was cancelled")
end
end
local willTween = guiObject:TweenSize(
UDim2.new(0.5, 0, 0.5, 0), -- endSize (required)
Enum.EasingDirection.In, -- easingDirection (default Out)
Enum.EasingStyle.Sine, -- easingStyle (default Quad)
2, -- time (default: 1)
true, -- should this tween override ones in-progress? (default: false)
callback -- a function to call when the tween completes (default: nil)
)
if willTween then
print("The GuiObject will tween")
else
print("The GuiObject will not tween")
end

TweenSizeAndPosition

Smoothly resizes and moves a GUI to a new UDim2 size and position in the specified time using the specified Enum.EasingDirection and Enum.EasingStyle .

Funkcja ta będzie zwracać, czy graćtween. Normalnie zawsze będzie to true, ale będzie zwracać false, jeśli inny tween jest aktywny i ustawiono na fałszywy.

Zobacz również:

Parametry

endSize: UDim2

Rozmiar, który GUI powinien skalować.

endPosition: UDim2

Gdzie GUI powinien się poruszać.

easingDirection: Enum.EasingDirection

Kierunek, w którym łatwiej jest dostosować GUI do rozmiaru końcowego i pozycji końcowej.

Wartość domyślna: "Out"
easingStyle: Enum.EasingStyle

Styl, w którym łatwiej jest dostosować GUI do rozmiaru końca i pozycji końca.

Wartość domyślna: "Quad"
time: number

Jak długo, w sekundach, tween powinien się zakończyć.

Wartość domyślna: 1
override: bool

Czy ulepszenie będzie nadrukować bieżące ulepszenie.

Wartość domyślna: false
callback: function

Funkcja zwrotu dzwonka do wykonania, gdy ukończy się dziecko.

Wartość domyślna: "nil"

Zwroty

Czy gra na tweenie będzie grać.

Przykłady kodu

Tween a GUI's Size and Position

local frame = script.Parent.Frame
frame:TweenSizeAndPosition(UDim2.new(0, 0, 0, 0), UDim2.new(0, 0, 0, 0))

Zdarzenia

InputBegan

Ten ewent zostanie uruchomiony, gdy użytkownik zacznie interagować z GuiObject za pośrednictwem urządzenia interfejsu człowiek-komputer (przycisk myszy, dotknięcie początku, klawiatura dotknięcia itp).

Class.UserInputService ma podobne nazwane wydarzenie, które nie jest ograniczone do określonego elementu interfejsu użytkownika: UserInputService.InputBegan .

Ten ewent zawsze się zakończy, niezależnie od stanu gry.

Zobacz również:

Parametry

Class.InputObject, który zawiera użyteczne dane do zapytania użytkownika o wejście, takie jak type of input , state of input i 1>Class.InputObj.Position|kontrolery ekranu1> .


Przykłady kodu

Tracking the Beginning of Input on a GuiObject

-- In order to use the InputBegan event, you must specify the GuiObject
local gui = script.Parent
-- A sample function providing multiple usage cases for various types of user input
local function inputBegan(input)
if input.UserInputType == Enum.UserInputType.Keyboard then
print("A key is being pushed down! Key:", input.KeyCode)
elseif input.UserInputType == Enum.UserInputType.MouseButton1 then
print("The left mouse button has been pressed down at", input.Position)
elseif input.UserInputType == Enum.UserInputType.MouseButton2 then
print("The right mouse button has been pressed down at", input.Position)
elseif input.UserInputType == Enum.UserInputType.Touch then
print("A touchscreen input has started at", input.Position)
elseif input.UserInputType == Enum.UserInputType.Gamepad1 then
print("A button is being pressed on a gamepad! Button:", input.KeyCode)
end
end
gui.InputBegan:Connect(inputBegan)

InputChanged

Ten wąż pojawia się, gdy użytkownik zmienia sposób interakcji za pośrednictwem urządzenia interfejsu człowiek-komputer (przycisk myszy, początek dotyku, klawiatura, itp).

Class.UserInputService ma wydarzenie o nazwie UserInputService.InputChanged, które nie jest ograniczone do określonego elementu interfejsu użytkownika: Class.UserInputService.

Ten ewent zawsze się zakończy, niezależnie od stanu gry.

Zobacz również:

Parametry

Class.InputObject, który zawiera użyteczne dane do zapytania użytkownika o wejście, takie jak type of input , state of input i 1>Class.InputObj.Position|kontrolery ekranu1> .


Przykłady kodu

GuiObject InputChanged Demo

local UserInputService = game:GetService("UserInputService")
local gui = script.Parent
local function printMovement(input)
print("Position:", input.Position)
print("Movement Delta:", input.Delta)
end
local function inputChanged(input)
if input.UserInputType == Enum.UserInputType.MouseMovement then
print("The mouse has been moved!")
printMovement(input)
elseif input.UserInputType == Enum.UserInputType.MouseWheel then
print("The mouse wheel has been scrolled!")
print("Wheel Movement:", input.Position.Z)
elseif input.UserInputType == Enum.UserInputType.Gamepad1 then
if input.KeyCode == Enum.KeyCode.Thumbstick1 then
print("The left thumbstick has been moved!")
printMovement(input)
elseif input.KeyCode == Enum.KeyCode.Thumbstick2 then
print("The right thumbstick has been moved!")
printMovement(input)
elseif input.KeyCode == Enum.KeyCode.ButtonL2 then
print("The pressure being applied to the left trigger has changed!")
print("Pressure:", input.Position.Z)
elseif input.KeyCode == Enum.KeyCode.ButtonR2 then
print("The pressure being applied to the right trigger has changed!")
print("Pressure:", input.Position.Z)
end
elseif input.UserInputType == Enum.UserInputType.Touch then
print("The user's finger is moving on the screen!")
printMovement(input)
elseif input.UserInputType == Enum.UserInputType.Gyro then
local _rotInput, rotCFrame = UserInputService:GetDeviceRotation()
local rotX, rotY, rotZ = rotCFrame:toEulerAnglesXYZ()
local rot = Vector3.new(math.deg(rotX), math.deg(rotY), math.deg(rotZ))
print("The rotation of the user's mobile device has been changed!")
print("Position", rotCFrame.p)
print("Rotation:", rot)
elseif input.UserInputType == Enum.UserInputType.Accelerometer then
print("The acceleration of the user's mobile device has been changed!")
printMovement(input)
end
end
gui.InputChanged:Connect(inputChanged)

InputEnded

Wydarzenie InputEnded występuje, gdy użytkownik przestaje interagować za pośrednictwem urządzenia interfejsu człowiek-komputer (przycisk myszy, dotknięcie rozpoczęcia, klawiatura dotknięcia itp).

Class.UserInputService ma wydarzenie o nazwie UserInputService.InputEnded, które nie jest ograniczone do określonego elementu interfejsu użytkownika: Class.UserInputService.

Ten ewent zawsze się zakończy, niezależnie od stanu gry.

Zobacz również:

Parametry

Class.InputObject, który zawiera użyteczne dane do zapytania użytkownika o wejście, takie jak type of input , state of input i 1>Class.InputObj.Position|kontrolery ekranu1> .


Przykłady kodu

Tracking the End of Input on a GuiObject

-- In order to use the InputChanged event, you must specify a GuiObject
local gui = script.Parent
-- A sample function providing multiple usage cases for various types of user input
local function inputEnded(input)
if input.UserInputType == Enum.UserInputType.Keyboard then
print("A key has been released! Key:", input.KeyCode)
elseif input.UserInputType == Enum.UserInputType.MouseButton1 then
print("The left mouse button has been released at", input.Position)
elseif input.UserInputType == Enum.UserInputType.MouseButton2 then
print("The right mouse button has been released at", input.Position)
elseif input.UserInputType == Enum.UserInputType.Touch then
print("A touchscreen input has been released at", input.Position)
elseif input.UserInputType == Enum.UserInputType.Gamepad1 then
print("A button has been released on a gamepad! Button:", input.KeyCode)
end
end
gui.InputEnded:Connect(inputEnded)

MouseEnter

Wydarzenie MouseEnter zostanie uruchomione, gdy użytkownik przeniesie swoją myszkę do elementu GUI .

Proszę nie polegać na argumentach x i y przekazanych przez ten wątek jako sposób bezpieczny, aby określić, gdzie jest myszka, gdy wchodzi do GUI. Te koordynaty mogą się różnić nawet, gdy myszka wchodzi do GUI poprzez ten sam kąt - szczególnie, gdy myszka szy

Ten wąż pojawia się nawet wtedy, gdy element GUI renderuje pod innym elementem.

Jeśli chcesz śledzić, kiedy myszka użytkownika opuści element GUI, możesz użyć wydarzenia GuiObject.MouseLeave.

Zobacz również:

Parametry

Koordynata x wierzchołkowego pixela myши w stosunku do lewego górnego rogu ekranu.

Koordynata pionowa myszki w pikselach w stosunku do górnego lewego kąta ekranu.


Przykłady kodu

Printing where a Mouse Enters a GuiObject

local guiObject = script.Parent
guiObject.MouseEnter:Connect(function(x, y)
print("The user's mouse cursor has entered the GuiObject at position", x, ",", y)
end)

MouseLeave

Wydarzenie MouseLeave występuje, gdy użytkownik porusza myszką poza GUI elementem.

Proszę nie polegać na argumentach x i y przekazanych przez ten wątek jako sposób bezpieczny, aby określić, gdzie jest myszka, gdy opuszcza GUI. Te koordynaty mogą się różnić nawet, gdy myszka opuszcza GUI za pomocą tego samego krawędzi - szczególnie, gdy mysz

Ten wąż pojawia się nawet wtedy, gdy element GUI renderuje pod innym elementem.

Zobacz również:

Parametry

Koordynata x wierzchołkowego pixela myши w stosunku do lewego górnego rogu ekranu.

Koordynata pionowa myszki w pikselach w stosunku do górnego lewego kąta ekranu.


MouseMoved

Występuje za każdym razem, gdy użytkownik porusza myszką, gdy jest w GUI element. Jest to podobne do Mouse.Move, który występuje bez względu na to, czy myszka jest nad elementem GUI.

Uwaga, to wydarzenie zostanie uruchomione, gdy pozycja myszy zostanie zaktualizowana, więc będzie ono się powtarzać podczas ruchu.

Arгуenty x i y wskazują aktualne koordynaty ekranu użytkownika w pikselach. Te mogą być użyteczne do określenia lokalizacji myszy na GUI, ekranie i zmiany, ponieważ poprzednia pozycja myszy, jeśli jest śledzona w globalnej zmiennej, może być użyteczna do określenia lokalizacji myszy.

Poniżej pokazano, jak określić Vector2 przesunięcie myszy w stosunku do elementu GUI:


local CustomScrollingFrame = script.Parent
local SubFrame = CustomScrollingFrame:FindFirstChild("SubFrame")
local mouse = game.Players.LocalPlayer:GetMouse()
function getPosition(X, Y)
local gui_X = CustomScrollingFrame.AbsolutePosition.X
local gui_Y = CustomScrollingFrame.AbsolutePosition.Y
local pos = Vector2.new(math.abs(X - gui_X), math.abs(Y - gui_Y - 36))
print(pos)
end
CustomScrollingFrame.MouseMoved:Connect(getPosition)

Uwaga, że ten wydarzenie może nie zostać uruchomiony dokładnie, gdy myszka użytkownika wchodzi lub wychodzi z elementu GUI. Dlatego argumenty x i y mogą nie pasować dokładnie do koordynat krawędzi GUI.

Zobacz również:

Parametry

Koordynata x wierzchołkowego pixela myши w stosunku do lewego górnego rogu ekranu.

Koordynata pionowa myszki w pikselach w stosunku do górnego lewego kąta ekranu.


MouseWheelBackward

Wydarzenie WheelBackward pojawia się, gdy użytkownik przesuwa myszką na boku, gdy myszka jest nad GUI elementem. Jest to podobne do Mouse.WheelBackward, które wszystkie w razie potrzeby.

Ten wąż po prostu uruchamia się jako wskaźnik ruchu tyłowego koła. Oznacza to, że argumenty x i y koordynatów myши nie zmieniają się w wyniku tego wąża. Te koordynaty zmieniają się tylko, gdy myszka się porusza, co może być śledzone przez wydarzenie GuiObject.MouseMoved.

Zobacz również:

Parametry

Koordynata x wierzchołkowego pixela myши w stosunku do lewego górnego rogu ekranu.

Koordynata pionowa myszki w pikselach w stosunku do górnego lewego kąta ekranu.


MouseWheelForward

Wydarzenie WheelForward włącza się, gdy użytkownik przesuwa myszkę na przód, gdy myszka jest nad GUI elementem. Jest to podobne do Mouse.WheelForward, który włącza się, niezależnie czy myszka jest nad elementem GUI.

Ten wąż po prostu uruchamia się jako wskazówka na przesunięcie koła. Oznacza to, że argumenty x i y koordynatów myши nie zmieniają się w wyniku tego wąża. Te koordynaty zmieniają się tylko, gdy myszka się porusza, co można śledzić za pośrednictwem wydarzenia GuiObject.MouseMoved.

Zobacz również:

Parametry

Koordynata x wierzchołkowego pixela myши w stosunku do lewego górnego rogu ekranu.

Koordynatę y myszy użytkownika.


SelectionGained

Ten wążek zdarzeń wyświetla się, gdy Gamepad Selector zaczyna skupiać się na GuiObject .

Jeśli chcesz sprawdzić z Gamepad wybierać zatrzymania skupione na elementze GUI, możesz użyć wydarzenia GuiObject.SelectionLost.

Gdy pojedynczy element wybiera się w trybie skupienia uwagi, wartość właściwości SelectedObject zmienia się również w zależności od tego, którego element wybiera się. Aby określić, który pojedynczy element wybiera się, sprawdź wartość tej właściwości.


Przykłady kodu

Handling GUI Selection Gained

local guiObject = script.Parent
local function selectionGained()
print("The user has selected this button with a gamepad.")
end
guiObject.SelectionGained:Connect(selectionGained)

SelectionLost

Ten wążdź się pojawia, gdy Gamepad Selector przestaje skupiać się na GUI .

Jeśli chcesz sprawdzić z Gamepad wybiera początek skupienia się na elementze GUI, możesz użyć wydarzenia GuiObject.SelectionGained.

Gdy GUI traci skupienie uwagi, wartość właściwości SelectionObject zmienia się albo na nil, albo na element GUI, który zyska skupienie uwagi. Aby określić, która GUI uzyskała selekcję, lub czy żadna GUI nie zostanie wybrana, sprawdź wartość tej właściwości.


Przykłady kodu

Handling GUI Selection Lost

local guiObject = script.Parent
local function selectionLost()
print("The user no longer has this selected with their gamepad.")
end
guiObject.SelectionLost:Connect(selectionLost)

TouchLongPress

Wydarzenie TouchLongPress przyciąga po chwili, gdy gracz przytrzymuje palec na ekranie przy użyciu urządzeniez włączoną funkcją dotyku. Wystąpi

Ponieważ ten wątek wymaga tylko jednego palca, ten wątek można symulować w Studio używając emulatora i myszy.

Parametry

touchPositions: Array

Materiały Vector2, które opisują relatywne pozycje palców zaangażowanych w gest.

A Enum.UserInputState opisujący stan gestu:

  • Rozpocznij ognie w początku ruchu (po krótkim opóźnieniu)
  • Zmień ognie, jeśli gracz porusza palcem podczas naciskania
  • Kończ kursy pożarowe po końcu gestu, gdy uwolnią palca.

Przykłady kodu

Move UI Element with TouchLongPress

local frame = script.Parent
frame.Active = true
local dragging = false
local basePosition
local startTouchPosition
local borderColor3
local backgroundColor3
local function onTouchLongPress(touchPositions, state)
if state == Enum.UserInputState.Begin and not dragging then
-- Start a drag
dragging = true
basePosition = frame.Position
startTouchPosition = touchPositions[1]
-- Color the frame to indicate the drag is happening
borderColor3 = frame.BorderColor3
backgroundColor3 = frame.BackgroundColor3
frame.BorderColor3 = Color3.new(1, 1, 1) -- White
frame.BackgroundColor3 = Color3.new(0, 0, 1) -- Blue
elseif state == Enum.UserInputState.Change then
local touchPosition = touchPositions[1]
local deltaPosition = UDim2.new(
0,
touchPosition.X - startTouchPosition.X,
0,
touchPosition.Y - startTouchPosition.Y
)
frame.Position = basePosition + deltaPosition
elseif state == Enum.UserInputState.End and dragging then
-- Stop the drag
dragging = false
frame.BorderColor3 = borderColor3
frame.BackgroundColor3 = backgroundColor3
end
end
frame.TouchLongPress:Connect(onTouchLongPress)

TouchPan

Wydarzenie TouchPan aktywuje się, gdy gracz porusza palcem po obszarze UI używając urządzenia z włączonym urządzeniem dotykowym. Występuje to niedługo przed GuiObject.TouchSwipe , a nie występuje z GuiObject.TouchTap . To wydarzenie jest użyteczne do umożliwienia graczowi manipulacji pozy

Ten ewent wysyłany jest z tabelą Vector2, która opisuje relatywne pozycje ekranu palców zaangażowanych w gest. Ponadto, wysyłany jest wiele razy: Enum.UserInputState.Begin po krótkim opóźnieniu, Enum.UserInputState.Change kiedy gr

To wydarzenie nie może być symulowane w Studio używając emulatora i myszy; musisz mieć prawdziwy włączony urządzenie, aby go wystrzelić.

Parametry

touchPositions: Array

Luaowy wymiar Vector2 obiektów, każdy z nich pokazuje pozycję wszystkich palców zaangażowanych w gest.

totalTranslation: Vector2

Wskazuje, jak daleko poszła rękawiczka od swojego początkowego punktu.

velocity: Vector2

Wskazuje, jak szybko gest jest wykonany w każdym wymiarze.

Wskazuje na Enum.UserInputState gestu.


Przykłady kodu

Panning UI Element

local innerFrame = script.Parent
local outerFrame = innerFrame.Parent
outerFrame.BackgroundTransparency = 0.75
outerFrame.Active = true
outerFrame.Size = UDim2.new(1, 0, 1, 0)
outerFrame.Position = UDim2.new(0, 0, 0, 0)
outerFrame.AnchorPoint = Vector2.new(0, 0)
outerFrame.ClipsDescendants = true
local dragging = false
local basePosition
local function onTouchPan(_touchPositions, totalTranslation, _velocity, state)
if state == Enum.UserInputState.Begin and not dragging then
dragging = true
basePosition = innerFrame.Position
outerFrame.BackgroundTransparency = 0.25
elseif state == Enum.UserInputState.Change then
innerFrame.Position = basePosition + UDim2.new(0, totalTranslation.X, 0, totalTranslation.Y)
elseif state == Enum.UserInputState.End and dragging then
dragging = false
outerFrame.BackgroundTransparency = 0.75
end
end
outerFrame.TouchPan:Connect(onTouchPan)

TouchPinch

Wydarzenie TouchPinch aktywuje się, gdy gracz używa dwóch palców, aby wykonać kłódź lub pociągnąć gest na ekranie używając urządzenia z włączonym urządzeniem dotykowym. kłódź dzieje się, g

Ten ewent zostanie uruchomiony z tabelą Vector2, która opisuje relatywne pozycje ekranu palców zaangażowanych w gest. Ponadto, ewent ten zostanie uruchomiony wiele razy: Enum.UserInputState.Begin po kr

Ponieważ to wydarzenie wymaga co najmniej dwóch palców, nie jest możliwe, aby je symulować w Studio używając emulatora i myszy; musisz posiadać prawdziwy włączony urządzenie dotykowego.

Parametry

touchPositions: Array

Luaowy wymiar Vector2 obiektów, każdy z nich określa położenie wszystkich palców zaangażowanych w gest pęknięcia.

scale: number

Pływak, który pokazuje różnicę od początku ruchu.

velocity: number

Pływająca informacja o tym, jak szybko się dzieje ruch kciuk.

Wskazuje na Enum.UserInputState gestu.


Przykłady kodu

Pinch/Pull Scaling

local innerFrame = script.Parent
local outerFrame = innerFrame.Parent
outerFrame.BackgroundTransparency = 0.75
outerFrame.Active = true
outerFrame.Size = UDim2.new(1, 0, 1, 0)
outerFrame.Position = UDim2.new(0, 0, 0, 0)
outerFrame.AnchorPoint = Vector2.new(0, 0)
outerFrame.ClipsDescendants = true
local dragging = false
local uiScale = Instance.new("UIScale")
uiScale.Parent = innerFrame
local baseScale
local function onTouchPinch(_touchPositions, scale, _velocity, state)
if state == Enum.UserInputState.Begin and not dragging then
dragging = true
baseScale = uiScale.Scale
outerFrame.BackgroundTransparency = 0.25
elseif state == Enum.UserInputState.Change then
uiScale.Scale = baseScale * scale -- Notice the multiplication here
elseif state == Enum.UserInputState.End and dragging then
dragging = false
outerFrame.BackgroundTransparency = 0.75
end
end
outerFrame.TouchPinch:Connect(onTouchPinch)

TouchRotate

Wydarzenie TouchRotate następuje, gdy gracz używa dwóch palców, aby wykonać ruch pociągnięcia lub pociągnięcia na elementze UI używając urządzenia z włączonym urządzeniem dotykowym. Rotacja następuje, gdy kąt linii między dwoma palcami zmienia się. Ten wąż jest użyteczny do umożliwienia graczowi manipulacji rot

Ten ewent wysyłany jest z tabelą Vector2, która opisuje relatywne pozycje ekranu palców zaangażowanych w gest. Ponadto, wysyłany jest wiele razy: Enum.UserInputState.Begin po krótkim opóźnieniu, Enum.UserInputState.Change kiedy gr

Ponieważ to wydarzenie wymaga co najmniej dwóch palców, nie jest możliwe, aby być symulowanym w Studio za pomocą emulatora i myszy; musisz posiadać prawdziwy urządzeniewłączonej dotyku.

Parametry

touchPositions: Array

Luaowy wymiar Vector2 obiektów, każdy z nich pokazuje pozycję wszystkich palców zaangażowanych w gest.

rotation: number

Pływająca wskazówka pokazująca, ile rotacja poszła od początku gestu.

velocity: number

Pływający, który wskazuje, jak szybko gest jest wykonany.

Wskazuje na Enum.UserInputState gestu.


Przykłady kodu

Touch Rotation

local innerFrame = script.Parent
local outerFrame = innerFrame.Parent
outerFrame.BackgroundTransparency = 0.75
outerFrame.Active = true
outerFrame.Size = UDim2.new(1, 0, 1, 0)
outerFrame.Position = UDim2.new(0, 0, 0, 0)
outerFrame.AnchorPoint = Vector2.new(0, 0)
outerFrame.ClipsDescendants = true
local dragging = false
local baseRotation = innerFrame.Rotation
local function onTouchRotate(_touchPositions, rotation, _velocity, state)
if state == Enum.UserInputState.Begin and not dragging then
dragging = true
baseRotation = innerFrame.Rotation
outerFrame.BackgroundTransparency = 0.25
elseif state == Enum.UserInputState.Change then
innerFrame.Rotation = baseRotation + rotation
elseif state == Enum.UserInputState.End and dragging then
dragging = false
outerFrame.BackgroundTransparency = 0.75
end
end
outerFrame.TouchRotate:Connect(onTouchRotate)

TouchSwipe

Wydarzenie TouchSwipe pojawia się, gdy gracz wykonuje gest swipe na elementze UI używając urządzenia z włączonym urządzeniem dotykowym. Występuje z kierunkiem gestu (w górę, w dół, lewo lub prawo) i liczbą dotykowych punktów zaangażowanych w gest. Gesty swipe są często używane do zmiany zakładek w interfejsach mobilnych.

Ponieważ ten wątek wymaga tylko jednego palca, można go symulować w Studio używając emulatora i myszy.

Parametry

swipeDirection: Enum.SwipeDirection

A Enum.SwipeDirection wskazująca kierunek gestu wysuwania (w górę, w dół, lewo lub prawo).

numberOfTouches: number

Liczba punktów dotykowych zaangażowanych w gest (zwykle 1).


Przykłady kodu

Bouncing Color Picker

local frame = script.Parent
frame.Active = true
-- How far the frame should bounce on a successful swipe
local BOUNCE_DISTANCE = 50
-- Current state of the frame
local basePosition = frame.Position
local hue = 0
local saturation = 128
local function updateColor()
frame.BackgroundColor3 = Color3.fromHSV(hue / 256, saturation / 256, 1)
end
local function onTouchSwipe(swipeDir, _touchCount)
-- Change the BackgroundColor3 based on the swipe direction
local deltaPos
if swipeDir == Enum.SwipeDirection.Right then
deltaPos = UDim2.new(0, BOUNCE_DISTANCE, 0, 0)
hue = (hue + 16) % 255
elseif swipeDir == Enum.SwipeDirection.Left then
deltaPos = UDim2.new(0, -BOUNCE_DISTANCE, 0, 0)
hue = (hue - 16) % 255
elseif swipeDir == Enum.SwipeDirection.Up then
deltaPos = UDim2.new(0, 0, 0, -BOUNCE_DISTANCE)
saturation = (saturation + 16) % 255
elseif swipeDir == Enum.SwipeDirection.Down then
deltaPos = UDim2.new(0, 0, 0, BOUNCE_DISTANCE)
saturation = (saturation - 16) % 255
else
deltaPos = UDim2.new()
end
-- Update the color and bounce the frame a little
updateColor()
frame.Position = basePosition + deltaPos
frame:TweenPosition(basePosition, Enum.EasingDirection.Out, Enum.EasingStyle.Bounce, 0.7, true)
end
frame.TouchSwipe:Connect(onTouchSwipe)
updateColor()

TouchTap

Wydarzenie TouchTap pojawia się, gdy gracz wykonuje gest dotowania na elementze UI za pomocą urządzenia z włączonym urządzeniem dotowania (przycisk aktywowany). Gesty dotowania są szybkie pojedynczy dotyk bez jakiejkolwiek ruchu zaangażowanego

Ponieważ ten wątek wymaga tylko jednego palca, można go symulować w Studio używając emulatora i myszy.

Parametry

touchPositions: Array

Materiały Vector2, które opisują relatywne pozycje palców zaangażowanych w gest.


Przykłady kodu

Tap Transparency Toggle

local frame = script.Parent
frame.Active = true
local function onTouchTap()
-- Toggle background transparency
if frame.BackgroundTransparency > 0 then
frame.BackgroundTransparency = 0
else
frame.BackgroundTransparency = 0.75
end
end
frame.TouchTap:Connect(onTouchTap)