TextBox
*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.
Uma Caixa de Texto permite que o jogador forneça entrada de texto. Ele se comporta da mesma forma que um TextButton, exceto que um único Caixa de Texto pode ser colocado em foco clicando, tocando ou selecionando um gamepad. Enquanto estiver em foco, o jogador pode usar um teclado para alterar a propriedade Text.
- Se não houver texto, o PlaceholderText será visível. Isso é útil ao solicitar que os jogadores do tipo ou formato de dados que eles devem inserir.
- Por padrão, a propriedade ClearTextOnFocus é ativada e garante que não haja texto existente quando um TextBox é focado. Isso pode não ser desejável para texto que deve ser editável pelo jogador.
- A propriedade MultiLine permite que os jogadores insiram várias linhas de texto com novos caracteres de linha ( \n ).
O ContextActionService honra os atalhos de texto e impedirá automaticamente que os eventos de pressione de chave sejam passados para ações vinculadas com ContextActionService:BindAction() . UserInputService.InputBegan e eventos relacionados ainda serão executados enquanto um TextBox estiver em foco.
Estado de Foco
É possível detectar e alterar o estado de foco de um TextBox:
- Você pode usar CaptureFocus quando uma caixa de diálogo aparecer para que o jogador não precise clicar em uma TextBox quando ela ficar disponível; você pode usar ContextActionService:BindAction() para vincular um determinado key para focar uma TextBox usando essa função. Quando uma TextBox fica em foco, o evento
- Você pode detectar se um determinado TextBox está em foco usando IsFocused. Alternativamente, UserInputService:GetFocusedTextBox() pode ser usado para verificar se um TextBox está em foco.
- Quando o jogador terminar de inserir texto, o evento FocusLost é acionado, indicando se o usuário pressionou Enter para enviar o texto junto com o InputObject que causou a perda de foco. Quando usado em teclados de tela no celular e console, 2>Class.Toolbar
- Se algum tópico mais importante surgir durante o jogabilidade, você pode ReleaseFocus da Caixa de Texto para que a entrada do teclado de um jogador retorne ao seu jogo.
Edição de Texto
Um TextBox suporta seleção de texto através de suas propriedades CursorPosition e SelectionStart. Usando GetPropertyChangedSignal, você pode detectar quando uma seleção muda. Além disso, é possível para os jogadores copiar e colar texto dentro de um TextBox, ativando o Suportebás
Aviso de Filtragem de Texto Jogos que facilitam a comunicação entre jogadores usando texto, como chat personalizado ou nomes de tag, devem filtrar corretamente tal texto usando TextService:FilterStringAsync() ou Chat:FilterStringAsync(). Se isso não for feito corretamente, seu jogo pode receber a ação de moderação.
Amostras de código
-- Place this code in a LocalScript inside a TextBox
local textBox = script.Parent
local secretWord = "roblox"
local colorNormal = Color3.new(1, 1, 1) -- white
local colorWrong = Color3.new(1, 0, 0) -- red
local colorCorrect = Color3.new(0, 1, 0) -- green
-- Initialize the state of the textBox
textBox.ClearTextOnFocus = true
textBox.Text = ""
textBox.Font = Enum.Font.Code
textBox.PlaceholderText = "What is the secret word?"
textBox.BackgroundColor3 = colorNormal
local function onFocused()
textBox.BackgroundColor3 = colorNormal
end
local function onFocusLost(enterPressed, _inputObject)
if enterPressed then
local guess = textBox.Text
if guess == secretWord then
textBox.Text = "ACCESS GRANTED"
textBox.BackgroundColor3 = colorCorrect
else
textBox.Text = "ACCESS DENIED"
textBox.BackgroundColor3 = colorWrong
end
else
-- The player stopped editing without pressing Enter
textBox.Text = ""
textBox.BackgroundColor3 = colorNormal
end
end
textBox.FocusLost:Connect(onFocusLost)
textBox.Focused:Connect(onFocused)
Resumo
Propriedades
Determina se clicar no TextBox limpará sua propriedade TextBox.Text.
Determina o deslocamento do cursor de texto em bytes ou -1 se não houver cursor.
Determina a fonte usada para renderizar texto.
Determina a fonte usada para renderizar texto.
Redimensiona o espaçamento entre linhas de texto no TextBox.
O número máximo de графемов que TextBox pode exibir / mostrar.
Quando definido como verdadeiro, o texto dentro de uma Caixa de Texto pode ser movido para várias linhas. Isso também permite que os jogadores usem a tecla de espaço para se mover para uma nova linha.
Define a cor de texto que é usada quando nenhum texto foi inserido na Caixa de Texto ainda.
Define o texto que é exibido quando nenhum texto foi inserido na Caixa de Texto ainda.
Determina se a Caixa de Texto renderiza a TextBox.Text string usando formatação de texto rico.
Determina a posição de partida de uma seleção de texto, ou -1 se nenhum texto for selecionado.
Se definido como verdadeiro, a entrada nativa para a plataforma é usada em vez do teclado incorporado do Roblox.
Determina a string renderizada pelo elemento da interface.
O tamanho do texto de um elemento da interface em deslocos.
Determina a cor do texto renderizado.
Determina se o usuário pode alterar o Text .
Se o texto cabe dentro das restrições da Caixa de Texto.
Muda se o texto é redimensionado para ajustar o objeto GUI que o renderiza.
Determine a altura da linha do texto em deslocamentos.
Determina a cor do texto (contorno).
Determina a transparência do traço de texto (contorno).
Determina a transparência do texto renderizado.
Controla a cortar o texto exibido neste TextBox.
Determina se os textos são enrolados em múltiplas linhas dentro do espaço de elemento GUI, cortando o texto excessivo.
Determina a alinhação horizontal do texto renderizado.
Determina a alinhamento vertical do texto renderizado.
Determina si este elemento de la interfaz de usuario acepta la entrada.
Determina el punto de origen de un GuiObject , relativo a su tamaño absoluto.
Determina si se produce el escalado en función del contenido de los hijos.
Determina el color de fondo de GuiObject
Determina la transparencia de la capa de fondo y el borde de GuiObject
Determina el color de la frontera de GuiObject .
Determina de qué manera se coloca el límite de GuiObject en relación con sus dimensiones.
Determina el ancho de píxel de la frontera GuiObject .
Determina si el descendiente GuiObjects fuera de los límites de un elemento GUI padre debe Renderizar.
Determina si el mouse del jugador está siendo presionado activamente en el GuiObject o no.
Determina si el GuiButton se puede interactuar con o no, o si el GuiState del GuiObject está cambiando o no.
Controla el orden de clasificación del GuiObject cuando se usa con un UIGridStyleLayout .
Establece el GuiObject que se seleccionará cuando el seleccionador de plataforma de juego se mueva hacia abajo.
Establece el GuiObject que se seleccionará cuando el seleccionador de plataforma se mueva a la izquierda.
Establece el GuiObject que se seleccionará cuando el seleccionador de plataforma de juegos se mueva a la derecha.
Establece el GuiObject que se seleccionará cuando el seleccionador de plataforma de juego se mueva hacia arriba.
Determina la posición de píxeles y escalares de GuiObject .
Determina el número de grados en los que se gira el GuiObject .
Determine si el GUI puede ser seleccionado por un controlador para juego.
Sobrecarga el adorno de selección predeterminado utilizado para las plataformas de juegos.
El orden de GuiObjects seleccionado por la interfaz de usuario del gamepad.
Determina el tamaño de píxeles y escalares del GuiObject .
Establece los ejes Size en los que se basará el GuiObject relativos al tamaño de su padre.
Una propiedad mixta de BackgroundTransparency y TextTransparency .
Determina si el GuiObject y sus descendientes serán renderizados.
Determina el orden en que se renderiza un GuiObject en relación con los demás.
Descreve a posição real da tela de um elemento da interface, em pixels.
Descreve a rotação de tela real de um elemento da interface, em graus.
Descreve o tamanho real da tela de um elemento da interface, em pixels.
Quando definido como verdadeiro, a localização será aplicada a este GuiBase2d e aos seus descendentes.
Uma referência a um LocalizationTable para ser usado para aplicar localização automatizada a este GuiBase2d e seus descendentes.
Personaliza o comportamento de seleção do gamepad na direção de baixo.
Personaliza o comportamento de seleção do gamepad na direção esquerda.
Personaliza o comportamento de seleção do gamepad na direção certa.
Personaliza o comportamento de seleção do gamepad na direção de cima.
Permite personalizar o movimento da almofada de jogo.
Métodos
Força o cliente a focar na Caixa de Texto.
Retorna verdadeiro se a caixa de texto estiver focada, ou falso se não estiver.
Força o cliente a desfocar a Caixa de Texto.
- TweenPosition(endPosition : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : bool,callback : function):bool
Mueve con suavidad un GUI a un nuevo UDim2 .
- TweenSize(endSize : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : bool,callback : function):bool
Escala con suavidad un GUI a un nuevo UDim2 .
- TweenSizeAndPosition(endSize : UDim2,endPosition : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : bool,callback : function):bool
Mueve con suavidad una GUI a un nuevo tamaño y posición.
Eventos
Eventos herdados de GuiObjectSe ha disparado cuando un usuario comienza a interactuar a través de un dispositivo de interfaz humana-ordenador (botón de ratón, toque para comenzar, botón de teclado, etc).
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 para comenzar, botón de teclado, etc).
Se ha disparado cuando un usuario deja de interactuar a través de un dispositivo de interfaz humana-ordenador (botón de ratón, toque para empezar, botón de teclado, etc).
Dispara cuando un usuario mueve su mouse hacia un elemento GUI.
Se activa cuando un usuario mueve el mouse fuera de un elemento de la GUI.
Dispara cuando un usuario mueve el mouse mientras está dentro de un elemento GUI.
Dispara cuando un usuario desplaza su rueda de ratón cuando el ratón está sobre un elemento de GUI.
Se activa cuando un usuario desplaza su rueda de ratón hacia delante cuando el ratón está sobre un elemento de GUI.
Se activa cuando el GuiObject está siendo enfocado con el GamepadSelector.
Se activa cuando el GamepadSelector deja de enfocarse en el GuiObject.
Se activa cuando el jugador comienza, continúa y termina presionando el elemento de la interfaz de usuario.
- TouchPan(touchPositions : Array,totalTranslation : Vector2,velocity : Vector2,state : Enum.UserInputState):RBXScriptSignal
Dispara cuando el jugador mueve su dedo en el elemento de la interfaz de usuario.
- TouchPinch(touchPositions : Array,scale : number,velocity : number,state : Enum.UserInputState):RBXScriptSignal
Dispara cuando el jugador realiza un gesto de pinchazo o de tiro usando dos dedos en el elemento de la interfaz de usuario.
- TouchRotate(touchPositions : Array,rotation : number,velocity : number,state : Enum.UserInputState):RBXScriptSignal
Dispara cuando el jugador realiza un gesto de rotación usando dos dedos en el elemento de la interfaz de usuario.
Se activa cuando el jugador realiza un gesto de desplazamiento en el elemento de la interfaz de usuario.
Se activa cuando el jugador realiza un gesto de toque en el elemento de la interfaz de usuario.
- SelectionChanged(amISelected : bool,previousSelection : GuiObject,newSelection : GuiObject):RBXScriptSignal
Ativado quando a seleção do gamepad se move para, sai ou muda dentro da GuiBase2d conectada ou de qualquer descendente GuiObjects.
Propriedades
ContentText
CursorPosition
CursorPosition Determina o deslocamento do cursor de texto em bytes ou -1 se a Caixa de Texto não estiver atualmente sendo editada. Um valor de 1 representa o começo, a posição antes do primeiro bytes na propriedade Text. Quando usado em conjunto com a propriedade SelectionStart, é possível obter e defin
Deve ser notado que as unidades desta propriedade são bytes e que muitos caracteres não padrão, como emojis, são mais longos que 1 bytes . Por instância, se um jogador digitar na Caixa de Texto "Hello👋" – "Hello" imediatamente seguido pela placa de mão – a posição do cursor seria 10, não 7, pois o emoji usa 4 bytes.
Amostras de código
local textBox = script.Parent
local function showSelection()
if textBox.CursorPosition == -1 or textBox.SelectionStart == -1 then
print("No selection")
else
local selectedText = string.sub(
textBox.Text,
math.min(textBox.CursorPosition, textBox.SelectionStart),
math.max(textBox.CursorPosition, textBox.SelectionStart)
)
print('The selection is:"', selectedText, '"')
end
end
textBox:GetPropertyChangedSignal("CursorPosition"):Connect(showSelection)
textBox:GetPropertyChangedSignal("SelectionStart"):Connect(showSelection)
Font
A propriedade Fonte seleciona um dos vários predefinidos fonts com os quais o elemento da interface renderizará seu texto. Alguns dos fontes têm itálicos, pormenorizados e/ou luzes (como não há propriedades de peso de fonte ou estilo de fonte).
Com a exceção da fonte "Legacy", cada fonte renderizará texto com a altura da linha igual à propriedade TextBox.TextSize. A fonte "Code" é a única fonte de monóspaco. Tem a propriedade única que cada personagem tem o mesmo largura e altura de relação de 1:2. A largura de cada personagem é aproximadamente metade da propriedade TextBox.TextSize.
Essa propriedade é mantida em sincronia com a propriedade TextBox.FontFace. Ao definir a fonte, a fonte será definida como Font.fromEnum(value) .
Amostras de código
local textLabel = script.Parent
while true do
-- Iterate over all the different fonts
for _, font in pairs(Enum.Font:GetEnumItems()) do
textLabel.Font = font
textLabel.Text = font.Name
task.wait(1)
end
end
local frame = script.Parent
-- Create a TextLabel displaying each font
for _, font in pairs(Enum.Font:GetEnumItems()) do
local textLabel = Instance.new("TextLabel")
textLabel.Name = font.Name
-- Set the text properties
textLabel.Text = font.Name
textLabel.Font = font
-- Some rendering properties
textLabel.TextSize = 24
textLabel.TextXAlignment = Enum.TextXAlignment.Left
-- Size the frame equal to the height of the text
textLabel.Size = UDim2.new(1, 0, 0, textLabel.TextSize)
-- Add to the parent frame
textLabel.Parent = frame
end
-- Layout the frames in a list (if they aren't already)
if not frame:FindFirstChildOfClass("UIListLayout") then
local uiListLayout = Instance.new("UIListLayout")
uiListLayout.Parent = frame
end
FontFace
A propriedade FontFace é semelhante à propriedade Font, mas permite definir fontes que não existem no índice de fontes.
Essa propriedade é mantida em sincronia com a propriedade TextBox.Font. Ao definir oFontFace, oFont é definido para o valor de lista correspondente ou para Enum.Font.Unknown se não houver correspondências.
LineHeight
Controla a altura das linhas, como uma multiplicação do tamanho do ponto da fonte, escalando a espaçamento entre linhas de texto na TextBox. Valores válidos variam de 1.0 a 3.0, padrão para 1.0.
MaxVisibleGraphemes
Essa propriedade controla o número máximo de графема (ou unidades de texto) que são mostrados no TextBox, independentemente de mostrar o TextBox.PlaceholderText ou TextBox.Text.
Alterar a propriedade não muda a posição ou tamanho dos gráficos visíveis - a layout será calculada como se todos os gráficos fossem visíveis.
Configurar a propriedade para -1 desativa o limite e mostra a totalidade do TextBox.Text .
MultiLine
Quando definido como verdadeiro, o texto dentro de uma Caixa de Texto pode ser movido para várias linhas. Isso também permite que os jogadores usem a tecla de espaço para se mover para uma nova linha.
OpenTypeFeatures
OpenTypeFeaturesError
PlaceholderColor3
Define a cor de texto que é usada quando nenhum texto foi inserido na Caixa de Texto ainda.
PlaceholderText
Define o texto que é exibido quando nenhum texto foi inserido na Caixa de Texto ainda.
RichText
Essa propriedade determina se o TextBox renderiza a string TextBox.Text usando formatação de texto rico. O texto rico usa tags de marca simples para estilizar seções do string em negrito, itálicos, cores específicas e muito mais.
Para usar texto rico, simplesmente inclua tags de formatação na TextBox.Text string / cadeia / texto.
Nota que quando a propriedade TextBox tiver este atributo ativado e a caixa ganhar foco, o usuário será capaz de editar e interagir com a string / cadeia / textocompleta de XML, incluindo todos os elementos de formatação. Quando a atenção for perdida, o texto será automaticamente processar e renderizar os elementos como rico texto.
SelectionStart
Determina a posição de partida de uma seleção de texto, ou -1 se a Caixa de Texto não tiver alcance de texto selecionado. Se o valor for -1 ou equivalente a CursorPosition, não há alcance de texto selecionado. Essa propriedade usa a mesma lógica de posicionamento que CursorPosition. A SeleçãoInicial será maior que CursorPosition se o cursor estiver no come
Amostras de código
local textBox = script.Parent
local function showSelection()
if textBox.CursorPosition == -1 or textBox.SelectionStart == -1 then
print("No selection")
else
local selectedText = string.sub(
textBox.Text,
math.min(textBox.CursorPosition, textBox.SelectionStart),
math.max(textBox.CursorPosition, textBox.SelectionStart)
)
print('The selection is:"', selectedText, '"')
end
end
textBox:GetPropertyChangedSignal("CursorPosition"):Connect(showSelection)
textBox:GetPropertyChangedSignal("SelectionStart"):Connect(showSelection)
ShowNativeInput
Se definido como verdadeiro, a entrada nativa para a plataforma é usada em vez do teclado incorporado do Roblox.
Text
A propriedade Texto determina o conteúdo renderizado pelo elemento UI. As propriedades visuais da string renderizada para a tela são determinadas por TextBox.TextColor3, Class.Toolbar
É possível renderizar emoji (por exemplo, 😃) e outros símbolos. Esses símbolos especiais não são afetados pela propriedade TextBox.TextColor3. Esses podem ser colados em Script e LocalScript objetos, bem como na janela Propriedades.
Esta propriedade pode conter caracteres de nova linha, no entanto, não é possível digitar caracteres de nova linha dentro da janela Propriedades. Da mesma forma, esta propriedade pode conter um personagem tab, mas ele será renderizado como um espaço em vez disso.
Amostras de código
local TweenService = game:GetService("TweenService")
local textLabel = script.Parent
local content = {
"Welcome to my game!",
"Be sure to have fun!",
"Please give suggestions!",
"Be nice to other players!",
"Don't grief other players!",
"Check out the shop!",
"Tip: Don't die!",
}
local tweenInfo = TweenInfo.new(1, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut)
local RNG = Random.new()
local fadeIn = TweenService:Create(textLabel, tweenInfo, {
TextTransparency = 0,
})
local fadeOut = TweenService:Create(textLabel, tweenInfo, {
TextTransparency = 1,
})
local lastIndex
while true do
-- Step 0: Fade out before doing anything
fadeOut:Play()
task.wait(tweenInfo.Time)
-- Step 1: pick content that wasn't the last displayed
local index
repeat
index = RNG:NextInteger(1, #content)
until lastIndex ~= index
-- Make sure we don't show the same thing next time
lastIndex = index
-- Step 2: show the content
textLabel.Text = content[index]
fadeIn:Play()
task.wait(tweenInfo.Time + 1)
end
local textLabel = script.Parent
textLabel.Text = "Kaboom!"
while true do
for size = 5, 100, 5 do
textLabel.TextSize = size
textLabel.TextTransparency = size / 100
task.wait()
end
task.wait(1)
end
local frame = script.Parent
-- Create a TextLabel displaying each font
for _, font in pairs(Enum.Font:GetEnumItems()) do
local textLabel = Instance.new("TextLabel")
textLabel.Name = font.Name
-- Set the text properties
textLabel.Text = font.Name
textLabel.Font = font
-- Some rendering properties
textLabel.TextSize = 24
textLabel.TextXAlignment = Enum.TextXAlignment.Left
-- Size the frame equal to the height of the text
textLabel.Size = UDim2.new(1, 0, 0, textLabel.TextSize)
-- Add to the parent frame
textLabel.Parent = frame
end
-- Layout the frames in a list (if they aren't already)
if not frame:FindFirstChildOfClass("UIListLayout") then
local uiListLayout = Instance.new("UIListLayout")
uiListLayout.Parent = frame
end
local textLabel = script.Parent
-- This text wrapping demo is best shown on a 200x50 px rectangle
textLabel.Size = UDim2.new(0, 200, 0, 50)
-- Some content to spell out
local content = "Here's a long string of words that will "
.. "eventually exceed the UI element's width "
.. "and form line breaks. Useful for paragraphs "
.. "that are really long."
-- A function that will spell text out two characters at a time
local function spellTheText()
-- Iterate from 1 to the length of our content
for i = 1, content:len() do
-- Get a substring of our content: 1 to i
textLabel.Text = content:sub(1, i)
-- Color the text if it doesn't fit in our box
if textLabel.TextFits then
textLabel.TextColor3 = Color3.new(0, 0, 0) -- Black
else
textLabel.TextColor3 = Color3.new(1, 0, 0) -- Red
end
-- Wait a brief moment on even lengths
if i % 2 == 0 then
task.wait()
end
end
end
while true do
-- Spell the text with scale/wrap off
textLabel.TextWrapped = false
textLabel.TextScaled = false
spellTheText()
task.wait(1)
-- Spell the text with wrap on
textLabel.TextWrapped = true
textLabel.TextScaled = false
spellTheText()
task.wait(1)
-- Spell the text with text scaling on
-- Note: Text turns red (TextFits = false) once text has to be
-- scaled down in order to fit within the UI element.
textLabel.TextScaled = true
-- Note: TextWrapped is enabled implicitly when TextScaled = true
--textLabel.TextWrapped = true
spellTheText()
task.wait(1)
end
local textLabel = script.Parent
local moods = {
["happy"] = "😃",
["sad"] = "😢",
["neutral"] = "😐",
["tired"] = "😫",
}
while true do
for mood, face in pairs(moods) do
textLabel.Text = "I am feeling " .. mood .. "! " .. face
task.wait(1)
end
end
TextBounds
A propriedade TextBounds reflete o tamanho absoluto do texto renderizado em deslocos. Em outras palavras, se você tentar ajustar o texto em um retângulo, esta propriedade refletirá as dimensões mínimas do retângulo que você precisaria para ajustar o texto.
Usando TextService:GetTextSize() , você pode prever o que TextBounds estará em um TextLabel dado uma string / cadeia / texto, TextBox.Font e tamanho da janela de frame.
Amostras de código
local textBox = script.Parent
-- The smallest the TextBox will go
local minWidth, minHeight = 10, 10
-- Set alignment so our text doesn't wobble a bit while we type
textBox.TextXAlignment = Enum.TextXAlignment.Left
textBox.TextYAlignment = Enum.TextYAlignment.Top
local function updateSize()
textBox.Size = UDim2.new(0, math.max(minWidth, textBox.TextBounds.X), 0, math.max(minHeight, textBox.TextBounds.Y))
end
textBox:GetPropertyChangedSignal("TextBounds"):Connect(updateSize)
TextColor3
Essa propriedade determina a cor de todo o texto renderizado por um elemento GUI. Essa propriedade, juntamente com TextBox.Font, TextBox.TextSize e 2>Class.Toolbar.TextTransparency2>, determinará as propriedades visuais do texto. O texto é renderizado após o traço de text
É importante que o texto seja facilmente lido por jogadores! Certifique-se de escolher cores com baixa saturação, como branco, cinza ou preto. Certifique-se de que a cor do seu texto seja contrasteada pela TextBox.BackgroundColor3 do elemento da UI. Se o elemento tiver um fundo transparente, tente aplicar um preto Class.Toolbar.TextStrokeColor3
Amostras de código
local textBox = script.Parent
local function hasVowels(str)
return str:lower():find("[aeiou]")
end
local function onTextChanged()
local text = textBox.Text
-- Check for vowels
if hasVowels(text) then
textBox.TextColor3 = Color3.new(0, 0, 0) -- Black
else
textBox.TextColor3 = Color3.new(1, 0, 0) -- Red
end
end
textBox:GetPropertyChangedSignal("Text"):Connect(onTextChanged)
-- Place this code in a LocalScript inside a TextBox
local textBox = script.Parent
local secretWord = "roblox"
local colorNormal = Color3.new(1, 1, 1) -- white
local colorWrong = Color3.new(1, 0, 0) -- red
local colorCorrect = Color3.new(0, 1, 0) -- green
-- Initialize the state of the textBox
textBox.ClearTextOnFocus = true
textBox.Text = ""
textBox.Font = Enum.Font.Code
textBox.PlaceholderText = "What is the secret word?"
textBox.BackgroundColor3 = colorNormal
local function onFocused()
textBox.BackgroundColor3 = colorNormal
end
local function onFocusLost(enterPressed, _inputObject)
if enterPressed then
local guess = textBox.Text
if guess == secretWord then
textBox.Text = "ACCESS GRANTED"
textBox.BackgroundColor3 = colorCorrect
else
textBox.Text = "ACCESS DENIED"
textBox.BackgroundColor3 = colorWrong
end
else
-- The player stopped editing without pressing Enter
textBox.Text = ""
textBox.BackgroundColor3 = colorNormal
end
end
textBox.FocusLost:Connect(onFocusLost)
textBox.Focused:Connect(onFocused)
-- Place this code in a LocalScript within a TextLabel/TextButton
local textLabel = script.Parent
-- Some colors we'll use with TextColor3
local colorNormal = Color3.new(0, 0, 0) -- black
local colorSoon = Color3.new(1, 0.5, 0.5) -- red
local colorDone = Color3.new(0.5, 1, 0.5) -- green
-- Loop infinitely
while true do
-- Count backwards from 10 to 1
for i = 10, 1, -1 do
-- Set the text
textLabel.Text = "Time: " .. i
-- Set the color based on how much time is left
if i > 3 then
textLabel.TextColor3 = colorNormal
else
textLabel.TextColor3 = colorSoon
end
task.wait(1)
end
textLabel.Text = "GO!"
textLabel.TextColor3 = colorDone
task.wait(2)
end
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Place a StringValue called "GameState" in the ReplicatedStorage
local vGameState = ReplicatedStorage:WaitForChild("GameState")
-- Place this code in a TextLabel
local textLabel = script.Parent
-- Some colors we'll use with TextColor3
local colorNormal = Color3.new(0, 0, 0) -- black
local colorCountdown = Color3.new(1, 0.5, 0) -- orange
local colorRound = Color3.new(0.25, 0.25, 1) -- blue
-- We'll run this function to update the TextLabel as the state of the
-- game changes.
local function update()
-- Update the text
textLabel.Text = "State: " .. vGameState.Value
-- Set the color of the text based on the current game state
if vGameState.Value == "Countdown" then
textLabel.TextColor3 = colorCountdown
elseif vGameState.Value == "Round" then
textLabel.TextColor3 = colorRound
else
textLabel.TextColor3 = colorNormal
end
end
-- Pattern: update once when we start and also when vGameState changes
-- We should always see the most updated GameState.
update()
vGameState.Changed:Connect(update)
TextDirection
TextEditable
TextEditable Determina se o usuário pode alterar o Text através da entrada. Recomenda-se desativar ClearTextOnFocus quando essa propriedade é desativada, caso contrário, o Texto pode ser limpo no foco. Essa propriedade é útil para fazer cópias de texto de propriedades de leitura, do qual o
TextScaled
Em vez de usar TextScaled, recomendamos que você considere usar AutomaticSize, um novo método para dimensionar dinamicamente a UI que lhe dará o melhor resultado visual possível.
A propriedade TextScaled determina se o texto é escalado para que ele preencha todo o espaço do elemento da interface. Quando isso estiver ativado, TextBox.TextSize é ignorado e TextBox.TextWrapped é ativado automaticamente. Essa propriedade é útil para renderizar elementos de texto dentro de BillboardGuis .
Quando esta propriedade é usada para a interface do usuário do espaço de tela, pode ser desejável usar um UITextSizeConstraint para restringir o alcance de tamanhos de texto possíveis.
TextScaled e AutomaticSize
Recomenda-se que os desenvolvedores evitem o uso de TextScaled e ajustem a interface do usuário para aproveitar a propriedade AutomaticSize em vez disso. Aqui estão as diferenças principais entre as duas propriedades:
- O TextScaled escala o conteúdo (texto) para acomodar a UI. Sem uma atenção cuidadosa, alguns textos podem ficar ilegíveis se escalados muito pequenos.
- O tamanho automático redimensiona a UI para acomodar o conteúdo.
Com o tamanho automático, você pode ajustar sua UI para acomodar o conteúdo (texto) ao mesmo tempo que mantém um tamanho de fonte consistente. Para mais informações sobre como usar o tamanho automático, consulte o artigo Automatic Size da UI.
Recomendamos que você não aplique tanto o TextScaled quanto o AutomaticSize na mesma instância de Objeto. Se você aplicar ambas as propriedades:
- O tamanho automático determina a quantidade máxima de espaço disponível que um GuiObject pode usar (neste caso, texto)
- O TextScaled usa o espaço disponível determinado pelo AutomaticSize, para escalar o tamanho do tipo para ajustar o tamanho da fonte ao espaço disponível, o que expandirá até o tamanho máximo do tipo (100), se houver restrições de tamanho
- O resultado final será: o texto irá para o tamanho de 100 caracteres e o objeto de UI irá expandir para ajustar esse texto
Usar ambos AutomaticSize e TextScaled ao mesmo tempo pode resultar em diferenças de escalonamento significativas ao usar AutomaticSize desligado.
Amostras de código
local textLabel = script.Parent
-- This text wrapping demo is best shown on a 200x50 px rectangle
textLabel.Size = UDim2.new(0, 200, 0, 50)
-- Some content to spell out
local content = "Here's a long string of words that will "
.. "eventually exceed the UI element's width "
.. "and form line breaks. Useful for paragraphs "
.. "that are really long."
-- A function that will spell text out two characters at a time
local function spellTheText()
-- Iterate from 1 to the length of our content
for i = 1, content:len() do
-- Get a substring of our content: 1 to i
textLabel.Text = content:sub(1, i)
-- Color the text if it doesn't fit in our box
if textLabel.TextFits then
textLabel.TextColor3 = Color3.new(0, 0, 0) -- Black
else
textLabel.TextColor3 = Color3.new(1, 0, 0) -- Red
end
-- Wait a brief moment on even lengths
if i % 2 == 0 then
task.wait()
end
end
end
while true do
-- Spell the text with scale/wrap off
textLabel.TextWrapped = false
textLabel.TextScaled = false
spellTheText()
task.wait(1)
-- Spell the text with wrap on
textLabel.TextWrapped = true
textLabel.TextScaled = false
spellTheText()
task.wait(1)
-- Spell the text with text scaling on
-- Note: Text turns red (TextFits = false) once text has to be
-- scaled down in order to fit within the UI element.
textLabel.TextScaled = true
-- Note: TextWrapped is enabled implicitly when TextScaled = true
--textLabel.TextWrapped = true
spellTheText()
task.wait(1)
end
TextSize
A propriedade TextSize determina a altura em deslocamento de uma linha de texto renderizado. A unidade está em deslocamento, não pontos (o que é usado na maioria dos programas de edição de documentos). A fonte "Legado" não contém essa propriedade.
Amostras de código
local textLabel = script.Parent
textLabel.Text = "Kaboom!"
while true do
for size = 5, 100, 5 do
textLabel.TextSize = size
textLabel.TextTransparency = size / 100
task.wait()
end
task.wait(1)
end
TextStrokeColor3
A propriedade TextStrokeColor3 define a cor do traço, ou contorno, do texto renderizado. Essa propriedade e TextBox.TextStrokeTransparency determinam as propriedades visuais do traço de texto.
O texto é renderizado antes do texto normal e é simplesmente 4 renderizações do mesmo texto em +/- 1 pixel de deslocamento em cada direção. A renderização de texto funciona independentemente e idêntica a TextBox.TextColor3 e TextBox.TextTransparency.
Amostras de código
local textLabel = script.Parent
-- How fast the highlight ought to blink
local freq = 2
-- Set to yellow highlight color
textLabel.TextStrokeColor3 = Color3.new(1, 1, 0)
while true do
-- math.sin oscillates from -1 to 1, so we change the range to 0 to 1:
local transparency = math.sin(workspace.DistributedGameTime * math.pi * freq) * 0.5 + 0.5
textLabel.TextStrokeTransparency = transparency
task.wait()
end
TextStrokeTransparency
A propriedade TextStrokeTransparency define a transparência do traço, ou contorno, do texto renderizado. Essa propriedade e TextBox.TextStrokeColor3 determinam as propriedades visuais do traço.
O texto é renderizado antes do texto normal e é simplesmente 4 renderizações do mesmo texto em +/- 1 pixel de distância em cada direção. A renderização de texto é independente e
Amostras de código
local textLabel = script.Parent
-- How fast the highlight ought to blink
local freq = 2
-- Set to yellow highlight color
textLabel.TextStrokeColor3 = Color3.new(1, 1, 0)
while true do
-- math.sin oscillates from -1 to 1, so we change the range to 0 to 1:
local transparency = math.sin(workspace.DistributedGameTime * math.pi * freq) * 0.5 + 0.5
textLabel.TextStrokeTransparency = transparency
task.wait()
end
TextTransparency
A propriedade TextColor3 determina a transparência de todo o texto renderizado por um elemento da UI. Essa propriedade, juntamente com TextBox.Font, TextBox.TextSize e TextBox.TextColor3, irá determinar as propriedades visuais do texto. O texto é renderizado após o traço de texto ( 1> Class.Toolbar.TextStrokeTrans
Fazer texto desvanecer ao usar um for-Loop numérico é uma ótima maneira de chamar a atenção do jogador para o texto aparecendo na tela.
-- Count backwards from 1 to 0, decrementing by 0.1for i = 1, 0, -0.1 dotextLabel.TextTransparency = itask.wait(0.1)end
Amostras de código
local TweenService = game:GetService("TweenService")
local textLabel = script.Parent
local content = {
"Welcome to my game!",
"Be sure to have fun!",
"Please give suggestions!",
"Be nice to other players!",
"Don't grief other players!",
"Check out the shop!",
"Tip: Don't die!",
}
local tweenInfo = TweenInfo.new(1, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut)
local RNG = Random.new()
local fadeIn = TweenService:Create(textLabel, tweenInfo, {
TextTransparency = 0,
})
local fadeOut = TweenService:Create(textLabel, tweenInfo, {
TextTransparency = 1,
})
local lastIndex
while true do
-- Step 0: Fade out before doing anything
fadeOut:Play()
task.wait(tweenInfo.Time)
-- Step 1: pick content that wasn't the last displayed
local index
repeat
index = RNG:NextInteger(1, #content)
until lastIndex ~= index
-- Make sure we don't show the same thing next time
lastIndex = index
-- Step 2: show the content
textLabel.Text = content[index]
fadeIn:Play()
task.wait(tweenInfo.Time + 1)
end
local textLabel = script.Parent
textLabel.Text = "Kaboom!"
while true do
for size = 5, 100, 5 do
textLabel.TextSize = size
textLabel.TextTransparency = size / 100
task.wait()
end
task.wait(1)
end
TextWrapped
Quando ativado, essa propriedade renderizará texto em várias linhas dentro do espaço de um GUI elemento, para que TextBox.TextBounds nunca exceda o GuiBase2d.AbsoluteSize do elemento GUI.
Isso é obtido quebrando longas linhas de texto em várias linhas. Quebra de linhas preferirá espaço em branco; se uma longa palavra não escrita exceder a largura do elemento, essa palavra será quebrada em várias linhas.
Se quebra de linha adicional causaria a altura vertical do texto (o componente Y de TextBox.TextBounds ) a exceder a altura vertical do elemento (o componente Y de GuiBase2d.AbsoluteSize), então essa linha não será renderizada em todas / todosos casos.
Amostras de código
local textLabel = script.Parent
-- This text wrapping demo is best shown on a 200x50 px rectangle
textLabel.Size = UDim2.new(0, 200, 0, 50)
-- Some content to spell out
local content = "Here's a long string of words that will "
.. "eventually exceed the UI element's width "
.. "and form line breaks. Useful for paragraphs "
.. "that are really long."
-- A function that will spell text out two characters at a time
local function spellTheText()
-- Iterate from 1 to the length of our content
for i = 1, content:len() do
-- Get a substring of our content: 1 to i
textLabel.Text = content:sub(1, i)
-- Color the text if it doesn't fit in our box
if textLabel.TextFits then
textLabel.TextColor3 = Color3.new(0, 0, 0) -- Black
else
textLabel.TextColor3 = Color3.new(1, 0, 0) -- Red
end
-- Wait a brief moment on even lengths
if i % 2 == 0 then
task.wait()
end
end
end
while true do
-- Spell the text with scale/wrap off
textLabel.TextWrapped = false
textLabel.TextScaled = false
spellTheText()
task.wait(1)
-- Spell the text with wrap on
textLabel.TextWrapped = true
textLabel.TextScaled = false
spellTheText()
task.wait(1)
-- Spell the text with text scaling on
-- Note: Text turns red (TextFits = false) once text has to be
-- scaled down in order to fit within the UI element.
textLabel.TextScaled = true
-- Note: TextWrapped is enabled implicitly when TextScaled = true
--textLabel.TextWrapped = true
spellTheText()
task.wait(1)
end
TextXAlignment
O texto X렬 determina o alinhamento horizontal (eixo X) do texto renderizado dentro do espaço de um elemento da interface. Funciona da mesma forma que a propriedade text-align da CSS, com valores de esquerda, direita e centro (não há opção de justificação). Para a esquerda e direita, o texto é renderizado para que os limites de texto esquerdo/direito toquem no lado do retângulo do elemento da interface. Para o centro, cada linha de texto é centralizada no centro do
Essa propriedade é usada em conjunto com TextBox.TextYAlignment para determinar totalmente a alinhamento do texto em ambos os eixos. Essa propriedade não afetará as propriedades de leitura TextBox.TextBounds e TextBox.TextFits.
Amostras de código
-- Paste this in a LocalScript within a TextLabel/TextButton/TextBox
local textLabel = script.Parent
local function setAlignment(xAlign, yAlign)
textLabel.TextXAlignment = xAlign
textLabel.TextYAlignment = yAlign
textLabel.Text = xAlign.Name .. " + " .. yAlign.Name
end
while true do
-- Iterate over both TextXAlignment and TextYAlignment enum items
for _, yAlign in pairs(Enum.TextYAlignment:GetEnumItems()) do
for _, xAlign in pairs(Enum.TextXAlignment:GetEnumItems()) do
setAlignment(xAlign, yAlign)
task.wait(1)
end
end
end
TextYAlignment
O textoYAlignment determina o alinhamento vertical (Y-axis) do texto renderizado dentro do espaço de um elemento da interface. Para o topo e para baixo, o texto é renderizado para que os limites de texto/cima/tenda toquem a borda do espaço do elemento. Para o centro, o texto é renderizado para que haja um espaço igual dos limites de texto/cima/tenda para a parte superior do elemento e dos limites de texto/cima/tenda para a parte inferior do elemento.
Essa propriedade é usada em conjunto com TextBox.TextXAlignment para determinar totalmente a alinhamento do texto em ambos os eixos. Essa propriedade não afetará as propriedades de leitura TextBox.TextBounds e TextBox.TextFits.
Amostras de código
-- Paste this in a LocalScript within a TextLabel/TextButton/TextBox
local textLabel = script.Parent
local function setAlignment(xAlign, yAlign)
textLabel.TextXAlignment = xAlign
textLabel.TextYAlignment = yAlign
textLabel.Text = xAlign.Name .. " + " .. yAlign.Name
end
while true do
-- Iterate over both TextXAlignment and TextYAlignment enum items
for _, yAlign in pairs(Enum.TextYAlignment:GetEnumItems()) do
for _, xAlign in pairs(Enum.TextXAlignment:GetEnumItems()) do
setAlignment(xAlign, yAlign)
task.wait(1)
end
end
end
Métodos
CaptureFocus
Força o cliente a focar na Caixa de Texto.
Devolução
Amostras de código
local ContextActionService = game:GetService("ContextActionService")
local ACTION_NAME = "FocusTheTextBox"
local textBox = script.Parent
local function handleAction(actionName, inputState, _inputObject)
if actionName == ACTION_NAME and inputState == Enum.UserInputState.End then
textBox:CaptureFocus()
end
end
ContextActionService:BindAction(ACTION_NAME, handleAction, false, Enum.KeyCode.Q)
IsFocused
Retorna verdadeiro se a caixa de texto estiver focada, ou falso se não estiver.
Devolução
ReleaseFocus
Força o cliente a desfocar a TextBox. O parâmetro submitted permite que você over-ride o parâmetro enterPressed no evento TextBox.FocusLost.
Este item deve ser usado com um LocalScript para funcionar como deveria no modo online.
O código mostrado abaixo forçará o cliente a desfocar o 'Texture' 5 segundos depois de selecioná-lo:
local TextBox = script.Parent
TextBox.Focused:Connect(function()
wait(5)
TextBox:ReleaseFocus()
end)
Por favor, tenha em mente que o exemplo acima pressupõe que está em um LocalScript, como filho de uma Caixa de Texto.
Parâmetros
Devolução
Amostras de código
local textBox = script.Parent
local function onFocused()
task.wait(5)
textBox:ReleaseFocus()
end
textBox.Focused:Connect(onFocused)
Eventos
FocusLost
Dispara quando o cliente deixa seu foco sair da Caixa de Texto - normalmente quando um cliente clica/toque fora da Caixa de Texto. Isso também dispara se um Texto Box forçar o foco para o usuário.
Pode ser usado ao lado de TextBox.Focused para rastrear quando um TextBox ganha e perde foco.
Veja também o UserInputService.TextBoxFocused e UserInputService.TextBoxFocusReleased para funções semelhantes que dependem do serviço UserInputService.
Este evento só será executado se você usar um LocalScript.
Parâmetros
Um boolo indicando se o cliente pressionou Enter para perder o foco ( verdadeiro ) ou não ( falso ).
Uma instância InputObject mostrando o tipo de entrada que causou a TextBox perder foco.
Amostras de código
local gui = script.Parent
local textBox = gui.TextBox
local function focusLost(enterPressed)
if enterPressed then
print("Focus was lost because enter was pressed!")
else
print("Focus was lost without enter being pressed")
end
end
textBox.FocusLost:Connect(focusLost)
local textBox = script.Parent
local function onFocusLost(enterPressed, inputThatCausedFocusLost)
if enterPressed then
print("Player pressed Enter")
else
print("Player pressed", inputThatCausedFocusLost.KeyCode)
end
end
textBox.FocusLost:Connect(onFocusLost)
Focused
Fires quando o TextBox ganha foco - normalmente quando um cliente clica/toque em um TextBox para iniciar a entrada de texto. Isso também dispara se um TextBox forçar foco no usuário.
Pode ser usado ao lado de TextBox.FocusLost para rastrear quando uma Caixa de Texto ganha e perde foco.
Veja também o UserInputService.TextBoxFocused e UserInputService.TextBoxFocusReleased para funções semelhantes que dependem do serviço UserInputService.
Este evento só será executado se você usar um LocalScript.
Amostras de código
local textBox = script.Parent
local function onFocused()
print("Focused")
end
textBox.Focused:Connect(onFocused)