TextBox

Afficher les obsolètes

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Un boîte de texte permet au joueur de fournir une entrée de texte.Il se comporte de manière similaire à un TextButton , sauf que une seule boîte de texte peut être mise en évidence en cliquant, en tapant ou en sélectionnant une manette de jeu.Pendant le focus, le joueur peut utiliser un clavier pour modifier la propriété Text.

  • S'il n'y a pas de texte, le PlaceholderText sera visible. Cela est utile pour inciter les joueurs du type ou du format de données qu'ils doivent saisir.
  • Par défaut, la propriété ClearTextOnFocus est activée et garantit qu'il n'y a pas de texte existant lorsque une boîte de texte est mise en évidence.Cela peut ne pas être souhaitable pour le texte qui devrait être modifiable par le joueur.
  • La propriété MultiLine permet aux joueurs d'entrer plusieurs lignes de texte avec des caractères de saut de ligne ( \n ).

Le ContextActionService honore les raccourcis clavier de la boîte de texte et empêchera automatiquement la transmission d'événements de pression de clé aux actions liées à ContextActionService:BindAction().UserInputService.InputBegan et les événements associés se déclencheront toujours lorsqu'une boîte de texte est en focus.

État de concentration

Il est possible de détecter et de modifier l'état de concentration d'une TextBox :

  • Vous pouvez utiliser CaptureFocus lorsqu'un dialogue apparaît afin que le joueur n'ait pas à cliquer sur une boîte de texte lorsqu'elle devient disponible ; vous pouvez utiliser ContextActionService:BindAction() pour lier une certaine clé à la concentration d'une boîte de texte en utilisant cette fonction.Lorsqu'une TextBox entre en focus, l'événement Focused se déclenche.
  • Vous pouvez détecter si une certaine boîte de texte est en focus en utilisant IsFocused . Alternativement, UserInputService:GetFocusedTextBox() peut être utilisée pour vérifier si une boîte de texte est en focus.
  • Lorsque le joueur a terminé l'entrée de texte, l'événement FocusLost se déclenche, indiquant si l'utilisateur a appuyé sur Enter pour soumettre du texte avec le InputObject qui a causé la perte de concentration.Lors de l'utilisation de claviers sur écran sur mobile et console, ReturnPressedFromOnScreenKeyboard peut également se lancer.
  • Si une question plus importante se présente pendant le partie, vous pouvez ReleaseFocus de la boîte de texte afin que l'entrée du clavier d'un joueur revienne dans votre jeu.

Édition de texte

Un TextBox prend en charge la sélection de texte via ses propriétés CursorPosition et SelectionStart.En utilisant GetPropertyChangedSignal, vous pouvez détecter quand une sélection change.En outre, il est possible pour les joueurs de copier et coller du texte dans une boîte de texte, ce qui permet de prendre en charge le presse-papiers assistance.

Avis de filtrage du texte Les jeux qui facilitent la communication entre joueurs en utilisant du texte, tels que le chat personnalisé ou les balises de nom, doivent filtrer correctement ce texte en utilisant TextService:FilterStringAsync() ou Chat:FilterStringAsync() .Si cela n'est pas fait correctement, votre jeu peut recevoir une action de modération.

Échantillons de code

This code sample creates a password-like interface for a TextBox, giving visual feedback on the player's input.

TextBox Secret Word

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

Résumé

Propriétés

Propriétés hérités de GuiObjectPropriétés hérités de GuiBase2d

Méthodes

  • Force le client à se concentrer sur la zone de texte.

  • Renvoie vrai si la zone de texte est mise en évidence, ou faux si elle ne l'est pas.

  • ReleaseFocus(submitted : boolean):()

    Force le client à dé focuser la zone de texte.

Méthodes hérités de GuiObject

Évènements

Évènements hérités de GuiObjectÉvènements hérités de GuiBase2d

Propriétés

ClearTextOnFocus

Lecture parallèle

Détermine si le clic sur la zone de texte effacera sa propriété TextBox.Text

ContentText

Lecture uniquement
Non répliqué
Lecture parallèle

