GuiObject

Mostrar obsoleto

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

No creable
No explorable

GuiObject es una clase abstracta (mucho como BasePart ) para un objeto de interfaz de usuario de 2D. Def

Para manipular la disposición de los objetos GUI de manera especial, puede usar una estructura de diseño como lista / flex o cuadrícula, y puede estilarlos más allá de sus propiedades de núcleo a través de modificadores de apariencia .

Aunque es posible detectar los eventos de botón de cualquier objeto de GUI que se usan para detectar clics / presiones en cualquier objeto de GUI con el InputBegan y InputEnded, solo ImageButton y

Resumen

Propiedades

Propiedades heredados de GuiBase2d

Métodos

Eventos

Eventos heredados de GuiBase2d

Propiedades

Active

Leer paralelo

Esta propiedad determina si este GuiObject sumergirá la entrada en el espacio 3D, como los modelos subyacentes con una clase ClickDetector . En otras palabras, si el jugador intenta hacer clic en el detector con el mouse sobre un elemento de UI activo, la UI bloqueará la entrada de alcanzar el detector.

Para los objetos GuiButton ( ImageButton y TextButton

Muestras de código

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

Leer paralelo

La propiedad AnchorPoint determina el punto de origen de un GuiObject , en relación con su tamaño absoluto. La propiedad determina desde dónde se posiciona el elemento (a través de GuiObject.Position ) y desde dónde se expande el renderizado 1> Class.GuiObject.Size1>.

Vea aquí para los diagramas y detalles ilustrados.

Muestras de código

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

Leer paralelo

Esta propiedad se usa para ajustar automáticamente los objetos de la interfaz de usuario padre según el tamaño de sus descendientes. Puedes usar esta propiedad para agregar dinámicamente texto y otros elementos a un objeto de la interfaz de usuario en la edición o la ejecución, y el tamaño se ajustará para ajustar ese contenido.

Cuando AutomaticSize está configurado para un valor de Enum.AutomaticSize a cualquier otra cosa que no sea None, este objeto de interfaz de usuario puede reorganizarse dependiendo de su contenido de hijo.

Para obtener más información sobre cómo usar esta propiedad y cómo funciona, por favor aquí .

Muestras de código

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

Leer paralelo

Esta propiedad determina el color de un fondo de GuiObject (el color de relleno). Si su elemento contiene texto, como un TextBox , TextButton o 1> Class.TextLabel1> , asegúrese de que el color de su fondo contraste con el color del texto.

Otra propiedad que determina las propiedades visuales del fondo es GuiObject.BackgroundTransparency ; si esta configurada como 1 , ni el fondo ni la frontera se Renderizar.

También véase BorderColor3 .

Muestras de código

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

Leer paralelo

Esta propiedad determina la transparencia del fondo y la frontera del GuiObject ; sin embargo, no determina la transparencia del texto si el GUI es un TextBox, TextButton o 2>Class.Text

Si esta propiedad se establece a 1, tanto el fondo como la frontera no se renderizarán y el fondo de la GUI se hará completamente transparente.

BorderColor3

Leer paralelo

Determina el color del límite rectangular de GuiObject (también conocido como color de trazo). Esto se separa del objeto's GuiObject.BackgroundColor3 . No podrás ver el límite del objeto si su propiedad GuiObject.BorderSizePixel está configurada como 1> 01> .

Nota que el componente UIStroke permite efectos de bordes más avanzados.

Muestras de código

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

Leer paralelo

Esta propiedad determina de qué manera se distribuye el límite de la propiedad GuiObject en relación con sus dimensiones usando el índice del mismo nombre, Enum.BorderMode .

Nota que UIStroke puede anular esta propiedad y permitir efectos de bordes más avanzados.

BorderSizePixel

Leer paralelo

Esta propiedad determina la medida en que se renderiza el contorno de GuiObject en píxeles. Estableciendo esto en 0 desactiva el contorno por completo.

Nota que UIStroke puede anular esta propiedad y permitir efectos de bordes más avanzados.

Muestras de código

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

Leer paralelo

Esta propiedad determina si el GuiObject clip (haga invisible) cualquier parte de los elementos de GUI descendientes que de otra manera renderizarían fuera de los límites del rectángulo.

Nota que GuiObject.Rotation no es compatible con esta propiedad. Si esta o cualquier otro GUI de ancestral tiene un no-cero GuiObject.Rotation , esta propiedad se ignorará y los elementos de GUI descendientes se renderizarán independientemente del valor de esta propiedad.

Solo lectura
No replicado
Leer paralelo

Cuando el dedo del jugador se está toc

Interactable

Leer paralelo

Determina si el GuiButton se puede interactuar con o no, o si el GuiState del GuiObject está cambiando o no.

En un GuiButton :

  • Cuando la configuración de Interactable en el GuiButton establece en false, el 1> Class.GuiButton1> ya no podrá ser presionado o hecho clic, y el 4>
  • Cuando la configuración de Interactable en el GuiButton está configurada como true, el 1> Class.GuiButton1> se comportará normalmente de nuevo y el 4> Class.GuiObject.GuiState|GuiState4> se comportará normalmente.

En un GuiObject :

  • Cuando la configuración de Interactable en el GuiButton está configurada como false, la configuración de 2> Class.GuiObject.GuiState|GuiState2> se establecerá constantemente en 5> Class.GuiState.NonInteractable|NonInteractable5> .
  • Cuando la configuración de Interactable en el GuiButton está configurada como true, la 2>Class.GuiObject.GuiState|GuiState2> se comportará normalmente de nuevo.

LayoutOrder

Leer paralelo

Esta propiedad controla el orden de clasificación del GuiObject cuando se utiliza una UIGridStyleLayout (como UIListLayout o 2>Class.UIPageLayout2> ) con un 5>Class.UIGridStyleLayout.SortOrder|

GuiObjects están clasificados por orden ascendente donde los valores inferiores tienen prioridad sobre los valores superiores. Los objetos con valores iguales se restablecen a la orden en la que se agregaron.

Si no está seguro de que necesitará agregar un elemento entre dos elementos existentes en el futuro, es una buena práctica usar múltiples de 100 ( 0 , 100 , 1> 2001> , etc.). Esto garantiza una gran cantidad de valores de orden de diseño que puede usar para elementos ordenados en el tiempo.

También vea ZIndex que determina el orden de renderizado del objeto en lugar de ordenar el orden.

NextSelectionDown

Leer paralelo

Esta propiedad establece el GuiObject seleccionado cuando el usuario mueve el seleccionador de Class.Gui hacia abajo. Si esta propiedad está vacía, mover el Class.Gui hacia abajo no cambiará el Interfaz gráfica (o GUI)seleccionado.

Mover el seleccionador del gamepad hacia abajo establece el GuiService.SelectedObject a este objeto a menos que el GUI no esté Selectable . Nota que esta propiedad se puede configurar para un objeto de Interfaz gráfica (o GUI)incluso si no es Selectable, por lo que debe asegurarse de que el

También vea NextSelectionUp , NextSelectionLeft y NextSelectionRight .

Muestras de código

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

Leer paralelo

Esta propiedad establece el GuiObject seleccionado cuando el usuario mueve el seleccionador de gamepad a la izquierda. Si esta propiedad está vacía, mover el gamepad a la izquierda no cambiará el Interfaz gráfica (o GUI)seleccionado.

Mover el seleccionador del joystick al izquierdo establece el GuiService.SelectedObject a este objeto a menos que la GUI no esté Selectable . Nota que esta propiedad se puede configurar para un objeto de Interfaz gráfica (o GUI)incluso si no es Selectable, por lo que debe asegurarse de que el valor de la

También vea NextSelectionUp , NextSelectionDown y NextSelectionRight .

Muestras de código

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

Leer paralelo

Esta propiedad establece el GuiObject seleccionado cuando el usuario mueve el seleccionador de gamepad a la derecha. Si esta propiedad está vacía, mover el gamepad a la derecha no cambiará el Interfaz gráfica (o GUI)seleccionado.

Mover el seleccionador del joystick a la derecha establece el GuiService.SelectedObject a este objeto a menos que el GUI no esté Selectable . Nota que esta propiedad se puede configurar para un objeto del Interfaz gráfica (o GUI)incluso si no es Selectable, por lo que debe asegurarse

También vea NextSelectionUp , NextSelectionDown y NextSelectionLeft .

Muestras de código

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

Leer paralelo

Esta propiedad establece el GuiObject seleccionado cuando el usuario mueve el seleccionador de gamepad hacia arriba. Si esta propiedad está vacía, mover el gamepad hacia arriba no cambiará el Interfaz gráfica (o GUI)seleccionado.

Mover el seleccionador del gamepad hacia arriba establece el GuiService.SelectedObject a este objeto a menos que el GUI no esté Selectable . Nota que esta propiedad se puede configurar para un objeto de Interfaz gráfica (o GUI)incluso si no es Selectable, por lo que debe asegurarse de que el

También see NextSelectionDown , NextSelectionLeft , NextSelectionRight .

Muestras de código

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

Leer paralelo

Esta propiedad determina la posición de píxeles y escalares de GuiObject usando un UDim2 . La posición está centrada alrededor de la posición del objeto GuiObject.AnchorPoint .

La posición escalar es relativa a la capacidad de la GUI padre, si la hubiere.

Las partes de píxel del valor UDim2 son las mismas independientemente del tamaño de la interfaz de usuario padre. Los valores representan la posición del objeto en píxeles. La posición real del objeto puede ser leída desde la propiedad GuiBase2d.AbsolutePosition.

Rotation

Leer paralelo

Esta propiedad determina el número de grados en que se gira el GuiObject. La rotación es relativa a la centro del objeto, no es el 2>Class.GuiObject.AnchorPoint|AnchorPoint2>, lo que significa que no puede cambiar el punto de rotación. Además, esta propiedad no es compatible con

Selectable

Leer paralelo

Esta propiedad determina si el GuiObject se puede seleccionar cuando se navega por los GUI al usar un controlador para juego.

Si esta propiedad es cierta, se puede seleccionar un GUI. Seleccionar un GUI también establece la propiedad GuiService.SelectedObject a ese objeto.

Cuando esto es falso, el GUI no se puede seleccionar. Sin embargo, establecer esto como falso cuando se selecciona un GUI no lo deseleccionará ni cambiará el valor de la propiedad GuiService.SelectedObject.

Añadir GuiObject.SelectionGained y GuiObject.SelectionLost no disparará para el elemento. Para deseleccionar un GuiObject, debes cambiar la propiedad GuiService.SelectedObject .

Esta propiedad es útil si se conecta un Interfaz gráfica (o GUI)a varios GUI a través de propiedades como esta GuiObject.NextSelectionUp , GuiObject.NextSelectionDown , Class.GuiObject|NextSelectionRight</

Muestras de código

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

Leer paralelo

Esta propiedad anula el adorno de selección predeterminado que se usa para los gamepads.

Tenga en cuenta que el elegido SelectionImageObject superpone el seleccionado GuiObject con el tamaño Size de la imagen. Para los mejores resultados, debe escalar el personalizado 1> SelectionImageObject1> a través de los valores de escala Datatype.UDim2 para ay

Cambiar el SelectionImageObject por un elemento GuiObject solo afecta ese elemento. Para afectar todos los elementos de GUI de un usuario, establece la propiedad PlayerGui.SelectionImageObject.

Para determinar o establecer qué elemento de GUI es seleccionado por el usuario, puede usar la propiedad GuiService.SelectedObject. El jugador usa el gamepad para seleccionar diferentes elementos de GUI, invocando el Class.GuiObject.NextSelectionUp|

SelectionOrder

Leer paralelo

GuiObjects con una menor Orden de Selección se selecciona antes que GuiObjects con una Orden de Selección más alta cuando se inicia la selección del gamepad o se llama a GuiService:Select() en un ancestral. Esta propiedad no afecta la navegación direccional. El valor predeterminado es 0.

Size

Leer paralelo

Esta propiedad determina el tamaño de escala y el tamaño de píxeles de GuiObject usando un UDim2 .

El tamaño de escalar es relativo al tamaño del elemento GUI padre, si lo hay.

Las partes de píxel del valor UDim2 son las mismas independientemente del tamaño de la interfaz de usuario padre. Los valores representan el tamaño del objeto en píxeles. El tamaño real del píxel del objeto se puede leer de la propiedad GuiBase2d.AbsoluteSize .

Si el GuiObject tiene un padre, su tamaño a lo largo de cada eje también se ve afectado por el límite de tamaño de su padre SizeConstraint .

Muestras de código

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

Leer paralelo

Esta propiedad establece los Size ejes que se basarán en el, relativos al tamaño de su padre.

Esta propiedad es útil para crear objetos GUI que están destinados a escalar con el ancho o altura de un objeto padre, pero no ambos, efectivamente preservando la proporción de aspecto del objeto.

Transparency

Oculto
No replicado
Leer paralelo

Una propiedad mixta de BackgroundTransparency y TextTransparency .

Visible

Leer paralelo

Esta propiedad, tanto el GuiObject y sus descendientes serán renderizados.

El rendimiento de componentes individuales de un GuiObject se puede controlar individualmente a través de propiedades de transparencia como GuiObject.BackgroundTransparency , TextLabel.TextTransparency y 1> Class.ImageLabel.ImageTransparency1> .

Cuando esta propiedad sea false, el GuiObject será ignorado por estructuras de layout como UIListLayout, 1> Class.UIGridLayout1> y 4> Class.UITableLayout4>. En otras palabras, el espacio que el elemento ocuparía en la configuración de la estructura se usa por otros elementos en su lugar

Muestras de código

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

Leer paralelo

Esta propiedad determina el orden en que se renderiza un GuiObject en relación con los demás.

Por defecto, GuiObjects render en orden de prioridad ascendente donde aquellos con valores inferiores a ZIndex son renderizados por aquellos con valores más altos. Puedes cambiar el orden de renderizado dentro de un ScreenGui, <

Si no está seguro de que necesitará agregar un elemento entre dos elementos existentes en el futuro, es una buena práctica usar múltiples de 100 (0 ,100 ,1> 2001> , etc.). Esto garantiza una gran cantidad de valores de render de rendimiento que puede usar para elementos en capas entre otros

También vea LayoutOrder que controla el orden de ordenar de un GuiObject cuando se usa con una estructura de layout como 1> Class.UIListLayout1> o 4> Class.UIGridLayout4> .

Métodos

TweenPosition

Mueve con suavidad un GUI a una nueva posición UDim2 en el tiempo especificado usando el especificado Enum.EasingDirection y Enum.EasingStyle .

Esta función devolverá si la animación se jugar. No se reproducirá si otra animación está actuando en el GuiObject y el parámetro de sobrepaso es falso.

Véase también:

Parámetros

endPosition: UDim2

A dónde debería moverse la GUI.

easingDirection: Enum.EasingDirection

La dirección en la que se facilita el GUI para el posición final .

Valor predeterminado: "Out"
easingStyle: Enum.EasingStyle

El estilo en el que se facilita el GUI para el posición final .

Valor predeterminado: "Quad"
time: number

Cuánto tiempo, en segundos, debería tomar el tween para completarse.

Valor predeterminado: 1
override: bool

Si el tween se anulará un intermediación/interpolación de movimientoen progreso.

Valor predeterminado: false
callback: function

Una función de llamada para ejecutarse cuando se complete el tween.

Valor predeterminado: "nil"

Devuelve

Si el tween jugará.

Muestras de código

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

Ajusta lentamente un GUI a un nuevo Datatype.UDim2 en el tiempo especificado usando el Enmarque.Ease especificado y el Enmarque.Ease estilo.

Esta función devolverá si la transición jugará. Por lo general, esto siempre devolverá true, pero devolverá false si otra transición está activa y se ha establecido el modo de anulación.

Véase también:

Parámetros

endSize: UDim2

El tamaño que debería redimensionarel GUI.

easingDirection: Enum.EasingDirection

La dirección en la que se facilita el GUI para el tamaño final .

Valor predeterminado: "Out"
easingStyle: Enum.EasingStyle

El estilo en el que se facilita el GUI para el tamaño final .

Valor predeterminado: "Quad"
time: number

Cuánto tiempo, en segundos, debería tomar el tween para completarse.

Valor predeterminado: 1
override: bool

Si el tween se anulará un intermediación/interpolación de movimientoen progreso.

Valor predeterminado: false
callback: function

Una función de llamada para ejecutarse cuando se complete el tween.

Valor predeterminado: "nil"

Devuelve

Si el tween jugará.

Muestras de código

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 resize y mueve una GUI a una nueva Datatype.UDim2 -tamaño y posición en el tiempo especificado usando el especificado UDim2 y Enum.EasingDirection .

Esta función devolverá si la transición jugará. Por lo general, esto siempre devolverá true, pero devolverá false si otra transición está activa y se ha establecido el modo de anulación.

Véase también:

Parámetros

endSize: UDim2

El tamaño que debería redimensionarel GUI.

endPosition: UDim2

A dónde debería moverse la GUI.

easingDirection: Enum.EasingDirection

La dirección en la que se facilita el GUI a la escala de tamaño y posición de final .

Valor predeterminado: "Out"
easingStyle: Enum.EasingStyle

El estilo en el que facilitar la GUI al tamaño final y posición final .

Valor predeterminado: "Quad"
time: number

Cuánto tiempo, en segundos, debería tomar el tween para completarse.

Valor predeterminado: 1
override: bool

Si el tween se anulará un intermediación/interpolación de movimientoen progreso.

Valor predeterminado: false
callback: function

Una función de llamada para ejecutarse cuando se complete el tween.

Valor predeterminado: "nil"

Devuelve

Si el tween jugará.

Muestras de código

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))

