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 l'input del testo. Si comporta allo stesso modo di un TextButton , tranne che un singolo TextBox può essere messo in focus facendo clic, toccando o selezionando il gamepad. Mentre in focus, il giocatore può utilizzare un tastiera per modificare la ProprietàText .
- Se non c'è testo, il PlaceholderText apparirà. Questo è utile per invitare i giocatori del tipo o formato di dati che dovrebbero inserire.
- Per impostazione predefinita, la proprietà ClearTextOnFocus è abilitata e garantisce che non ci sia nessun 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ù righe di testo con nuovi caratteri di linea ( \n ).
Il ContextActionService onora i tasti di scelta del testo e impedirà automaticamente che i pressioni di chiave vengono passati alle azioni legate a ContextActionService:BindAction() . UserInputService.InputBegan e eventi correlati si attivano mentre un testo è in focus.
Stato di focus
È possibile rilevare e modificare lo stato di focus di una TextBox:
- Puoi usare CaptureFocus quando appare una finestra di dialogo in modo che il giocatore non debba fare clic su un TextBox quando diventa disponibile; puoi usare ContextActionService:BindAction() per associare un certo key per focalizzare un TextBox usando questa funzione. Quando un TextBox viene focalizzato, l'evento Class.Toolbar
- Puoi rilevare se un determinato TextBox è in focus utilizzando IsFocused . In alternativa, UserInputService:GetFocusedTextBox() può essere utilizzato per controllare se qualsiasi TextBox è in focus.
- Quando il giocatore ha finito di inserire il testo, l'evento FocusLost attiva, che indica se l'utente ha premuto Inserisci per inviare il testo insieme all'InputObject che ha causato la perdita di focus. Quando viene utilizzato sui tastierini di schermo su mobile e
- Se durante il Partitasorgono ulteriori problemi importanti, puoi ReleaseFocus della TextBox in modo che l'input del tastierino di un Giocatorevenga restituito al tuo Gioco.
Modifica del testo
Un TextBox supporta la selezione del testo attraverso le sue proprietà CursorPosition e SelectionStart. Usando GetPropertyChangedSignal, è possibile rilevare quando una selezione cambia. Inoltre, è possibile per i giocatori copiare e pastare il testo all'interno di un TextBox, abilitando il Assistenzaper
Avviso di filtro del testo I giochi che facilitano la comunicazione tra giocatori utilizzando il testo, come la chat personalizzata o le etichette, devono filtrare correttamente tale testo utilizzando TextService:FilterStringAsync() o Class.Chat: FilterStringAsync() . Se questo non viene fatto correttamente, il tuo gioco potrebbe ricevere un'azione di moderazione.
Campioni di codice
-- 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 facendo clic sulla TextBox cancellerà la sua ProprietàTextBox.Text .
Determina l'Offset 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.
Scala lo spazio tra le righe del testo nel TextBox .
Il numero massimo di graforemi che TextBox può Mostrare.
Quando impostato su true, il testo all'interno di una TextBox è in grado di spostarsi su più righe. Questo consente anche ai giocatori di utilizzare il tasto Enter per passare su una nuova riga.
Imposta il colore di testo che viene utilizzato quando nessun testo è ancora stato inserito nella TextBox.
Imposta il testo che viene visualizzato quando nessun testo è ancora stato inserito nella TextBox.
Determina se TextBox rende la stringa TextBox.Text utilizzando la formattazione del testo ricco.
Determina la posizione di partenza di una selezione del testo, o -1 se non è selezionato nessun testo.
Se impostato su vero, l'input nativo della piattaforma viene utilizzato invece della tastiera incorporata di Roblox.
Determina la stringa rendere dal UI elemento.
La dimensione del testo di un elemento UI negli offset.
Determina il colore del testo renduto.
Determina se l'utente può modificare 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 offset.
Determina il colore del tratto di testo (outline).
Determina la trasparenza del tratto di testo (outline).
Determina la trasparenza del testo renduto.
Controlla la riduzione del testo visualizzato in questa TextBox.
Determina se il testo avvolge più righe all'interno dello Spaziodell'elemento GUI , riducendo il testo in eccesso.
Determina l'allineamento orizzontale del testo renduto.
Determina l'allineamento verticale del testo renduto.
Determina se questo elemento UI affonda l'input.
Determina il punto di origine di un GuiObject , rispetto alla sua dimensione assoluta.
Determina se la ridimensionamento avviene in base al contenuto figlio.
Determina il colore di sfondo GuiObject .
Determina la trasparenza di sfondo e di GuiObject .
Determina il colore del GuiObject bordura.
Determina in che modo il GuiObject confine è distribuito rispetto alle sue dimensioni.
Determina la larghezza del pixel del confine GuiObject .
Determina se il discendente GuiObjects al di fuori dei confini di un elemento GUI padre dovrebbe essere Renderizzare.
Determina se il mouse del Giocatoreviene attivamente premuto sul GuiObject o no.
Determina se il GuiButton può essere interattato o no, o se il GuiState del GuiObject sta cambiando o no.
Controlla l'ordine di sorta del GuiObject quando viene utilizzato con un UIGridStyleLayout .
Imposta il GuiObject che verrà selezionato quando il pulsante di selezione del gamepad verrà spostato verso il basso.
Imposta il GuiObject che verrà selezionato quando il pulsante di selezione del gamepad sarà spostato a sinistra.
Imposta il GuiObject che verrà selezionato quando il pulsante di selezione del gamepad sarà spostato a destra.
Imposta il GuiObject che verrà selezionato quando il pulsante di selezione del gamepad verrà spostato verso l'alto.
Determina la posizione pixel e scalare del GuiObject .
Determina il numero di gradi con cui il GuiObject è ruotato.
Determine se il GUI può essere selezionato da un gamepad.
Sovrascrivi l'ornamento di selezione predefinito utilizzato per i gamepad.
L'ordine di GuiObjects selezionato dalla selezione della barra di gioco.
Determina la dimensione pixel e scalare del GuiObject .
Imposta gli assi Size su cui sarà basato il GuiObject parent.
Una proprietà mistura di BackgroundTransparency e TextTransparency .
Determina se il GuiObject e i suoi discendenti saranno renduti.
Determina l'ordine in cui un GuiObject rende rispetto agli altri.
Descrive la posizione reale dello schermo di un elemento UI, in pixel.
Descrive la rotazione dell'interfaccia utente reale, in gradi.
Descrive la dimensione reale dello schermo di un elemento UI, in pixel.
Quando impostato su true, la localizzazione sarà applicata a questo GuiBase2d e ai suoi discendenti.
Un riferimento a un LocalizationTable per essere utilizzato per applicare la localizzazione automatica a questo GuiBase2d e ai suoi discendenti.
Personalizza il comportamento della selezione del gamepad nella direzione in cui si muove verso il basso.
Personalizza il comportamento di selezione del gamepad nella direzione di sinistra.
Personalizza il comportamento della selezione del gamepad nella direzione giusta.
Personalizza il comportamento della selezione del gamepad nell'area di direzione up.
Consente la personalizzazione della 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 focalizzare la TextBox.
- TweenPosition(endPosition : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : bool,callback : function):bool
Smoothly moves a GUI to a new UDim2 .
- TweenSize(endSize : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : bool,callback : function):bool
Ridimensiona rapidamente una GUI in una nuova UDim2 .
- TweenSizeAndPosition(endSize : UDim2,endPosition : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : bool,callback : function):bool
Smoothly sposta una GUI a una nuova dimensione e posizione.
Eventi
Si attiva quando il client lascia il loro focus TextBox .
Si attiva quando il TextBox ottiene il focus.
Si attiva quando un utente inizia a interagire con un dispositivo dell'interfaccia utente-computer (tasto del mouse, inizio del tocco, pulsante della tastiera, ecc).
Si attiva quando un utente cambia il modo in cui interagisce con un dispositivo dell'interfaccia utente-computer (tasto del mouse, inizio del tocco, pulsante del tastiera, ecc).
Si esegue quando un utente smette di interagire tramite un dispositivo di interfaccia uomo-corrispettore (tasto del mouse, inizio del tocco, pulsante del tastiera, ecc).
Si attiva quando un utente muove il mouse in un elemento GUI.
Si attiva quando un utente muove il mouse da un elemento GUI.
Si attiva ogni volta che un utente muove il mouse quando è all'interno di un elemento GUI.
Si attiva quando un utente fa scorrere la rotella del mouse quando il mouse è su un elemento GUI.
Si attiva quando un utente fa clic con il mouse sulla ruota del mouse quando il mouse è su un elemento GUI.
Fired quando l'oggetto GuiObject viene focalizzato con il Gamepad Selector.
Si è spento quando il Gamepad Selector ha smesso di concentrarsi sull'oggetto Gui.
Si attiva quando il giocatore inizia, continua e si ferma quando viene premuto a lungo sull'elemento UI.
- TouchPan(touchPositions : Array,totalTranslation : Vector2,velocity : Vector2,state : Enum.UserInputState):RBXScriptSignal
Si attiva quando il giocatore muove il dito sull'elemento UI.
- TouchPinch(touchPositions : Array,scale : number,velocity : number,state : Enum.UserInputState):RBXScriptSignal
Si attiva quando il giocatore esegue un gesto di pizzico o di trazione utilizzando due dita sull'elemento UI.
- TouchRotate(touchPositions : Array,rotation : number,velocity : number,state : Enum.UserInputState):RBXScriptSignal
Si attiva quando il giocatore esegue una rotazione utilizzando due dita sull'elemento UI.
Si attiva quando il giocatore esegue una manovra di swipe sull'elemento UI.
Si attiva quando il giocatore esegue un gesto di tocco sull'elemento UI.
- SelectionChanged(amISelected : bool,previousSelection : GuiObject,newSelection : GuiObject):RBXScriptSignal
Si attiva quando la selezione del gamepad si muove, si lascia o cambia all'interno della GuiBase2d connessa o di qualsiasi altro GuiObjects.
Proprietà
ContentText
CursorPosition
CursorPosition determina l'Offset del cursore del testo in pixel, o -1 se la casella di testo non è attualmente in uso. Un valore di 1 rappresenta l'inizio, la posizione prima del primo pixel nella ProprietàText . Quando viene utilizzato in combinazione con la ProprietàSelectionStart, è possibile ottenere
Si dovrebbe notare che le unità di questa proprietà sono bytes e che molti caratteri in codice unico come emoji sono più lunghi di 1 byte . Ad esempio, se un giocatore digita nella TextBox "Hello👋" – "Hello" immediatamente seguito dalla segnalazione con la mano in alto – la posizione del cursore sarebbe 10, non 7, poiché l'emoji usa 4 bytes.
Campioni di codice
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 seguenti fonts con cui l'elemento UI renderizza il suo testo. Alcuni caratteri hanno caratteri in grassetto, sottolineato e/o con luce (poiché non ci sono proprietà di peso o stile del carattere).
Con l'eccezione della font "Legacy", ogni font renderizza il testo con l'altezza della linea uguale alla proprietà TextBox.TextSize. La font "Code" è la sola font monospazio. Ha la proprietà unica che ogni personaggio ha l'esatta stessa larghezza e altezza di 1:2. La larghezza di ogni personaggio è approssimativamente la metà della Proprietà Class.Toolbar.TextSize
Questa proprietà viene sincronizzata con la ProprietàTextBox.FontFace. Quando si imposta laFont, laFontFace sarà impostata su Font.fromEnum(value) .
Campioni di codice
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
La proprietà FontFace è simile alla ProprietàFont, ma consente di impostare caratteri che non esistono nell'elenco dei caratteri.
Questa proprietà viene sincronizzata con la ProprietàTextBox.Font. Quando si impostaFontFace, laFont viene impostata sul valore corrispondente dell'enum o su Enum.Font.Unknown se non ci sono corrispondenti corrispondenti.
LineHeight
Controlla l'altezza delle righe, come moltiplicatore della dimensione quadrata del carattere, scalando lo spazio tra le righe del testo nel TextBox . I valori validi vanno da 1.0 a 3.0, con l'aggiunta di valori predefiniti da 1.0.
MaxVisibleGraphemes
Questa proprietà controlla il numero massimo di graforemi (o unità di testo) che sono mostrati sul TextBox, indipendentemente dal fatto che mostri il TextBox.PlaceholderText o TextBox.Text.
Cambiare la proprietà non cambia la posizione o la dimensione dei graforemmi visibili - la posizione sarà calcolata come se tutti i graforemmi fossero visibili.
Impostare la proprietà su -1 disabilita il limite e mostra l'interezza del TextBox.Text .
MultiLine
Quando impostato su true, il testo all'interno di una TextBox è in grado di spostarsi su più righe. Questo consente anche ai giocatori di utilizzare il tasto Enter per passare su una nuova riga.
OpenTypeFeatures
OpenTypeFeaturesError
PlaceholderColor3
Imposta il colore di testo che viene utilizzato quando nessun testo è ancora stato inserito nella TextBox.
PlaceholderText
Imposta il testo che viene visualizzato quando nessun testo è ancora stato inserito nella TextBox.
RichText
Questa proprietà determina se il TextBox rende la stringa TextBox.Text utilizzando la formattazione del testo ricco. Il testo ricco utilizza semplici tag di markup per stilare sezioni della stringa in grassetto, sottolineature, colori specifici e altro ancora.
Per utilizzare il testo ricco, semplicemente includi i tag di formattazione nella TextBox.Text Stringa.
Nota che quando la TextBox ha questa proprietà abilitata e la casella guadagna focus, l'utente sarà in grado di modificare e interagire con la completa StringaXML, tra cui tutti i tag di formattazione. Quando il focus viene perso, il testo viene automaticamente parsellato e generato come testo ricco.
SelectionStart
Determina la posizione di partenza di una selezione del testo, o -1 se la TextBox non ha un intervallo di testo selezionato. Se il valore è -1 o equivalente a CursorPosition , non ci sono intervalli di testo selezionati. Questa proprietà utilizza la stessa logica di posizionamento della posizione di partenza. SelectionStart sarà maggiore di CursorPosition se il cursor è all'in
Campioni di codice
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 della piattaforma viene utilizzato invece della tastiera incorporata di Roblox.
Text
La proprietà Text determinata dal elemento UI rende il contenuto visualizzato dall'elemento UI. Le proprietà visive della stringa rendersizzata sullo schermo sono determinati da TextBox.TextColor3, Class
È possibile rendere emoji (per esempio, 😃) e altri simboli. Questi simboli speciali non sono influenzati dalla proprietà TextBox.TextColor3. Questi possono essere pastati in Script e LocalScript oggetti, nonché nella finestra Proprietà.
Questa proprietà può contenere caratteri nuovi, tuttavia, non è possibile digitare caratteri nuovi nella finestra Proprietà. Allo stesso modo, questa proprietà può contenere un carattere tab, ma sarà visualizzato come spazio invece.
Campioni di codice
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
La proprietà TextBounds riflette il volume di testo renduto in pixelizzazione. In altre parole, se provassi a mettere il testo in un rettangolo, questa proprietà rifletterebbe le dimensioni minime del rettangolo che dovresti usare per adattare il testo.
Usando TextService:GetTextSize() , puoi predire quali saranno i TextBounds su un TextLabel dato una Stringa, TextBox.Font , TextBox.TextSize e la dimensione della framma.
Campioni di codice
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 visualizzato da un elemento GUI . Questa proprietà insieme a TextBox.Font , TextBox.TextSize e 2>Class.Toolbar.TextTransparency2> determinerà le proprietà visive del testo. Il testo viene visualizzato dopo il tratto di testo (
È importante che il testo sia facilmente letto dai giocatori! Assicurati di scegliere colori con una saturazione minima-no, come bianco, grigio o nero. Assicurati che il colore del tuo testo sia contraddistinto dal TextBox.BackgroundColor3 dell'elemento UI. Se l'elemento ha un fondo trasparente, prova ad applicare un bianco Class
Campioni di codice
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 l'utente può modificare il Text attraverso l'input. È consigliato disabilitare ClearTextOnFocus quando questa proprietà è disabilitata, altrimenti il testo potrebbe essere cancellato on-焦. Questa proprietà è utile per creare casse di testo da cui copiare nel gioco.
TextScaled
Piuttosto che usare TextScaled, ti consigliamo di considerare l'uso di AutomaticSize, un nuovo metodo per ridimensionare automaticamente l'interfaccia utente che ti darà il miglior risultato visivo possibile.
La proprietà TextScaled determina se il testo viene ingrandito in modo che riempia l'intero Spaziodell'elemento UI. Quando questa è abilitata, TextBox.TextSize viene ignorata e TextBox.TextWrapped viene abilitato automaticamente. Questa proprietà è utile per il rendimento del testo all'interno di BillboardGuis .
Quando questa proprietà viene utilizzata per l'interfaccia utente dello spazio di schermo, potrebbe essere desiderabile utilizzare un UITextSizeConstraint per limitare la gamma di possibili dimensioni di testo.
TextScaled e AutomaticSize
Si consiglia ai developer di evitare l'uso di TextScaled e di regolare l'interfaccia utente per ottenere vantaggio della proprietà AutomaticSize invece. Ecco le differenze principali tra le due proprietà:
- TextScaled ingrandisce il contenuto (testo) per adattare l'interfaccia utente. Senza una attenta considerazione, alcuni testo potrebbero diventare illeggibili se ingranditi troppo piccoli.
- AutomaticSize ridimensiona l'UI per contenere il contenuto.
Con AutomaticSize, è possibile regolare la tua interfaccia utente per accogliere il contenuto (testo) mantenendo una dimensione di carattere coerente. Per ulteriori informazioni su come utilizzare l'automiscing, vedi l'articolo Automatic Size UI.
Consigliamo di non applicare sia TextScaled che AutomaticSize sullo stesso oggetto UI. Se applici entrambe le proprietà:
- AutomaticSize determina la quantità massima di spazio disponibile che un GuiObject può utilizzare (in questo caso, testo)
- TextScaled usa il 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 vincoli di dimensioni
- L'esito finale sarà: il testo passa a 100 pixel e l'oggetto UI si espanderà per adattarsi a quel testo
L'utilizzo di entrambi i valori automatici e TextScaled contemporaneamente può comportare notevoli differenze di dimensioni rispetto a quando AutomaticSize è Off.
Campioni di codice
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 spazi in OFFSET di una riga di testo rendering. L'unità è in OFFSET, non punti (che sono utilizzati nella maggior parte dei programmi di modifica dei documenti). Il carattere "Legacy" non contiene questa Proprietà.
Campioni di codice
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 del tratto, o dell'outline, del testo renduto. Questa proprietà e TextBox.TextStrokeTransparency determinano le proprietà visive del tratto.
Il tratto di testo viene visualizzato prima del testo normale e è semplicemente 4 render di lo stesso testo in +/- 1 pixel off-set in ciascuna direzione. Il tratto di testo viene visualizzato indipendentemente e identificativamente a TextBox.TextColor3 e TextBox.TextTransparency .
Campioni di codice
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 del tratto, o dell'outline, del testo renduto. Questa proprietà e TextBox.TextStrokeColor3 determinano le proprietà visive del tratto.
Il tratto di testo viene visualizzato prima del testo normale e è semplicemente 4 render di lo stesso testo in +/- 1 pixel offset in ciascuna direzione. Il tratto di testo viene visual
Campioni di codice
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 visualizzato da un elemento UI. Questa proprietà insieme a TextBox.Font , TextBox.TextSize e TextBox.TextColor3 determinerà le proprietà visive del testo. Il testo viene visualizzato dopo il tratto di testo ( 1> Class.Toolbar.TextStrokeTransparency
L'uso di un testo fading in un for- loop numerico è un modo fantastico per attirare l'attenzione del Giocatoresul 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
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 è abilitato, questa proprietà renderizza il testo su più righe all'interno dello spazio di un GUI elemento in modo che TextBox.TextBounds non supererà mai il GuiBase2d.AbsoluteSize della GUI elemento.
Questo è ottenuto spezzando lunghe righe di testo in più righe. Le interruzioni di linea preferiranno lo spazio bianco; se una parola non correttamente inserita supera la larghezza dell'elemento, quella parola verrà spezzata in più righe.
Se ulteriori interruzioni di riga causassero l'altezza verticale del testo (il Y component di TextBox.TextBounds ) a superare l'altezza verticale dell'elemento (il Y component di GuiBase2d.AbsoluteSize ) non verrà visualizzata tutti/tutte.
Campioni di codice
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 renduto all'interno dello Spaziodi un elemento UI. Funziona allo stesso modo della Proprietàtext-align della CSS, con valori di sinistra, di destra e di centro (non c'è opzione di giustificazione). Per Sinistra e Destra, il testo viene visualizzato in modo che il confine di testo sinistra/destra tocchi l'angolo dell'Elemento dell'Elemento UI. Per Centro, ogni riga di test
Questa proprietà viene utilizzata in conjunction 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
-- 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 (Y-axis) del testo renduto all'interno dello Spaziodi un elemento UI. Per Top e Bottom, il testo viene renduto in modo che i confini del testo superiore/ inferiore toccino l'angolo dell'elemento UI. Per Center, il testo viene renduto in modo che ci sia uno spazio pari dalla parte superiore dei confini del testo alla parte inferiore dello spazio dell'elemento e che ci sia uno spazio pari dalla parte inferiore dei confini del testo alla parte super
Questa proprietà viene utilizzata in conjunction 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
-- 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
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 cliente a non focalizzare la TextBox. Il parametro submitted ti consente di sovrascrivere il parametro enterPressed nell'evento TextBox.FocusLost.
Questo oggetto dovrebbe essere utilizzato con un LocalScript per funzionare come previsto in modalità online.
Il codice mostrato di seguito costringerà il client a non focalizzare 'Texture' 5 secondi dopo averlo selezionato:
local TextBox = script.Parent
TextBox.Focused:Connect(function()
wait(5)
TextBox:ReleaseFocus()
end)
Si prega di essere consapevoli che l'esempio sopra presuppone che sia in un LocalScript, come figlio di un TextBox.
Parametri
Restituzioni
Campioni di codice
local textBox = script.Parent
local function onFocused()
task.wait(5)
textBox:ReleaseFocus()
end
textBox.Focused:Connect(onFocused)
Eventi
FocusLost
Si attiva quando il client lascia il loro focus lasciare la TextBox - di solito quando un client clicca / tocca fuori della TextBox. Questo attiva anche se un TextBox forza il focus sull'utente.
Può essere utilizzato insieme a TextBox.Focused per tracciare quando un 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 LocalScript .
Parametri
Un bool che indica se il client ha premuto Enter 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
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
Si attiva quando il TextBox ottiene il focus - tipicamente quando un client clicca / tocca su un TextBox per iniziare l'input del testo. Questo attiva anche se un TextBox forza il focus sull'utente.
Può essere utilizzato insieme a TextBox.FocusLost per tracciare quando un 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 LocalScript .
Campioni di codice
local textBox = script.Parent
local function onFocused()
print("Focused")
end
textBox.Focused:Connect(onFocused)