TextBox
*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.
Un TextBox consente al giocatore di fornire un input di testo.Si comporta in modo simile a un TextButton , tranne che una singola TextBox può essere messa in evidenza facendo clic, toccando o selezionando il gamepad.Mentre è in focus, il giocatore può utilizzare una tastiera per modificare la ProprietàText .
- Se non c'è testo, il PlaceholderText sarà visibile. Questo è utile per richiedere ai giocatori del tipo o del formato di dati che dovrebbero inserire.
- Per impostazione predefinita, la proprietà ClearTextOnFocus è abilitata e garantisce che non ci sia alcun testo esistente quando una TextBox è focalizzata.Questo potrebbe non essere desiderabile per il testo che dovrebbe essere modificabile dal Giocatore.
- La proprietà MultiLine consente ai giocatori di inserire più linee di testo con i caratteri di nuova riga ( \n ).
Il ContextActionService onora i tasti della casella di testo e impedirà automaticamente il passaggio degli eventi di pressione della chiave alle azioni legate con ContextActionService:BindAction() .UserInputService.InputBegan e eventi correlati continueranno a essere attivati mentre una TextBox è in primo piano.
Stato di focus
È possibile rilevare e modificare lo stato di focus di un TextBox:
- Puoi usare CaptureFocus quando appare un dialogo in modo che il giocatore non debba fare clic su una TextBox quando diventa disponibile; puoi usare ContextActionService:BindAction() per associare una certa chiave a un TextBox utilizzando questa funzione.Quando una TextBox entra in focus, si attiva l'evento Focused .
- Puoi determinare se una certa TextBox è in primo piano utilizzando IsFocused . In alternativa, UserInputService:GetFocusedTextBox() può essere utilizzato per controllare se qualsiasi TextBox è in primo piano.
- Quando il giocatore ha finito di inserire il testo, si attiva l'evento FocusLost che indica se l'utente ha premuto Enter per inviare il testo insieme all'evento InputObject che ha causato la perdita di focus.Quando si utilizza tastiere sullo schermo su mobile e console, ReturnPressedFromOnScreenKeyboard può anche essere Lanciare.
- Se durante il Partitasi presenta una questione più importante, puoi ReleaseFocus della TextBox in modo che l'input della tastiera di un Giocatoretorni nel tuo Gioco.
Modifica del testo
Una TextBox supporta la selezione del testo attraverso le sue proprietà CursorPosition e SelectionStart.Usando GetPropertyChangedSignal , puoi rilevare quando una selezione cambia.Inoltre, è possibile per i giocatori copiare e incollare il testo all'interno di una TextBox, abilitando il Assistenzadi base per gli appunti.
Avviso di filtraggio del testo Giochi che facilitano la comunicazione player-to-player utilizzando il testo, come la chat personalizzata o le etichette di nome, devono filtrare correttamente tale testo usando TextService:FilterStringAsync() o Chat:FilterStringAsync() .Se questo non viene fatto correttamente, il tuo gioco può ricevere l'azione di moderazione.
Campioni di codice
This code sample creates a password-like interface for a TextBox, giving visual feedback on the player's input.
-- 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)
Sommario
Proprietà
Determina se fare clic sulla TextBox cancellerà la sua ProprietàTextBox.Text .
Determina lo spostamento del cursore del testo in bytes, o -1 se non c'è cursore.
Determina il carattere utilizzato per rendere il testo.
Determina il carattere utilizzato per rendere il testo.
Aumenta lo spazio tra le linee di testo nel TextBox .
Il numero massimo di grafemi che TextBox può Mostrare.
Quando è impostato su vero, il testo all'interno di una TextBox è in grado di spostarsi su più linee. Ciò consente anche ai giocatori di utilizzare il tasto di inserimento per spostarsi su una nuova linea.
Imposta il colore del testo che viene utilizzato quando nessun testo è stato ancora inserito nella TextBox.
Imposta il testo che viene visualizzato quando nessun testo è stato ancora inserito nella TextBox.
Determina se la TextBox rende la stringa TextBox.Text usando la formattazione del testo ricco.
Determina la posizione di partenza di una selezione del testo, o -1 se non viene selezionato alcun testo.
Se impostato su vero, l'input nativo per la piattaforma viene utilizzato invece della tastiera integrata di Roblox.
Determina la stringa renduta dall'elemento UI.
La dimensione del testo di un elemento UI in offset.
Determina il colore del testo rendionato.
Determina se l'utente può cambiare il Text .
Se il testo si adatta alle restrizioni della TextBox.
Cambia se il testo viene ridimensionato per adattarsi all'oggetto GUI che lo rende.
Determina l'altezza della linea del testo negli spostamenti.
Determina il colore del tratto del testo (outline).
Determina la trasparenza dello stroke del testo (outline).
Determina la trasparenza del testo rendionato.
Controlla la troncazione del testo visualizzato in questo TextBox.
Determina se i testi si avvolgono su più righe all'interno dello Spaziodell'elemento GuiObject, riducendo il testo in eccesso.
Determina l'allineamento orizzontale del testo rendionato.
Determina l'allineamento verticale del testo rendionato.
Determina se questo elemento UI riceve l'input.
Determina il punto di origine di un GuiObject , rispetto alla sua dimensione assoluta.
Determina se la ridimensionamento avvenga in base al contenuto del figlio.
Determina il colore di sfondo GuiObject .
Determina la trasparenza del GuiObject.
Determina il colore del bordo GuiObject .
Determina in che modo il bordo GuiObject viene disposto rispetto alle sue dimensioni.
Determina la larghezza dei pixel del bordo GuiObject .
Determina se il discendente GuiObjects al di fuori dei confini di un elemento GUI padre deve Renderizzare.
Determina se il mouse del Giocatoreviene attivamente premuto su GuiObject o no.
Determina se il GuiButton può essere interagito o meno, o se il GuiState del GuiObject sta cambiando o meno.
Controlla l'ordine di selezione del GuiObject quando viene utilizzato con un UIGridStyleLayout .
Imposta il GuiObject che verrà selezionato quando il selettore del gamepad viene spostato verso il basso.
Imposta il GuiObject che verrà selezionato quando il selettore del gamepad viene spostato a sinistra.
Imposta il GuiObject che verrà selezionato quando il selettore del gamepad viene spostato a destra.
Imposta il GuiObject che verrà selezionato quando il selettore del gamepad viene spostato verso l'alto.
Determina la posizione pixelare e scalare del GuiObject .
Determina il numero di gradi con cui il GuiObject viene ruotato.
Determina se il GuiObject può essere selezionato da un gamepad.
Sovrascrive l'abbellimento di selezione predefinito utilizzato per i gamepad.
L'ordine di GuiObjects selezionato dall'interfaccia utente del gamepad.
Determina la dimensione pixelare e scalare del GuiObject .
Imposta gli assi Size su cui si baserà il GuiObject , rispetto alla dimensione del suo parent.
Una proprietà mista di BackgroundTransparency e TextTransparency.
Determina se verranno resi i GuiObject e i suoi discendenti.
Determina l'ordine in cui un GuiObject rende relativamente agli altri.
Descrive la posizione effettiva dello schermo di un elemento GuiBase2d in pixel.
Descrive la rotazione effettiva dello schermo di un elemento GuiBase2d in gradi.
Descrive la dimensione effettiva dello schermo di un elemento GuiBase2d , in pixel.
Quando è impostato su true , la localizzazione verrà applicata a questo GuiBase2d e ai suoi discendenti.
Un riferimento a un LocalizationTable da utilizzare per applicare la localizzazione automatizzata a questo GuiBase2d e ai suoi discendenti.
Personalizza il comportamento di selezione del gamepad nella direzione down.
Personalizza il comportamento di selezione del gamepad nella direzione sinistra.
Personalizza il comportamento di selezione del gamepad nella direzione giusta.
Personalizza il comportamento di selezione del gamepad nella direzione up.
Consente la personalizzazione del movimento di selezione del gamepad.
Metodi
Forza il client a concentrarsi sulla TextBox.
Restituisce vero se la casella di testo è focalizzata, o falso se non lo è.
Forza il client a non concentrarsi sulla TextBox.
- TweenPosition(endPosition : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : boolean,callback : function):boolean
Sposta lisciamente una GUI a una nuova UDim2 .
- TweenSize(endSize : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : boolean,callback : function):boolean
- TweenSizeAndPosition(endSize : UDim2,endPosition : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : boolean,callback : function):boolean
Sposta senza problemi una GUI a una nuova dimensione e posizione.
Eventi
Si accende quando il client lascia il suo focus lasciare il TextBox .
Si accende quando il TextBox ottiene focus.
Spedito quando un utente inizia a interagire tramite un dispositivo Interfaccia Uomo-Computer (tasto del mouse giù, tocco di inizio, pulsante della tastiera giù, ecc.).
Spedito quando un utente cambia il modo in cui interagisce tramite un dispositivo Interfaccia Uomo-Computer (tasto del mouse verso il basso, tocco di inizio, pulsante della tastiera verso il basso, ecc.).
Spedito quando un utente smette di interagire tramite un dispositivo Interfaccia Uomo-Computer (tasto del mouse giù, tocco di inizio, pulsante della tastiera giù, ecc.).
Si attiva quando un utente muove il mouse su un elemento GUI.
Si attiva quando un utente muove il mouse fuori da un elemento GUI.
Si attiva ogni volta che un utente muove il mouse mentre è all'interno di un elemento GUI.
Si accende quando un utente fa scorrere la ruota del mouse indietro quando il mouse è sopra un elemento GUI.
Si accende quando un utente scorre la ruota del mouse in avanti quando il mouse è sopra un elemento GUI.
Spedito quando l'oggetto Gui viene focalizzato con il selettore Gamepad.
Spedito quando il selettore del Gamepad smette di concentrarsi sull'GuiObject.
Si accende quando il giocatore inizia, continua e smette di premere a lungo l'elemento UI.
- TouchPan(touchPositions : Array,totalTranslation : Vector2,velocity : Vector2,state : Enum.UserInputState):RBXScriptSignal
Si accende quando il giocatore muove il dito sull'elemento UI.
- TouchPinch(touchPositions : Array,scale : number,velocity : number,state : Enum.UserInputState):RBXScriptSignal
Si accende quando il giocatore esegue una pinza o una trazione utilizzando due dita sull'elemento UI.
- TouchRotate(touchPositions : Array,rotation : number,velocity : number,state : Enum.UserInputState):RBXScriptSignal
Si accende quando il giocatore esegue un gesto di rotazione utilizzando due dita sull'elemento UI.
Si attiva quando il giocatore esegue una gesture di scorrimento sull'elemento UI.
Si attiva quando il giocatore esegue una gesture tap sull'elemento UI.
- SelectionChanged(amISelected : boolean,previousSelection : GuiObject,newSelection : GuiObject):RBXScriptSignal
Si accende quando la selezione del gamepad si sposta, lascia o cambia all'interno del connesso GuiBase2d o di qualsiasi discendente GuiObjects .
Proprietà
ContentText
CursorPosition
Questa proprietà determina lo spostamento del cursore del testo in byte o -1 se il TextBox non viene attualmente modificato.Un valore di 1 rappresenta la posizione prima del primo byte nella ProprietàText.Quando viene utilizzato in combinazione con la ProprietàSelectionStart , è possibile sia ottenere che impostare il testo selezionato all'interno di un TextBox .
Nota che le unità di questa proprietà sono byte e che molti caratteri Unicode come le emoji sono più lunghe di 1 byte.Ad esempio, se un giocatore digita "Hello👋" ("Hello" immediatamente seguito dal segno della mano ondeggiante), la posizione del cursore sarebbe 10 , non 7 , poiché l'emoji utilizza 4 byte.
Campioni di codice
This code sample demonstrates reading the current selection of a TextBox using CursorPosition() and SelectionStart().
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
La proprietà Font seleziona uno dei diversi predefiniti fonts con cui l'elemento UI renderizza il suo testo.Alcune font hanno varianti audaci, italiche e/o leggere (poiché non esistono proprietà di peso della font o di stile della font).
A eccezione della font "Legacy", ogni font renderà il testo con l'altezza della linea uguale alla ProprietàTextBox.TextSize.Il carattere "Code" è l'unico carattere monospazio.Ha la proprietà unica che ogni personaggio ha la stessa larghezza e altezza di rapporto di 1:2.L'ampiezza di ciascun personaggio è approssimativamente la metà della ProprietàTextBox.TextSize .
Questa proprietà viene mantenuta sincronizzata con la ProprietàTextBox.FontFace . Quando si imposta il carattere, il carattere Font sarà impostato su Font.fromEnum(value) .
Campioni di codice
This code sample sets a parent TextLabel's Font and Text properties to all the different fonts available.
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
This code sample renders a list of all the available fonts.
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
La proprietà FontFace è simile alla ProprietàFont, ma consente di impostare caratteri che non esistono nell'Enumero di caratteri.
Questa proprietà viene mantenuta sincronizzata con la ProprietàTextBox.Font .Quando si imposta FontFace, il carattere viene impostato al valore enum corrispondente, o a Enum.Font.Unknown se non ci sono corrispondenze.
LineHeight
Controlla l'altezza delle linee, come un multiplo della dimensione quadrata del carattere, aumentando lo spazio tra le linee di testo nel TextBox .I valori validi vanno da 1.0 a 3.0, predefinito su 1.0.
MaxVisibleGraphemes
Questa proprietà controlla il numero massimo di grafemi (o unità di testo) che vengono visualizzati sul TextBox, indipendentemente dal fatto che stia mostrando il TextBox.PlaceholderText o il TextBox.Text.
Cambiare la proprietà non cambia la posizione o le dimensioni dei grafemi visibili - il layout verrà calcolato come se tutti i grafemi fossero visibili.
Impostare la proprietà a -1 disabilita il limite e mostra l'interezza del TextBox.Text .
MultiLine
Quando è impostato su vero, il testo all'interno di una TextBox è in grado di spostarsi su più linee. Ciò consente anche ai giocatori di utilizzare il tasto di inserimento per spostarsi su una nuova linea.
OpenTypeFeatures
OpenTypeFeaturesError
PlaceholderColor3
Imposta il colore del testo che viene utilizzato quando nessun testo è stato ancora inserito nella TextBox.
PlaceholderText
Imposta il testo che viene visualizzato quando nessun testo è stato ancora inserito nella TextBox.
RichText
Questa proprietà determina se il TextBox rende la stringa TextBox.Text utilizzando il formattaggio di testo ricco.Il testo ricco utilizza semplici tag di marcatura per formattare le sezioni della stringa in grassetto, in grassetto, con colori specifici e altro ancora.
Per utilizzare il testo ricco, include semplicemente i tag di formattazione nella StringaTextBox.Text.
Nota che quando il TextBox ha questa proprietà abilitata e la casella guadagna focus, l'utente sarà in grado di modificare e interagire con la StringaXML completa, inclusi tutti i tag di formattazione.Quando viene perso il focus, il testo verrà automaticamente analizzato e reso le etichette come testo ricco.
SelectionStart
Determina la posizione di partenza di una selezione del testo, o -1 se la TextBox non ha alcun intervallo di testo selezionato.Se il valore è -1 o equivalente a CursorPosition , non c'è alcun intervallo di testo selezionato.Questa proprietà utilizza la stessa logica di posizionamento di CursorPosition.SelectionStart sarà maggiore di CursorPosition se il cursore è all'inizio di una selezione e minore di CursorPosition se il cursore è alla Terminare.
Campioni di codice
This code sample demonstrates reading the current selection of a TextBox using CursorPosition() and SelectionStart().
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 impostato su vero, l'input nativo per la piattaforma viene utilizzato invece della tastiera integrata di Roblox.
Text
La proprietà Text determina il contenuto reso dall'elemento UI.Le proprietà visive della stringa visualizzata sullo schermo sono determinate da TextBox.TextColor3 , TextBox.TextTransparency , TextBox.TextSize , TextBox.Font , TextBox.TextScaled , TextBox.TextWrapped , TextBox.TextXAlignment e TextBox.TextYAlignment.
È possibile rendere emoji (ad esempio, 😃) e altri simboli.Questi simboli speciali non sono influenzati dalla proprietà TextBox.TextColor3.Questi possono essere incollati in Script e LocalScript oggetti, così come il campo all'interno della finestra Proprietà.
Questa proprietà può contenere caratteri di nuova riga, tuttavia non è possibile digitare i caratteri di nuova riga nella finestra Proprietà.Allo stesso modo, questa proprietà può contenere un personaggio di scheda, ma verrà visualizzato come spazio invece.
Campioni di codice
This code sample creates a fading banner for a TextLabel. It fades text out, chooses a random string (avoiding repetition), and fades back in.
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
This code sample repeatedly tweens a TextLabel's TextSize from 5 to 100 and fades out the text as it grows in size.
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
This code sample renders a list of all the available fonts.
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
This code sample demonstrates TextWrap by spelling out a long chunk of text progressively. If the text doesn't fit, it turns a different color.
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
This code sample demonstrates emoji rendering using the Text property.
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
La proprietà read-only TextBounds riflette la dimensione assoluta del testo rendionato negli spostamenti.In altre parole, se tentassi di inserire del testo in un rettangolo, questa proprietà rifletterebbe le dimensioni minime del rettangolo di cui avresti bisogno per inserire il testo.
Usando TextService:GetTextSize() , puoi prevedere quale sarà il TextBounds su un TextLabel dato una Stringa, TextBox.Font , TextBox.TextSize e dimensione del frame.
Campioni di codice
This code sample dynamically resizes a TextLabel, TextButton or TextBox to match the size of its TextBounds. Try changing the minimum width/height and pasting into a LocalScript in a TextBox.
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
Questa proprietà determina il colore di tutto il testo renduto da un elemento GuiObject .Questa proprietà insieme a TextBox.Font , TextBox.TextSize e TextBox.TextTransparency determinerà le proprietà visive del testo.Il testo viene reso dopo lo stroke del testo ( TextBox.TextStrokeColor3 ).
È importante che il testo sia facilmente letto dai giocatori! Assicurati di scegliere colori con poca o nessuna saturazione, come bianco, grigio o nero.Assicurati che il colore del tuo testo sia contrastato dal TextBox.BackgroundColor3 dell'elemento UI.Se l'elemento ha uno sfondo trasparente, prova ad applicare un nero TextBox.TextStrokeColor3 per aiutare a contrastare il testo con il mondo 3D dietro di esso.
Campioni di codice
This code sample, when placed within a TextBox, will turn the text color red if the typed string contains no vowels (A, E, I, O or U).
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)
This code sample creates a password-like interface for a TextBox, giving visual feedback on the player's input.
-- 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)
This code sample makes a TextLabel or TextButton count backwards from 10, setting the text color as it does so.
-- 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
This code sample mirrors the contents of a StringValue into a TextLabel, updating and setting the color of the text as it changes.
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 l'utente può modificare il Text attraverso l'input.Si consiglia di disabilitare ClearTextOnFocus quando questa proprietà è disabilitata, altrimenti il testo potrebbe essere cancellato durante l'attenzione.Questa proprietà è utile per creare TextBox read-only da cui è possibile copiare il contenuto in gioco.
TextScaled
Piuttosto che utilizzare TextScaled, ti consigliamo di considerare l'utilizzo di AutomaticSize, un nuovo metodo per ridimensionare dinamicamente l'interfaccia utente che ti darà il miglior risultato visivo possibile.
La proprietà TextScaled determina se il testo viene ridimensionato in modo da riempire tutto lo Spaziodell'elemento UI.Quando questo è abilitato, TextBox.TextSize viene ignorato e TextBox.TextWrapped viene abilitato automaticamente.Questa proprietà è utile per gli elementi dell'interfaccia di rendering del testo all'interno di BillboardGuis .
Quando questa proprietà viene utilizzata per l'interfaccia utente dello spazio schermo, potrebbe essere desiderabile utilizzare un UITextSizeConstraint per limitare l'intervallo delle possibili dimensioni del testo.
Testo in scala e dimensione automatica
Si consiglia agli sviluppatori di evitare l'uso di TextScaled e di regolare l'interfaccia utente per approfittare della proprietà AutomaticSize invece.Ecco le differenze principali tra le due proprietà:
- TextScaled scala il contenuto (il testo) per soddisfare l'interfaccia utente. Senza una attenta considerazione, alcuni testi possono diventare illeggibili se ridotti troppo piccoli.
- AutomaticSize ridimensiona l'interfaccia utente per contenere il contenuto.
Con AutomaticSize, puoi regolare la tua interfaccia utente per ospitare il contenuto (testo) mantenendo una dimensione di carattere coerente.Per ulteriori informazioni su come utilizzare la ridimensionamento automatico, vedi l'articolo Dimensione automatica dell'interfaccia utente.
Suggeriamo di non applicare sia TextScaled che AutomaticSize sullo stesso oggetto UI. Se applicate entrambe le proprietà:
- AutomaticSize determina la quantità massima di spazio disponibile che un GuiObject può utilizzare (in questo caso, il testo)
- TextScaled utilizza lo spazio disponibile determinato da AutomaticSize, per ridimensionare la dimensione del carattere per adattarsi allo Spaziodisponibile, che si espanderà fino alla dimensione massima del carattere (100), se non ci sono restrizioni di dimensione
- Il risultato finale sarà: il testo passa a 100 dimensioni di carattere e l'oggetto UI si espanderà per adattarsi a quel testo
L'utilizzo di entrambi AutomaticSize e TextScaled allo stesso tempo può comportare notevoli differenze di dimensionamento rispetto a quando AutomaticSize è Off.
Campioni di codice
This code sample demonstrates TextWrap by spelling out a long chunk of text progressively. If the text doesn't fit, it turns a different color.
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
La proprietà TextSize determina l'altezza negli spostamenti di una linea di testo rendere.L'unità è in offset, non in punti (che viene utilizzata nella maggior parte dei programmi di modifica dei documenti).Il carattere "Legacy" non contiene questa Proprietà.
Campioni di codice
This code sample repeatedly tweens a TextLabel's TextSize from 5 to 100 and fades out the text as it grows in size.
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
La proprietà TextStrokeColor3 imposta il colore dello stroke, o contorno, del testo rendionato.Questa proprietà e TextBox.TextStrokeTransparency determinano le proprietà visive dello stroke del testo.
Il tratto del testo viene reso prima del testo normale e è semplicemente 4 rendering dello stesso testo in +/- 1 spostamenti di pixel in ogni direzione.Il rendering del tratto di testo funziona in modo indipendente e identico a TextBox.TextColor3 e TextBox.TextTransparency .
Campioni di codice
This code sample oscillates a TextLabel's TextStrokeTransparency so that it blinks the highlight of a text.
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
La proprietà TextStrokeTransparency imposta la trasparenza dello stroke, o dell'outline, del testo rendionato.Questa proprietà e TextBox.TextStrokeColor3 determinano le proprietà visive dello stroke del testo.
Il tratto del testo viene reso prima del testo normale e è semplicemente 4 rendering dello stesso testo in +/- 1 spostamenti di pixel in ogni direzione.Il rendering del tratto di testo funziona in modo indipendente e identico a TextBox.TextColor3 e TextBox.TextTransparency .Poiché lo stroke del testo è semplicemente una serie di rendering della stessa trasparenza, questa proprietà è essenzialmente moltiplicativa su se stessa quattro volte (ad esempiouna trasparenza del tratto di testo di 0,5 appare circa uguale alla trasparenza del testo di 0,0625 o 0,5^4).Pertanto, si consiglia di impostare TextStrokeTransparency a un valore compreso tra 0.75 e 1 per un effetto più sottile.
Campioni di codice
This code sample oscillates a TextLabel's TextStrokeTransparency so that it blinks the highlight of a text.
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
La proprietà TextColor3 determina la trasparenza di tutto il testo renduto da un elemento UI.Questa proprietà insieme a TextBox.Font , TextBox.TextSize e TextBox.TextColor3 determinerà le proprietà visive del testo.Il testo viene reso dopo lo stroke del testo ( TextBox.TextStrokeTransparency ).
L'eliminazione del testo nell'utilizzo di un ciclo while numerico è un fantastico modo per attirare l'attenzione del Giocatoreal testo che appare sullo schermo.
-- Count backwards from 1 to 0, decrementing by 0.1for i = 1, 0, -0.1 dotextLabel.TextTransparency = itask.wait(0.1)end
Campioni di codice
This code sample creates a fading banner for a TextLabel. It fades text out, chooses a random string (avoiding repetition), and fades back in.
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
This code sample repeatedly tweens a TextLabel's TextSize from 5 to 100 and fades out the text as it grows in size.
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 è abilitata, questa proprietà renderizza il testo su più linee all'interno dello spazio di un elemento TextBox in modo che TextBox.TextBounds non superi mai l'GuiBase2d.AbsoluteSize dell'elemento GUI.
Questo viene ottenuto rompendo lunghe linee di testo in molte linee.Le interruzioni di linea preferiranno lo spazio bianco; se una lunga parola non interrotta supera la larghezza dell'elemento, quella parola verrà divisa in più linee.
Se altre interruzioni di linea causassero l'eccesso dell'altezza verticale del testo (la componente Y di TextBox.TextBounds ) rispetto all'altezza verticale dell'elemento (la componente Y di GuiBase2d.AbsoluteSize ), quella linea non verrà affatto resa.
Campioni di codice
This code sample demonstrates TextWrap by spelling out a long chunk of text progressively. If the text doesn't fit, it turns a different color.
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
TextXAlignment determina l'allineamento orizzontale (asse X) del testo visualizzato all'interno dello Spaziodi un elemento UI.Funziona in modo simile alla proprietà CSS text-align, con i valori di sinistra, destra e centro (non esiste l'opzione di giustificazione).Per Sinistra e Destra, il testo viene reso in modo che i confini del testo sinistra/destra tocchino solo l'estremità dell'elemento UI rettangolare.Per il centro, ogni linea di testo è centrata sull'angolo esatto del rettangolo dell'elemento UI.
Questa proprietà viene utilizzata in combinazione con TextBox.TextYAlignment per determinare completamente l'allineamento del testo su entrambi gli assi.Questa proprietà non influirà sulle proprietà read-only TextBox.TextBounds e TextBox.TextFits.
Campioni di codice
This code sample shows all the different text alignment combinations by iterating over each enum item. It is meant to be placed within a TextLabel, TextButton or TextBox.
-- 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
TextYAlignment determina l'allineamento verticale (asse Y) del testo renduto all'interno dello Spaziodi un elemento UI.Per Top e Bottom, il testo viene reso in modo che i confini del testo superiore/inferiore tocchino solo l'estremità dell'elemento UI rettangolare.Per il centro, il testo viene reso in modo che ci sia uno spazio uguale dai confini superiori del testo fino alla parte superiore dell'elemento e dai confini inferiori del testo fino alla parte inferiore dell'elemento.
Questa proprietà viene utilizzata in combinazione con TextBox.TextXAlignment per determinare completamente l'allineamento del testo su entrambi gli assi.Questa proprietà non influirà sulle proprietà read-only TextBox.TextBounds e TextBox.TextFits.
Campioni di codice
This code sample shows all the different text alignment combinations by iterating over each enum item. It is meant to be placed within a TextLabel, TextButton or TextBox.
-- 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
Metodi
CaptureFocus
Forza il client a concentrarsi sulla TextBox.
Restituzioni
Campioni di codice
This code sample causes the client to focus on the parent TextBox when the Q key is pressed by the player.
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
Restituisce vero se la casella di testo è focalizzata, o falso se non lo è.
Restituzioni
ReleaseFocus
Forza il client a non concentrarsi sulla TextBox. Il parametro consente di sovrascrivere il parametro nell'evento >.
Questo oggetto deve essere utilizzato con un LocalScript per funzionare come previsto in modalità online.
Il codice mostrato qui sotto costringerà il client a non focalizzare 'TextBox' 5 secondi dopo che è selezionato:
local TextBox = script.Parent
TextBox.Focused:Connect(function()
wait(5)
TextBox:ReleaseFocus()
end)
Si prega di essere consapevoli che l'esempio sopra riportato presume che sia in un LocalScript, come figlio di un TextBox.
Parametri
Restituzioni
Campioni di codice
The code shown below will force the client to unfocus the 'TextBox' 5 seconds after it's selected:
local textBox = script.Parent
local function onFocused()
task.wait(5)
textBox:ReleaseFocus()
end
textBox.Focused:Connect(onFocused)
Eventi
FocusLost
Si accende quando il client lascia il suo focus lasciare la TextBox - tipicamente quando un client fa clic/tocca al di fuori della TextBox.Questo si attiva anche se una TextBox forza il focus sull'utente.
Può essere utilizzato insieme a TextBox.Focused per tracciare quando una TextBox guadagna e perde focus.
Vedi anche il UserInputService.TextBoxFocused e UserInputService.TextBoxFocusReleased per funzioni simili che si basano sul servizio UserInputService.
Questo evento si attiverà solo quando viene utilizzato in un LocalScript .
Parametri
Un booleano che indica se il client ha premuto Invio per perdere il focus ( vero ) o no ( falso ).
Un'istanza InputObject che indica il tipo di input che ha causato la perdita di focus della TextBox.
Campioni di codice
The example shown below will print "Focus was lost because enter was pressed!" whenever the TextBox loses focus as a result of the enter key being pressed.
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)
This example works when placed in a LocalScript that is the child of a TextBox. When the TextBox loses focus, the example prints either:
- "Player pressed Enter" - if the TextBox lost focus because the player pressed the Enter key. or
- "Player pressed InputObject.KeyCode" - where "KeyCode" is the InputObject KeyCode property of the input that caused the TextBox to lose focus. For example, pressing the Escape (esc) key to exit TextBox focus returns an InputObject instance with the KeyCode 'InputObject.Escape'.
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
Si accende quando il TextBox ottiene focus - tipicamente quando un client clicca/tocca su un TextBox per iniziare l'inserimento del testo.Questo si attiva anche se una TextBox forza il focus sull'utente.
Può essere utilizzato insieme a TextBox.FocusLost per tracciare quando una TextBox guadagna e perde focus.
Vedi anche il UserInputService.TextBoxFocused e UserInputService.TextBoxFocusReleased per funzioni simili che si basano sul servizio UserInputService.
Questo evento si attiverà solo quando viene utilizzato in un LocalScript .
Campioni di codice
This example works when placed in a LocalScript that is the child of a TextBox. When the TextBox gains focus, the example prints "Focus".
local textBox = script.Parent
local function onFocused()
print("Focused")
end
textBox.Focused:Connect(onFocused)