Eventos

InputBegan

Este evento se activa cuando un usuario comienza a interactuar con el GuiObject a través de un dispositivo de interfaz humana-ordenador (botón de ratón, toque comienzo, botón de teclado, etc).

El UserInputService tiene un evento de nombre similar que no está restringido a un elemento de UI específico: UserInputService.InputBegan .

Este evento siempre se activará independientemente del estado del juego.

Véase también:

Parámetros

Un InputObject , que contiene datos útiles para la consulta de la entrada del usuario, como el type of input , state of input y 1> Class.InputObjeto.Position|坐标 de la pantalla de la entrada1> .


Muestras de código

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

Este evento se activa cuando un usuario cambia cómo interactúa a través de un dispositivo de interfaz humana-ordenador (botón de ratón, toque comienzo, botón de teclado, etc).

El UserInputService tiene un evento de nombre similar que no está restringido a un elemento de UI específico: UserInputService.InputChanged .

Este evento siempre se activará independientemente del estado del juego.

Véase también:

Parámetros

Un InputObject , que contiene datos útiles para la consulta de la entrada del usuario, como el type of input , state of input y 1> Class.InputObjeto.Position|坐标 de la pantalla de la entrada1> .


Muestras de código

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

El evento Terminado de entrada se activa cuando un usuario deja de interactuar a través de un dispositivo de interfaz humana-ordenador (botón de ratón, toque comienzo, botón de teclado, etc).