CursorPosition

Lecture parallèle

Cette propriété détermine le décalage du curseur de texte en octets, ou -1 si le TextBox n'est pas actuellement en cours d'édition.Une valeur de 1 représente la position avant le premier octet dans la propriété Text.Lorsqu'il est utilisé en conjonction avec la propriété SelectionStart, il est possible d'obtenir et de définir le texte sélectionné dans un TextBox.

Notez que les unités de cette propriété sont octets et que de nombreux caractères unicode tels que les emojis sont plus longs que 1 octet.Par instance, si un joueur saisit "Hello👋" ("Hello" immédiatement suivi du signe de la main levée), la position du curseur serait 10 , pas 7 , puisque l'emoji utilise 4 octets.

Échantillons de code

This code sample demonstrates reading the current selection of a TextBox using CursorPosition() and SelectionStart().

TextBox Selections

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)
Caché
Non répliqué
Lecture parallèle

La propriété police sélectionne l'une des plusieurs polices prédéfinies fonts avec lesquelles l'élément d'interface utilisateur rendra son texte.Certaines polices ont des variantes audacieuses, italiennes et/ou légères (comme il n'y a pas de propriétés de poids de police ou de style de police).

A l'exception de la police « Héritage », chaque police rendra du texte avec une hauteur de ligne égale à la propriété TextBox.TextSize.La police « Code » est la seule police en monospace.Il a la propriété unique que chaque personnage a la même largeur et la même hauteur de ratio de 1:2.La largeur de chaque caractère est environ la moitié de la propriété TextBox.TextSize .

Cette propriété est synchronisée avec la propriété TextBox.FontFace propriété. Lors du définition de police, le FontFace sera défini sur Font.fromEnum(value) .

Échantillons de code

This code sample sets a parent TextLabel's Font and Text properties to all the different fonts available.

Cycle Font

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.

Show All 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

Lecture parallèle

La propriété FontFace est similaire à la propriété Font, mais permet de définir des polices qui n'existent pas dans l'enumération des polices.

Cette propriété est maintenue en synchronie avec la propriété TextBox.Font.Lors du définition de FontFace, la police est définie sur la valeur enum correspondante, ou sur Enum.Font.Unknown s'il n'y a pas de correspondances.

LineHeight

Lecture parallèle

Contrôle la hauteur des lignes, en tant que multiple de la taille du carré du police, en augmentant l'espacement entre les lignes de texte dans le TextBox.Les valeurs valides se situent entre 1.0 et 3.0, par défaut à 1.0.

MaxVisibleGraphemes

Lecture parallèle