El UserInputService tiene un evento de nombre similar que no está restringido a un elemento de UI específico: UserInputService.InputEnded .

Este evento siempre se activará independientemente del estado del juego.

Véase también:

Parámetros

Un InputObject , que contiene datos útiles para la consulta de la entrada del usuario, como el type of input , state of input y 1> Class.InputObjeto.Position|坐标 de la pantalla de la entrada1> .


Muestras de código

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

El evento MouseEnter se activa cuando un usuario mueve su mouse hacia un elemento GUI .

Por favor, no confíe en los argumentos x y y pasados por este evento como una forma fiable de determinar dónde se encuentra el mouse cuando ingresa a un Interfaz gráfica (o GUI). Estas coordenadas pueden cambiar incluso cuando el mouse ingresa al Interfaz gráfica (o GUI)a través del mismo borde - particularmente cuando el mouse ingresa al elemento rápidamente. Esto se debe a que los argumentos indican la posición del mouse cuando el

Este evento se activa incluso cuando el elemento GUI se renderiza debajo de otro elemento.

Si desea rastrear cuando el mouse de un usuario deja un elemento de GUI, puede usar el evento GuiObject.MouseLeave.

Véase también:

Parámetros

La x coordenada de la pantalla en píxeles, relativa a la esquina superior izquierda de la pantalla.

La coordenada de la pantalla del ratónen píxeles, relativa a la esquina superior izquierda de la pantalla.


Muestras de código

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

El evento MouseLeave se activa cuando un usuario mueve su mouse fuera de un elemento GUI .

Por favor, no confíe en los argumentos x y y pasados por este evento como una forma fiable de determinar dónde se encuentra el mouse cuando se va de un Interfaz gráfica (o GUI). Estas coordenadas pueden cambiar incluso cuando el mouse se va del Interfaz gráfica (o GUI)a través del mismo borde - particularmente cuando el mouse se va del elemento rápidamente. Esto se debe a que los argumentos indican la posición del mouse cuando el

Este evento se activa incluso cuando el elemento GUI se renderiza debajo de otro elemento.

Véase también:

Parámetros

La x coordenada de la pantalla en píxeles, relativa a la esquina superior izquierda de la pantalla.

La coordenada de la pantalla del ratónen píxeles, relativa a la esquina superior izquierda de la pantalla.


MouseMoved

Dispara cuando el usuario mueve el mouse mientras está dentro de un elemento GUI . Es similar a Mouse.Move, que dispara independientemente de si el mouse del usuario está sobre un elemento GUI.

Nota, este evento se activa cuando se actualiza la posición del ratón, por lo tanto, se activará repetidamente mientras se mueve.