Cette propriété contrôle le nombre maximum de graphèmes (ou d'unités de texte) qui sont affichés sur le TextBox, indépendamment du fait qu'il affiche le TextBox.PlaceholderText ou le TextBox.Text.

Changer la propriété ne change pas la position ou la taille des graphemes visibles - le layout sera calculé comme si tous les graphemes étaient visibles.

Définir la propriété à -1 désactive la limite et montre l'intégralité du TextBox.Text .

MultiLine

Lecture parallèle

Lorsqu'il est défini sur vrai, le texte à l'intérieur d'une TextBox peut se déplacer sur plusieurs lignes. Cela permet également aux joueurs d'utiliser la touche Entrée pour se déplacer sur une nouvelle ligne.

OpenTypeFeatures

Lecture parallèle

OpenTypeFeaturesError

Lecture uniquement
Non répliqué
Lecture parallèle

PlaceholderColor3

Lecture parallèle

Définit la couleur du texte qui est utilisée lorsqu'aucun texte n'a encore été saisi dans la zone de texte.

PlaceholderText

Lecture parallèle

Définit le texte qui s'affiche lorsque aucun texte n'a encore été saisi dans la zone de texte.

RichText

Lecture parallèle

Cette propriété détermine si la TextBox rend la chaîne TextBox.Text en utilisant un format de mise en forme de texte enrichi.Le texte enrichi utilise des balises de mise en forme simples pour formater des sections de la chaîne en caractères gras, en italique, dans des couleurs spécifiques, et plus encore.

Pour utiliser du texte enrichi, incluez simplement des balises de mise en forme dans la chaîne TextBox.Text.

Notez que lorsque le TextBox a cette propriété activée et que la boîte gagne le focus, l'utilisateur pourra modifier et interagir avec le chaîneXML complet, y compris toutes les balises de mise en forme.Lorsque le focus est perdu, le texte analysera et rendra automatiquement les balises en tant que texte enrichi.

SelectionStart

Lecture parallèle

Détermine la position de départ d'une sélection de texte, ou -1 si la TextBox n'a pas de portée de texte sélectionné.Si la valeur est -1 ou équivalente à CursorPosition, aucune plage de texte n'est sélectionnée.Cette propriété utilise la même logique de positionnement que CursorPosition.La sélection commencera à être supérieure à CursorPosition si le curseur se trouve au début d'une sélection, et inférieure à CursorPosition si le curseur se trouve à la terminer.

Échantillons de code

This code sample demonstrates reading the current selection of a TextBox using CursorPosition() and SelectionStart().

TextBox Selections

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

Lecture parallèle

Si la valeur est définie sur vrai, l'entrée native de la plate-forme est utilisée à la place du clavier intégré de Roblox.

Text

Lecture parallèle

La propriété Texte détermine le contenu rendu par l'élément d'interface utilisateur.Les propriétés visuelles de la chaîne rendue sur l'écran sont déterminées par TextBox.TextColor3 , TextBox.TextTransparency , TextBox.TextSize , TextBox.Font , TextBox.TextScaled , TextBox.TextWrapped , TextBox.TextXAlignment et TextBox.TextYAlignment.

Il est possible de rendre des emojis (par exemple, 😃) et d'autres symboles.Ces symboles spéciaux ne sont pas affectés par la propriété TextBox.TextColor3.Ces derniers peuvent être collés dans Script et LocalScript objets, ainsi que dans le champ dans la fenêtre propriétés.

Cette propriété peut contenir des caractères de nouvelle ligne, mais il n'est pas possible de saisir des caractères de nouvelle ligne dans la fenêtre propriétés.De même, cette propriété peut contenir un caractère de tab, mais elle sera rendue comme un espace à la place.

Échantillons de code

This code sample creates a fading banner for a TextLabel. It fades text out, chooses a random string (avoiding repetition), and fades back in.

Fading Banner

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.

"Kaboom!" Text

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.

Show All 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.

Long Text Wrapping

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.

Emoji in Text

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

Lecture uniquement
Non répliqué
Lecture parallèle

La propriété de lecture seule TextBounds reflète la taille absolue du texte rendu en décalage.En d'autres termes, si vous essayiez de faire tenir du texte dans un rectangle, cette propriété refléterait les dimensions minimales du rectangle dont vous auriez besoin pour faire tenir le texte.

En utilisant TextService:GetTextSize(), vous pouvez prédire ce que seront les limites de texte sur une étiquette de texte donnée, TextBox.Font, TextBox.TextSize et la taille du cadre.

Échantillons de code

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.

Dynamic TextBox Size

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

Lecture parallèle

Cette propriété détermine la couleur de tout le texte rendu par un élément GuiObject .Cette propriété, ainsi que TextBox.Font , TextBox.TextSize et TextBox.TextTransparency déterminera les propriétés visuelles du texte.Le texte est rendu après le trait de texte ( TextBox.TextStrokeColor3 ).

Il est important que le texte soit facilement lu par les joueurs ! Assurez-vous de choisir des couleurs avec peu ou pas de saturation, comme le blanc, le gris ou le noir.Assurez-vous que la couleur de votre texte est contrastée par le TextBox.BackgroundColor3 de l'élément UI.Si l'élément a un fond transparent, essayez d'appliquer un noir TextBox.TextStrokeColor3 pour aider à contraster le texte avec le monde 3D derrière lui.

Échantillons de code

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

Vowel Detector

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.

TextBox Secret Word

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

Countdown Text

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

Game State Text

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

Lecture parallèle

TextEditable

Lecture parallèle

TextEditable détermine si l'utilisateur peut modifier le Text à travers l'entrée.Il est recommandé de désactiver ClearTextOnFocus lorsque cette propriété est désactivée, sinon le texte pourrait être effacé au moment du focus.Cette propriété est utile pour créer des boîtes de texte en lecture seule à partir desquelles le contenu peut être copié en jeu.

TextFits

Lecture uniquement
Non répliqué
Lecture parallèle

Si le texte se trouve dans les contraintes de la boîte de texte.

TextScaled

Lecture parallèle

Plutôt que d'utiliser TextScaled, nous vous recommandons d'envisager d'utiliser AutomaticSize, une nouvelle méthode pour redimensionner dynamiquement l'interface utilisateur qui vous donnera le meilleur résultat visuel possible.

La propriété TextScaled détermine si le texte est redimensionné afin de remplir l'espace de tout l'élément de l'interface utilisateur.Lorsque cela est activé, TextBox.TextSize est ignoré et TextBox.TextWrapped est automatiquement activé.Cette propriété est utile pour les éléments d'interface de rendu de texte dans BillboardGuis .

Lorsque cette propriété est utilisée pour l'interface utilisateur d'espace d'écran, il peut être souhaitable d'utiliser un UITextSizeConstraint pour restreindre la portée des tailles de texte possibles.

Taille du texte et taille automatique

Il est recommandé aux développeurs d'éviter l'utilisation de TextScaled et d'ajuster l'interface utilisateur pour profiter de la propriété AutomaticSize à la place.Voici les principales différences entre les deux propriétés :

  • TextScaled met à l'échelle le contenu (le texte) pour accommoder l'interface utilisateur. Sans réflexion soigneuse, certains textes peuvent devenir illisibles s'ils sont à une échelle trop petite.
  • AutomaticSize redimensionne l'interface utilisateur pour accueillir le contenu.

Avec AutomaticSize, vous pouvez ajuster votre interface utilisateur pour accommoder le contenu (le texte) tout en maintenant une taille de police cohérente.Pour plus d'informations sur l'utilisation de la taille automatique, voir l'article Taille automatique de l'interface utilisateur.

Nous suggérons que vous n'appliquiez pas à la fois TextScaled et AutomaticSize sur le même objet d'interface utilisateur. Si vous appliquez les deux propriétés :

  • AutomaticSize détermine la quantité maximale d'espace disponible que un GuiObject peut utiliser (dans ce cas, du texte)
  • TextScaled utilise l'espace disponible déterminé par AutomaticSize pour mettre à l'échelle la taille de police pour s'adapter à l'espace disponible, qui s'étendra jusqu'à la taille de police maximale (100) s'il n'y a pas de contraintes de taille
  • Le résultat final sera : le texte passe à une taille de police de 100 et l'objet d'interface utilisateur s'étendra pour s'adapter à ce texte

L'utilisation simultanée de AutomaticSize et de TextScaled peut entraîner des différences de mise à l'échelle significatives que lorsque AutomaticSize est off.

Échantillons de code

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.

Long Text Wrapping

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

Lecture parallèle

La propriété TextSize détermine la hauteur en décalage d'une ligne de texte rendu.L'unité est en décalage, pas en points (qui est utilisée dans la plupart des programmes d'édition de documents).La police « Héritage » ne possède pas cette propriété.

Échantillons de code

This code sample repeatedly tweens a TextLabel's TextSize from 5 to 100 and fades out the text as it grows in size.

"Kaboom!" Text

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

Lecture parallèle

La propriété TextStrokeColor3 défini la couleur du trait, ou du contour, du texte rendu.Cette propriété et TextBox.TextStrokeTransparency déterminent les propriétés visuelles du trait de texte.

Le trait de texte est rendu avant le texte normal et est simplement 4 rendements du même texte dans +/- 1 décalage de pixel dans chaque direction.La représentation du tracé du texte fonctionne de manière indépendante et identique à TextBox.TextColor3 et TextBox.TextTransparency.

Échantillons de code

This code sample oscillates a TextLabel's TextStrokeTransparency so that it blinks the highlight of a text.

Text Highlight Oscillation

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

Lecture parallèle

La propriété TextStrokeTransparency définit la transparence du trait, ou du contour, du texte rendu.Cette propriété et TextBox.TextStrokeColor3 déterminent les propriétés visuelles du trait de texte.

Le trait de texte est rendu avant le texte normal et est simplement 4 rendements du même texte dans +/- 1 décalage de pixel dans chaque direction.La représentation du tracé du texte fonctionne de manière indépendante et identique à TextBox.TextColor3 et TextBox.TextTransparency.Puisque le trait de texte est simplement plusieurs rendements de la même transparence, cette propriété est essentiellement multiplicative sur elle-même quatre fois (par exempleune transparence du trait de texte de 0,5 apparaît environ la même que la transparence du texte de 0,0625 ou 0,5 ^ 4).Il est donc recommandé de définir la transparence du trait de texte à une valeur comprise entre 0,75 et 1 pour un effet plus subtil.

Échantillons de code

This code sample oscillates a TextLabel's TextStrokeTransparency so that it blinks the highlight of a text.

Text Highlight Oscillation

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

Lecture parallèle

La propriété TextColor3 détermine la transparence de tout le texte rendu par un élément UI.Cette propriété, ainsi que TextBox.Font , TextBox.TextSize et TextBox.TextColor3 déterminera les propriétés visuelles du texte.Le texte est rendu après le trait de texte ( TextBox.TextStrokeTransparency ).

Disparition du texte en utilisant une boucle for numérique est un moyen fantastique d'attirer l'attention d'un joueur sur le texte qui apparaît à l'écran.


-- Count backwards from 1 to 0, decrementing by 0.1
for i = 1, 0, -0.1 do
textLabel.TextTransparency = i
task.wait(0.1)
end

Échantillons de code

This code sample creates a fading banner for a TextLabel. It fades text out, chooses a random string (avoiding repetition), and fades back in.

Fading Banner

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.

"Kaboom!" Text

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

TextTruncate

Lecture parallèle

Contrôle la troncation du texte affiché dans cette boîte de texte.

TextWrapped

Lecture parallèle

Lorsqu'il est activé, cette propriété rendra du texte sur plusieurs lignes dans l'espace d'un élément TextBox pour que TextBox.TextBounds ne dépasse jamais le GuiBase2d.AbsoluteSize de l'élément GUI.

Cela est réalisé en divisant des longues lignes de texte en plusieurs lignes.Les breaks de ligne préféreront l'espace blanc ; si un mot long non coupé dépasse la largeur de l'élément, ce mot sera divisé en plusieurs lignes.

Si d'autres ruptures de ligne provoquaient l'exécution de la hauteur verticale du texte (la composante Y de TextBox.TextBounds ) au-dessus de la hauteur verticale de l'élément (la composante Y de GuiBase2d.AbsoluteSize ), cette ligne ne serait pas rendue du tout.

Échantillons de code

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.

Long Text Wrapping

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

Lecture parallèle

TextXAlignment détermine l'alignement horizontal (X-axe) du texte rendu dans l'espace d'un élément d'interface utilisateur.Il fonctionne de manière similaire à la propriété CSS text-align, avec les valeurs de gauche, de droite et de centre (il n'y a pas d'option de justification).Pour gauche et droite, le texte est rendu de sorte que les limites de texte gauche/droite ne touchent que le bord de l'élément d'interface utilisateur.Pour le centre, chaque ligne de texte est centrée sur le très centre du rectangle de l'élément d'interface utilisateur.

Cette propriété est utilisée en conjonction avec TextBox.TextYAlignment pour déterminer entièrement l'alignement du texte sur les deux axes.Cette propriété n'affectera pas les propriétés de lecture seule TextBox.TextBounds et TextBox.TextFits.

Échantillons de code

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.

Text Alignment

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

Lecture parallèle

TextYAlignment détermine l'alignement vertical (axe Y) du texte rendu dans l'espace d'un élément UI.Pour le haut et le bas, le texte est rendu de sorte que les limites de texte supérieur/inférieur ne touchent que le bord de l'élément d'interface utilisateur.Pour le centre, le texte est rendu de sorte qu'il y ait un espace égal à partir des limites supérieures du texte jusqu'au sommet de l'élément et les limites inférieures du texte jusqu'au fond de l'élément.

Cette propriété est utilisée en conjonction avec TextBox.TextXAlignment pour déterminer entièrement l'alignement du texte sur les deux axes.Cette propriété n'affectera pas les propriétés de lecture seule TextBox.TextBounds et TextBox.TextFits.

Échantillons de code

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.

Text Alignment

-- 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éthodes

CaptureFocus

()

Force le client à se concentrer sur la zone de texte.


Retours

()

Échantillons de code

This code sample causes the client to focus on the parent TextBox when the Q key is pressed by the player.

TextBox:CaptureFocus

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

Renvoie vrai si la zone de texte est mise en évidence, ou faux si elle ne l'est pas.


Retours

ReleaseFocus

()

Force le client à dé focuser la boîte de texte. Le paramètre submitted vous permet de remplacer le paramètre enterPressed dans l'événement TextBox.FocusLost.

Cet élément doit être utilisé avec un LocalScript afin de fonctionner comme prévu en mode en ligne.

Le code affiché ci-dessous forcera le client à ne pas se concentrer sur le 'TextBox' 5 secondes après sa sélection :


local TextBox = script.Parent
TextBox.Focused:Connect(function()
wait(5)
TextBox:ReleaseFocus()
end)

Sachez que l'exemple ci-dessus suppose qu'il se trouve dans un LocalScript, en tant qu'enfant d'une TextBox.

Paramètres

submitted: boolean
Valeur par défaut : false

Retours

()

Échantillons de code

The code shown below will force the client to unfocus the 'TextBox' 5 seconds after it's selected:

TextBox:ReleaseFocus

local textBox = script.Parent
local function onFocused()
task.wait(5)
textBox:ReleaseFocus()
end
textBox.Focused:Connect(onFocused)

Évènements

FocusLost

S'enflamme lorsque le client laisse son focus quitter la zone de texte - généralement lorsqu'un client clique/touche à l'extérieur de la zone de texte.Cela se déclenche également si une boîte de texte force le focus sur l'utilisateur.

Il peut être utilisé aux côtés de TextBox.Focused pour suivre quand une TextBox gagne et perd le focus.

Voir aussi le UserInputService.TextBoxFocused et UserInputService.TextBoxFocusReleased pour des fonctions similaires qui s'appuient sur le service UserInputService.

Cet événement ne se déclenchera que lorsqu'il est utilisé dans un LocalScript .

Paramètres

enterPressed: boolean

Un booléen indiquant si le client a appuyé sur Entrée pour perdre le focus ( vrai ) ou non ( faux ).

inputThatCausedFocusLoss: InputObject

Une instance InputObject indiquant le type d'entrée qui a causé la perte de focus de la TextBox.


Échantillons de code

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.

TextBox.FocusLost1

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:

  1. "Player pressed Enter" - if the TextBox lost focus because the player pressed the Enter key. or
  2. "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'.
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

S'enflamme lorsque le TextBox gagne le focus - généralement lorsqu'un client clique/touche sur une TextBox pour commencer l'entrée de texte.Cela se déclenche également si une boîte de texte force le focus sur l'utilisateur.

Il peut être utilisé aux côtés de TextBox.FocusLost pour suivre quand une TextBox gagne et perd le focus.

Voir aussi le UserInputService.TextBoxFocused et UserInputService.TextBoxFocusReleased pour des fonctions similaires qui s'appuient sur le service UserInputService.

Cet événement ne se déclenchera que lorsqu'il est utilisé dans un LocalScript .


Échantillons de code

This example works when placed in a LocalScript that is the child of a TextBox. When the TextBox gains focus, the example prints "Focus".

Focus

local textBox = script.Parent
local function onFocused()
print("Focused")
end
textBox.Focused:Connect(onFocused)

ReturnPressedFromOnScreenKeyboard