Los argumentos x y y indican las coordenadas de pantalla actualizadas del mouse del usuario en píxeles. Estos pueden ser útiles para determinar la ubicación del ratónen la Interfaz gráfica (o GUI), la pantalla y la Delta si el ratónestá siendo rastreado en una variable global.

El código a continuación demuestra cómo determinar el desplazamiento de Vector2 del mouse del usuario en relación con un elemento 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)

Nota que este evento puede no disparar exactamente cuando el mouse del usuario ingresa o sale de un elemento de GUI. Por lo tanto, los argumentos x y y pueden no coincidir perfectamente con las coordenadas de los límites del Interfaz gráfica (o GUI).

Véase también:

Parámetros

La x coordenada de la pantalla en píxeles, relativa a la esquina superior izquierda de la pantalla.

La coordenada de la pantalla del ratónen píxeles, relativa a la esquina superior izquierda de la pantalla.


MouseWheelBackward

El evento WheelBackward se activa cuando un usuario desplaza su rueda de ratón hacia atrás cuando el mouse está sobre un elemento de GUI. Es similar a GUI, que se activa independientemente de si el mouse del usuario está sobre un elemento de GUI.

Este evento se activa simplemente como una indicación del movimiento hacia atrás del rueda. Esto significa que los argumentos de x y y de los coordenadas de mouse no cambian como resultado de este evento. Estas coordenadas solo cambian cuando el mouse se mueve, lo que se puede rastrear con el evento GuiObject.MouseMoved.

Véase también:

Parámetros

La x coordenada de la pantalla en píxeles, relativa a la esquina superior izquierda de la pantalla.

La coordenada de la pantalla del ratónen píxeles, relativa a la esquina superior izquierda de la pantalla.


MouseWheelForward

El evento WheelForward se activa cuando un usuario desplaza su rueda del mouse hacia delante cuando el mouse está sobre un elemento de GUI. Es similar a GUI, que se activa independientemente de si el usuario tiene el mouse sobre un elemento GUI.

Este evento se activa simplemente como una indicación de la dirección del movimiento del rueda. Esto significa que los argumentos de x y y de los coordenadas de mover el mouse no cambian como resultado de este evento. Estas coordenadas solo cambian cuando el mouse se mueve, lo que se puede rastrear con el evento GuiObject.MouseMoved.

Véase también:

Parámetros

La x coordenada de la pantalla en píxeles, relativa a la esquina superior izquierda de la pantalla.

La y coordenada del ratóndel usuario.


SelectionGained

Este evento se activa cuando el seleccionador de Gamepad comienza a enfocarse en el GuiObject .

Si desea verificar desde el Gamepad selecciona detenerse en el elemento GUI, puede usar el evento GuiObject.SelectionLost .

Cuando un GUI gana enfoque de selección, el valor de la propiedad SelectedObject también cambia a la que gana en selección. Para determinar qué GUI ganó en selección, verifique el valor de esta propiedad.


Muestras de código

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

Este evento se activa cuando el GamepadSelector deja de centrarse en el GUI .

Si desea verificar desde el Gamepad selecciona comienza a enfocarse en el elemento GUI, puede usar el evento GuiObject.SelectionGained .

Cuando un GUI pierde el enfoque de selección, el valor de la propiedad SelectionObject cambia a nulo o al elemento GUI que gana el enfoque de selección. Para determinar qué GUI ganó la selección, o si no se selecciona ningún GUI, compruebe el valor de esta propiedad.


Muestras de código

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

El evento TouchLongPress ocurre después de un breve momento cuando el jugador mantiene su dedo en el elemento de la interfaz de usuario usando un dispositivo habilitado para el toque. Se activa con

Dado que este evento solo requiere un dedo, este evento se puede simular en Studio usando el emulador y un ratón.

Parámetros

touchPositions: Array

Un arreglo de Vector2 que describe las posiciones relativas de los dedos implicados en el gesto.

Un Enum.UserInputState que describe el estado del gesto:

  • Comienza fuegos una vez en el comienzo del gesto (después de la breve demora)
  • Cambia los fuegos si el jugador mueve el dedo mientras presiona hacia abajo
  • Termina los fuegos una vez en el final del gesto cuando liberen su dedo.

Muestras de código

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

El evento TouchPan ocurre cuando el jugador mueve su dedo en el elemento de la interfaz de usuario con un dispositivo habilitado para el tacto. Ocurre poco antes de que GuiObject.TouchSwipe lo hiciera, y no ocurre con GuiObject.TouchTap . Este evento es útil para permitir que el jugador manipule la posición de los elementos de la interfaz

Este evento se activa con una tabla de Vector2 que describen las posiciones de pantalla relativas de los dedos implicados en el gesto. Además, se activa varias veces: enum.userinputstate. comenz después de un breve retraso, enuem.userinputstate.change cuando el jugador mueve su dedo durante el gesto, y finalmente con 1>

Este evento no se puede simular en Studio usando el emulador y un ratón; debe tener un dispositivo de toque real para dispararlo.

Parámetros

touchPositions: Array

Un arreglo Lua de Vector2 objetos, cada uno de los cuales indica la posición de todos los dedos implicados en el gesto.

totalTranslation: Vector2

Indica la distancia de la señal de la cazuela desde su punto de partida.

velocity: Vector2

Indica con qué rapidez se está realizando el gesto en cada dimensión.

Indica el Enum.UserInputState del gesto.


Muestras de código

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

El evento TouchPinch ocurre cuando el jugador usa dos dedos para hacer un pinch o un gesto de agarre en el elemento de la interfaz de usuario que se habilita con un dispositivo de toque. Un pinch ocurre cuando dos o más dedos se mueven más cerca, y un

Este evento se activa con una tabla de Vector2 que describe las posiciones de pantalla relativas de los dedos implicados en el gesto. Además, se activa varias veces: Enum.UserInputState.Begin después de un breve retraso, enum.UserInputState.Change

Dado que este evento requiere al menos dos dedos, no es posible simularlo en Studio usando el emulador y un ratón; debe tener un dispositivo de toque real.

Parámetros

touchPositions: Array

Un arreglo Lua de Vector2 objetos, cada uno de los cuales indica la posición de todos los dedos implicados en el gesto de pincho.

scale: number

Un flotador que indica la diferencia desde el principio del gesto de pinch.

velocity: number

Un flotador que indica con qué rapidez se está produciendo el pinch.

Indica el Enum.UserInputState del gesto.


Muestras de código

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

El evento TouchRotate ocurre cuando el jugador usa dos dedos para hacer un gesto de pinch o agarrar en el elemento de la interfaz de usuario que se habilita con un dispositivo de toque. La rotación ocurre cuando el ángulo de la línea entre dos dedos cambia. Este evento ocurre en conjunción con GuiObject.TouchPan . Este evento es útil para permitir que el jugador manipule la rotación de los element

Este evento se activa con una tabla de Vector2 que describen las posiciones de pantalla relativas de los dedos implicados en el gesto. Además, se activa varias veces: enum.userinputstate. comenz después de un breve retraso, enuem.userinputstate.change cuando el jugador se mueve un dedo durante el gesto, y finalmente con

Dado que este evento requiere al menos dos dedos, no es posible ser simulado en Studio usando el emulador y un ratón; debe tener un dispositivo de toque real.

Parámetros

touchPositions: Array

Un arreglo Lua de Vector2 objetos, cada uno de los cuales indica la posición de todos los dedos implicados en el gesto.

rotation: number

Un flotador que indica la cantidad de rotación que ha ido desde el comienzo del gesto.

velocity: number

Un flotador que indica la rapidez con la que se está realizando el gesto.

Indica el Enum.UserInputState del gesto.


Muestras de código

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

El evento de toque de la interfaz de usuario se activa cuando el jugador realiza un gesto de toque en el elemento de la interfaz de usuario que se activa con un dispositivo habilitado para el toque. Se activa con la dirección del gesto (Up, Down, Left o Right) y el número de puntos de toque implicados en el gesto. Los gestos de toque a menudo se usan para cambiar las pestañas en las interfaces de usuario móviles.

Dado que este evento solo requiere un dedo, se puede simular en Studio usando el emulador y un ratón.

Parámetros

swipeDirection: Enum.SwipeDirection

Un Enum.SwipeDirection que indica la dirección de la dirección del gesto de desplazamiento (Arriba, Abajo, Izquierda o Derecha).

numberOfTouches: number

El número de puntos de toque implicados en el gesto (usualmente 1).


Muestras de código

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

El evento TouchTap se activa cuando el jugador realiza un gesto de toque en el elemento de la interfaz de usuario que utiliza un dispositivo habilitado para tocar. Un toque es un rápido toque simple sin ningún movimiento implicado (un presionamiento más largo firearía Class.GuiObject.Touch

Dado que este evento solo requiere un dedo, se puede simular en Studio usando el emulador y un ratón.

Parámetros

touchPositions: Array

Un arreglo de Vector2 que describe las posiciones relativas de los dedos implicados en el gesto.


Muestras de código

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)