TextBox

Veraltete anzeigen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Eine Textbox ermöglicht es dem Spieler, Text输入 bereitzustellen.Es verhält sich ähnlich wie eine TextButton, außer dass eine einzige Textbox durch Klicken, Tippen oder Auswahl eines Gamepads in den Fokus gerückt werden kann.Während im Fokus, kann der Spieler eine Tastatur verwenden, um die EigenschaftenText zu ändern.

  • Wenn es keinen Text gibt, wird die PlaceholderText sichtbar sein. Dies ist nützlich, um Spieler der Art oder des Formats der Daten zu veranlassen, die sie eingeben sollen.
  • Standardmäßig ist die Eigenschaft ClearTextOnFocus aktiviert und gewährleistet, dass es keinen vorhandenen Text gibt, wenn eine Textbox fokussiert wird.Das mag für Text, der vom Spieler:inbearbeitet werden soll, nicht gewünscht sein.
  • Die Eigenschaft MultiLine ermöglicht es Spielern, mehrere Zeilen Text mit neuen Zeichenzeichen einzugeben ( \n ).

Die ContextActionService ehrt TextBox-Tastenkombinationen und verhindert automatisch, dass Tastendrückereignisse an Aktionen übermittelt werden, die mit ContextActionService:BindAction() gebunden sind.UserInputService.InputBegan und verwandte Ereignisse werden weiterhin feuern, während ein Textfeld im Fokus ist.

Fokuszustand

Es ist möglich, den Fokuszustand einer TextBox zu erkennen und zu ändern:

  • Du kannst CaptureFocus verwenden, wenn ein Dialog erscheint, damit der Spieler nicht auf eine Textbox klicken muss, wenn sie verfügbar wird; du kannst ContextActionService:BindAction() verwenden, um eine bestimmte Taste mit dieser Funktion zu binden, um eine Textbox zu fokussieren.Wenn eine Textbox in den Fokus gerät, wird das Focused-Ereignis ausgelöst.
  • Du kannst erkennen, ob eine bestimmte Textbox im Fokus ist, indem du IsFocused verwendest. Alternativ kann UserInputService:GetFocusedTextBox() verwendet werden, um zu überprüfen, ob eine Textbox im Fokus ist.
  • Wenn der Spieler mit dem Eingeben von Text fertig ist, wird das Ereignis FocusLost ausgelöst, das anzeigt, ob der Benutzer Enter gedrückt hat, um Text zusammen mit dem InputObject, der den Fokusverlust verursacht hat, einzureichen.Bei der Verwendung von Tastaturen auf dem Bildschirm auf Mobilgeräten und Konsole kann auch ReturnPressedFromOnScreenKeyboard initiieren.
  • Wenn während des Gameplayein wichtigeres Thema auftaucht, kannst du ReleaseFocus der Textbox so ändern, dass die Tastatureingabe eines Spieler:inzu deinem Spiel zurückkehrt.

Textbearbeitung

Eine Textbox unterstützt die Textauswahl durch ihre CursorPosition und SelectionStart Eigenschaften.Mit GetPropertyChangedSignal kannst du erkennen, wann sich eine Auswahl ändert.Zusätzlich ist es möglich, dass Spieler Text in einem Textfeld kopieren und einfügen, um grundlegende Supportzu aktivieren.

Textfiltering-Benachrichtigung Spiele, die die Kommunikation von Spieler zu Spieler mit Text erleichtern, wie z. B. benutzerdefinierter Chat oder Namensschilder, müssen den Text mit TextService:FilterStringAsync() oder Chat:FilterStringAsync() ordnungsgemäß filtern.Wenn dies nicht richtig durchgeführt wird, kann dein Spiel Actionerhalten.

Code-Beispiele

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)

Zusammenfassung

Eigenschaften

Eigenschaften von GuiObject übernommenEigenschaften von GuiBase2d übernommen

Methoden

  • Zwingt den Client, sich auf die Textbox zu konzentrieren.

  • Gibt wahr zurück, wenn die Textbox fokussiert ist, oder falsch, wenn sie es nicht ist.

  • ReleaseFocus(submitted : boolean):()

    Zwingt den Client, die Textbox zu entfokussieren.

Methoden von GuiObject übernommen

Ereignisse

Ereignisse von GuiObject übernommenEreignisse von GuiBase2d übernommen

Eigenschaften

ClearTextOnFocus

Parallel lesen

Bestimmt, ob das Anklicken der Textbox seine TextBox.Text Eigenschaftenlöschen wird

ContentText

Schreibgeschützt
Nicht repliziert
Parallel lesen

CursorPosition

Parallel lesen

Diese Eigenschaft legt den Versatz des Textcurators in Bytes fest oder -1, wenn der TextBox derzeit nicht bearbeitet wird.Ein Wert von 1 repräsentiert die Position vor dem ersten Byte in der Text Eigenschaften.Wenn es zusammen mit der Eigenschaft SelectionStart verwendet wird, ist es möglich, sowohl ausgewählten Text als auch innerhalb eines TextBox zu erhalten und zu setzen.

Beachten Sie, dass die Einheiten dieser Eigenschaft Bytes sind und dass viele Zeichen wie Emojis länger als 1 Byte sind.Wenn ein Spieler zum Instanz"Hallo👋" ("Hallo" sofort nach der winkenden Handzeichen) eingibt, wäre die Cursor-Position 10 , nicht 7 , da das Emoji 4 Bytes verwendet.

Code-Beispiele

Dieses Codebeispiel zeigt die Lektüre der aktuellen Auswahl eines TextBox mit CursorPosition() und SelectionStart() .

Textbox-Auswahl

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)
Verborgen
Nicht repliziert
Parallel lesen

Die Eigenschaft Schriftart wählt eine von mehreren vorgegebenen fonts aus, mit der das UI-Element seinen Text rendert.Einige Schriften haben dicke, kursive und/oder leichte Varianten (da es keine Schriftgewicht- oder Schriftstil-Eigenschaften gibt).

Mit Ausnahme der Schriftart "Legacy" wird jede Schriftart Text mit der Zeilenhöhe gleich der EigenschaftenTextBox.TextSize rendern.Die Schriftart "Code" ist die einzige Monospacing-Schriftart.Es hat die einzigartige Eigenschaft, dass jeder Charakter die gleiche Breiten- und Höhenverhältnis von 1:2 hat.Die Breite jedes Zeichens ist ungefähr die Hälfte der TextBox.TextSize Eigenschaften.

Diese Eigenschaft wird mit der EigenschaftenTextBox.FontFace in Einklang gehalten. Wenn Font festgelegt wird, wird das FontFace auf Font.fromEnum(value) festgelegt.

Code-Beispiele

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

Dieses Codebeispiel rendert eine Liste aller verfügbaren Schriften.

Alle Schriften anzeigen

local frame = script.Parent
-- Erstelle ein TextLabel, das jede Schriftart anzeigt
for _, font in pairs(Enum.Font:GetEnumItems()) do
local textLabel = Instance.new("TextLabel")
textLabel.Name = font.Name
-- Festlegen der Text属性
textLabel.Text = font.Name
textLabel.Font = font
-- Einige Render-Eigenschaften
textLabel.TextSize = 24
textLabel.TextXAlignment = Enum.TextXAlignment.Left
-- Größe des Rahmens gleich der Höhe des Textes
textLabel.Size = UDim2.new(1, 0, 0, textLabel.TextSize)
-- Zum Elternrahmen hinzufügen
textLabel.Parent = frame
end
-- Ordne die Frames in einer Liste an (wenn sie es noch nicht sind)
if not frame:FindFirstChildOfClass("UIListLayout") then
local uiListLayout = Instance.new("UIListLayout")
uiListLayout.Parent = frame
end

FontFace

Parallel lesen

Die Eigenschaft FontFace ist ähnlich wie die EigenschaftenFont, erlaubt aber das Festlegen von Schriften, die nicht in der Font-Enum existieren.

Diese Eigenschaft wird mit der EigenschaftenTextBox.Font in Einklang gehalten.Wenn FontFace festgelegt wird, wird die Schriftart auf den entsprechenden Enum-Wert oder auf Enum.Font.Unknown gesetzt, wenn es keine Übereinstimmungen gibt.

LineHeight

Parallel lesen

Steuert die Höhe von Linien, als Multiplikator der Schriftzeichengröße der Schriftart, indem die Abstände zwischen Textzeilen in der TextBox skaliert werden.Gültige Werte reichen von 1.0 bis 3.0, mit Standard auf 1.0.

MaxVisibleGraphemes

Parallel lesen

Diese Eigenschaft steuert die maximale Anzahl von Graphemen (oder Textzeichen) an, die auf der TextBox angezeigt werden, unabhängig davon, ob sie die TextBox.PlaceholderText oder die TextBox.Text anzeigt.

Das Ändern der Eigenschaft ändert nicht die Position oder Größe der sichtbaren Grapheme - das Layout wird berechnet, als wären alle Grapheme sichtbar.

Die Einstellung der Eigenschaft auf -1 deaktiviert das Limit und zeigt die Gesamtheit der TextBox.Text .

MultiLine

Parallel lesen

Wenn auf wahr gesetzt, kann Text in einem Textfeld auf mehrere Zeilen verschoben werden. Dies ermöglicht es auch Spielern, den Eingabetaste zu verwenden, um auf eine neue Zeile zu wechseln.

OpenTypeFeatures

Parallel lesen

OpenTypeFeaturesError

Schreibgeschützt
Nicht repliziert
Parallel lesen

PlaceholderColor3

Parallel lesen

Legt die Textfarbe fest, die verwendet wird, wenn noch kein Text in das Textfeld eingegeben wurde.

PlaceholderText

Parallel lesen

Legt den Text fest, der angezeigt wird, wenn noch kein Text in das Textfeld eingegeben wurde.

RichText

Parallel lesen

Diese Eigenschaft bestimmt, ob die TextBox Zeile die TextBox.Text Zeichen mit reicher Textformattierung rendert.Reicher Text verwendet einfache Markierungs-Tags, um Abschnitte der Zeichenkette in gedruckter, kursiver, spezieller Farbe und mehr zu formatieren.

Um reichen Text zu verwenden, füge einfach Formatierungstags in die TextBox.Text Stringein.

Beachten Sie, dass wenn das TextBox diese Eigenschaft aktiviert hat und die Box den Fokus erhält, der Benutzer in der Lage sein wird, den vollständigen Stringzu bearbeiten und mit allen Formattags zu interagieren.Wenn der Fokus verloren geht, wird der Text die Tags automatisch als reichen Text parsen und rendern.

SelectionStart

Parallel lesen

Legt die Startposition einer Textauswahl fest, oder -1, wenn die Textbox keine Reichweite von ausgewähltem Text hat.Wenn der Wert -1 oder gleich CursorPosition ist, wird keine Textreichweite ausgewählt.Diese Eigenschaft verwendet die gleiche Platzierungslogik wie CursorPosition.Die Auswahl beginnt größer als CursorPosition, wenn der Cursor am Anfang einer Auswahl ist, und kleiner als CursorPosition, wenn der Cursor am beendenist.

Code-Beispiele

Dieses Codebeispiel zeigt die Lektüre der aktuellen Auswahl eines TextBox mit CursorPosition() und SelectionStart() .

Textbox-Auswahl

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

Parallel lesen

Wenn auf true gesetzt, wird die native Eingabe auf der Plattform anstelle der integrierten Tastatur von Roblox verwendet.

Text

Parallel lesen

Die Text-Eigenschaft legt den Inhalt fest, der vom UI-Element gerendert wird.Die visuellen Eigenschaften der Zeichenkette, die auf den Bildschirm gerendert wird, werden von , , , > , > , > und > bestimmt.

Es ist möglich, Emojis (zum Beispiel, 😃) und andere Symbole zu rendern.Diese speziellen Symbole sind nicht von der Eigenschaft TextBox.TextColor3 betroffen.Diese können in Script und LocalScript Objekten und auch im Feld innerhalb des Eigenschaftenfensters eingefügt werden.

Diese Eigenschaft kann neue Zeilenelemente enthalten, aber es ist nicht möglich, neue Zeilenelemente im Eigenschaften-Fenster zu tippen.Ebenso kann diese Eigenschaft einen Tab-Zeichen enthalten, wird aber stattdessen als Leere gerendert.

Code-Beispiele

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

Dieses Codebeispiel passt wiederholt die Textgröße eines Textlabels von 5 auf 100 und verblasst den Text, wenn er an Größe zunimmt.

Text "Kaboom!"

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

Dieses Codebeispiel rendert eine Liste aller verfügbaren Schriften.

Alle Schriften anzeigen

local frame = script.Parent
-- Erstelle ein TextLabel, das jede Schriftart anzeigt
for _, font in pairs(Enum.Font:GetEnumItems()) do
local textLabel = Instance.new("TextLabel")
textLabel.Name = font.Name
-- Festlegen der Text属性
textLabel.Text = font.Name
textLabel.Font = font
-- Einige Render-Eigenschaften
textLabel.TextSize = 24
textLabel.TextXAlignment = Enum.TextXAlignment.Left
-- Größe des Rahmens gleich der Höhe des Textes
textLabel.Size = UDim2.new(1, 0, 0, textLabel.TextSize)
-- Zum Elternrahmen hinzufügen
textLabel.Parent = frame
end
-- Ordne die Frames in einer Liste an (wenn sie es noch nicht sind)
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

Schreibgeschützt
Nicht repliziert
Parallel lesen

Die nur lesbare Eigenschaft TextBounds spiegelt die absolute Größe des gerenderten Textes in Verschiebungen wider.Mit anderen Worten, wenn du versuchst, Text in ein Rechteck zu passen, würde diese Eigenschaft die minimalen Abmessungen des Rechtecks widerspiegeln, die du benötigen würdest, um den Text zu passen.

Mit TextService:GetTextSize() kannst du vorhersagen, welche Textgrenzen auf einem Textfeld sein werden, wenn ein String gegeben wird, TextBox.Font , TextBox.TextSize und Rahmengröße.

Code-Beispiele

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

Parallel lesen

Diese Eigenschaft legt die Farbe aller Textteile fest, die von einem GuiObject-Element gerendert werden.Diese Eigenschaft zusammen mit TextBox.Font, TextBox.TextSize und TextBox.TextTransparency wird die visuellen Eigenschaften von Text bestimmen.Text wird nach dem Textstrich gerendert ( TextBox.TextStrokeColor3 ).

Es ist wichtig, dass Text von Spielern leicht gelesen werden kann! Achte darauf, Farben mit wenig bis keiner Sättigung zu wählen, wie Weiß, Grau oder Schwarz.Stellen Sie sicher, dass die Farbe Ihres Textes durch das TextBox.BackgroundColor3 des UI-Elements kontrastiert wird.Wenn das Element einen transparenten Hintergrund hat, versuche, ein schwarzes TextBox.TextStrokeColor3 anzuwenden, um den Text mit der 3D-Welt hinter ihm zu kontrastieren.

Code-Beispiele

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

Dieses Codebeispiel spiegelt den Inhalt eines StringValue in ein TextLabel wider, aktualisiert und legt die Farbe des Textes fest, wenn er sich ändert.

Spielzustands-Text

local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Platziere einen StringValue mit dem Namen "GameState" im ReplicatedStorage
local vGameState = ReplicatedStorage:WaitForChild("GameState")
-- Legen Sie diesen Code in ein TextLabel
local textLabel = script.Parent
-- Einige Farben, die wir mit TextColor3 verwenden
local colorNormal = Color3.new(0, 0, 0) -- schwarz
local colorCountdown = Color3.new(1, 0.5, 0) -- orangen
local colorRound = Color3.new(0.25, 0.25, 1) -- blau
-- Wir führen diese Funktion aus, um das TextLabel als Zustand des zu aktualisieren
-- spieländerungen.
local function update()
-- Aktualisiere den Text
textLabel.Text = "State: " .. vGameState.Value
-- Stelle die Farbe des Textes basierend auf den aktuellen Spielstatus ein
if vGameState.Value == "Countdown" then
textLabel.TextColor3 = colorCountdown
elseif vGameState.Value == "Round" then
textLabel.TextColor3 = colorRound
else
textLabel.TextColor3 = colorNormal
end
end
-- Muster: Aktualisierung einmal, wenn wir starten, und auch, wenn sich vGameState ändert
-- Wir sollten immer den am aktuellsten Stand befindlichen GameState sehen.
update()
vGameState.Changed:Connect(update)

TextDirection

Parallel lesen

TextEditable

Parallel lesen

TextEditable bestimmt, ob der Benutzer die Text durch Eingabe ändern kann.Es wird empfohlen, ClearTextOnFocus zu deaktivieren, wenn diese Eigenschaft deaktiviert ist, sonst könnte der Text beim Fokussieren gelöscht werden.Diese Eigenschaft ist nützlich, um lesbare Textboxen zu erstellen, aus denen Inhalte im Spiel kopiert werden können.

TextFits

Schreibgeschützt
Nicht repliziert
Parallel lesen

Ob der Text innerhalb der Einschränkungen der Textbox passt.

TextScaled

Parallel lesen

Anstatt TextScaled zu verwenden, empfehlen wir Ihnen, AutomaticSize zu verwenden, eine neue Methode zur dynamischen Skalierung der Benutzeroberfläche, die Ihnen das beste visuelle Ergebnis möglich macht.

Die Eigenschaft TextScaled bestimmt, ob Text skaliert wird, damit er den gesamten Platz des UI-Elements ausfüllt.Wenn dies aktiviert ist, wird TextBox.TextSize ignoriert und TextBox.TextWrapped wird automatisch aktiviert.Diese Eigenschaft ist nützlich für Textrendering-UI-Elemente innerhalb von BillboardGuis .

Wenn diese Eigenschaft für die Benutzeroberfläche im Bildraum verwendet wird, kann es wünschenswert sein, ein UITextSizeConstraint zu verwenden, um die Reichweite der möglichen Textgrößen einzuschränken.

TextSkaliert und Automatische Größe

Es wird empfohlen, dass Entwickler die Verwendung von TextScaled vermeiden und die UI anpassen, um stattdessen die Eigenschaft AutomaticSize zu nutzen.Hier sind die wesentlichen Unterschiede zwischen den beiden Eigenschaften:

  • TextScaled skaliert den Inhalt (Text), um die UI zu unterstützen. Ohne sorgfältige Überlegungen kann ein Teil des Textes unleserlich werden, wenn er zu klein skaliert wird.
  • AutomaticSize passt die UI an, um Inhalte zu vergrößern.

Mit AutomaticSize kannst du deine UI anpassen, um den Inhalt (Text) unterzubringen, während du eine konstante Schriftgröße beibehältst.Für weitere Informationen darüber, wie automatisches Skalieren verwendet wird, siehe den Artikel UI Automatic Size.

Wir schlagen vor, dass Sie nicht sowohl TextScaled als auch AutomaticSize auf demselben UI-Objekt anwenden. Wenn Sie beide Eigenschaften anwenden:

  • AutomaticSize legt die maximale Menge an verfügbarer Fläche fest, die ein GuiObject verwenden kann (in diesem Fall Text)
  • TextScaled verwendet den verfügbaren Raum, der von AutomaticSize bestimmt wird, um die Schriftgröße auf die verfügbare Platzzu skalieren, die sich auf die maximale Schriftgröße (100) erweitern kann, wenn es keine Größenbeschränkungen gibt
  • Das Endergebnis wird sein: Text geht auf 100 Zeichengröße und das UI-Objekt wird sich ausdehnen, um diesem Text zu entsprechen

Die Verwendung von AutomaticSize und TextScaled gleichzeitig kann zu erheblichen Skalierungsunterschieden führen, als wenn AutomaticSize ausist.

Code-Beispiele

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

Parallel lesen

Die Textgröße-Eigenschaft legt die Höhe in Verschiebungen einer Zeile Rendertext fest.Die Einheit ist in Versätzen, nicht in Punkten (die in den meisten Dokumentenbearbeitungsprogrammen verwendet wird).Die Schriftart "Legacy" enthält diese Eigenschaftennicht.

Code-Beispiele

Dieses Codebeispiel passt wiederholt die Textgröße eines Textlabels von 5 auf 100 und verblasst den Text, wenn er an Größe zunimmt.

Text "Kaboom!"

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

Parallel lesen

Die Eigenschaft TextStrokeColor3 legt die Farbe des Strichs oder Umrisses des gerenderten Textes fest.Diese Eigenschaft und TextBox.TextStrokeTransparency bestimmen die visuellen Eigenschaften des Textstrichs.

Textstriche werden vor normalem Text gerendert und sind einfach 4 Renderings desselben Textes in +/- 1 Pixelverschiebung in jeder Richtung.Textstrichrendering funktioniert unabhängig und identisch zu TextBox.TextColor3 und TextBox.TextTransparency.

Code-Beispiele

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

Parallel lesen

Die Eigenschaft TextStrokeTransparency legt die Transparenz des Strichs oder Umrisses des gerenderten Textes fest.Diese Eigenschaft und TextBox.TextStrokeColor3 bestimmen die visuellen Eigenschaften des Textstrichs.

Textstriche werden vor normalem Text gerendert und sind einfach 4 Renderings desselben Textes in +/- 1 Pixelverschiebung in jeder Richtung.Textstrichrendering funktioniert unabhängig und identisch zu TextBox.TextColor3 und TextBox.TextTransparency.Da der Textstrich einfach mehrere Darstellungen derselben Transparenz ist, ist diese Eigenschaft im Wesentlichen viermal multiplikativ auf sich selbst (z. B.Eine TextStrokeTransparency von 0,5 erscheint ungefähr gleich wie TextTransparency von 0,0625 oder 0,5^4).Daher wird empfohlen, TextStrokeTransparency auf einen Wert im Bereich von 0,75 bis 1 zu setzen, um einen subtileren Effekt zu erzielen.

Code-Beispiele

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

Parallel lesen

Die Eigenschaft TextColor3 bestimmt die Transparenz aller Textteile, die von einem UI-Element gerendert werden.Diese Eigenschaft zusammen mit TextBox.Font, TextBox.TextSize und TextBox.TextColor3 wird die visuellen Eigenschaften von Text bestimmen.Text wird nach dem Textstrich gerendert ( TextBox.TextStrokeTransparency ).

Das Verbleichen von Text durch die Verwendung eines numerischen For-Loops ist eine fantastische Möglichkeit, die Aufmerksamkeit eines Spieler:inauf Text zu lenken, der auf dem Bildschirm angezeigt wird.


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

Code-Beispiele

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

Dieses Codebeispiel passt wiederholt die Textgröße eines Textlabels von 5 auf 100 und verblasst den Text, wenn er an Größe zunimmt.

Text "Kaboom!"

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

Parallel lesen

Steuert die Kürzung des Textes, der in diesem Textfeld angezeigt wird.

TextWrapped

Parallel lesen

Wenn aktiviert, wird diese Eigenschaft Text auf mehreren Zeilen innerhalb des Raums eines TextBox-Elements gerendert, so dass TextBox.TextBounds nie das GuiBase2d.AbsoluteSize des GUI-Elements überschreitet.

Dies wird erreicht, indem lange Textzeilen in mehrere Zeilen aufgeteilt werden.Zeilenelementbrüche bevorzugen Leerzeichen; sollte ein langes ununterbrochenes Wort die Breite des Elements überschreiten, wird dieses Wort in mehrere Zeilen aufgeteilt.

Wenn weitere Zeilenelementbrüche die vertikale Höhe des Textes (die Y-Komponente von ) überschreiten würden, wird diese Zeile Allenicht gerendert.

Code-Beispiele

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

Parallel lesen

TextXAlignment bestimmt die horizontale Ausrichtung (X-Achse) des Textes, der innerhalb des Platzeines UI-Elements gerendert wird.Es funktioniert ähnlich wie die Eigenschaften, mit linken, rechten und mittleren Werten (es gibt keine Ausrichtungsoption).Für Links und Rechts wird der Text so gerendert, dass die linken/rechten Textgrenzen nur die Kante des UI-Elementrechtecks berühren.Für das Zentrum wird jede Textzeile auf das genaue Zentrum des UI-Elementrechtecks ausgerichtet.

Diese Eigenschaft wird in Verbindung mit TextBox.TextYAlignment verwendet, um die Textausrichtung auf beiden Achsen vollständig zu bestimmen.Diese Eigenschaft wird die lesbaren Eigenschaften TextBox.TextBounds und TextBox.TextFits nicht beeinflussen.

Code-Beispiele

Dieses Codebeispiel zeigt alle verschiedenen Textausrichtungs-Kombinationen, indem es über jedes Enumerationselement iteriert wird.Es sollte innerhalb eines Textlabels, Textknopf oder Textfeldes platziert werden.

Textausrichtung

-- Füge dies in ein Lokales Skript innerhalb einer Textmarke/Textschaltfläche/TextBox ein
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
-- Iterieren über beide TextXAlignment- und 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

Parallel lesen

TextYAlignment bestimmt die vertikale Ausrichtung (Y-Achse) des Textes, der innerhalb des Platzeines UI-Elements gerendert wird.Für oben und unten wird der Text so gerendert, dass die oberen/unteren Textgrenzen nur die Kante des UI-Elementrechtecks berühren.Für das Zentrum wird der Text so gerendert, dass es einen gleich großen Abstand von den oberen Grenzen des Textes bis zur Spitze des Elements und die unteren Grenzen des Textes bis zur Unterseite des Elements gibt.

Diese Eigenschaft wird in Verbindung mit TextBox.TextXAlignment verwendet, um die Textausrichtung auf beiden Achsen vollständig zu bestimmen.Diese Eigenschaft wird die lesbaren Eigenschaften TextBox.TextBounds und TextBox.TextFits nicht beeinflussen.

Code-Beispiele

Dieses Codebeispiel zeigt alle verschiedenen Textausrichtungs-Kombinationen, indem es über jedes Enumerationselement iteriert wird.Es sollte innerhalb eines Textlabels, Textknopf oder Textfeldes platziert werden.

Textausrichtung

-- Füge dies in ein Lokales Skript innerhalb einer Textmarke/Textschaltfläche/TextBox ein
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
-- Iterieren über beide TextXAlignment- und 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

Methoden

CaptureFocus

()

Zwingt den Client, sich auf die Textbox zu konzentrieren.


Rückgaben

()

Code-Beispiele

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

Gibt wahr zurück, wenn die Textbox fokussiert ist, oder falsch, wenn sie es nicht ist.


Rückgaben

ReleaseFocus

()

Erzwingt, dass der Client die Textbox unscharf macht. Der submitted -Parameter ermöglicht es Ihnen, den enterPressed -Parameter im TextBox.FocusLost -Ereignis zu überschreiben.

Dieser Artikel sollte mit einem LocalScript verwendet werden, um im Online-Modus wie erwartet zu funktionieren.

Der Code, der unten angezeigt wird, zwingt den Client, die 'TextBox' 5 Sekunden nach ihrer Auswahl unzufokussieren:


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

Bitte beachten Sie, dass das obige Beispiel davon ausgeht, dass es in einem LocalScript ist, als Kind einer TextBox.

Parameter

submitted: boolean
Standardwert: false

Rückgaben

()

Code-Beispiele

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)

Ereignisse

FocusLost

Feuert, wenn der Client seinen Fokus verlässt die TextBox - typischerweise, wenn ein Client außerhalb der TextBox klickt/tippt.Dies wird auch ausgelöst, wenn eine Textbox den Fokus auf den Benutzer richtet.

Es kann neben TextBox.Focused verwendet werden, um zu verfolgen, wann eine Textbox Fokus gewinnt und verliert.

Siehe auch die UserInputService.TextBoxFocused und UserInputService.TextBoxFocusReleased für ähnliche Funktionen, die auf den UserInputService-Dienst angewiesen sind.

Dieses Ereignis wird nur abgefeuert, wenn es in einem LocalScript verwendet wird.

Parameter

enterPressed: boolean

Ein boolescher Indikator, ob der Client Enter gedrückt hat, um den Fokus zu verlieren ( wahr ) oder nicht ( falsch ).

inputThatCausedFocusLoss: InputObject

Eine InputObject Instanz, die den Typ der Eingabe anzeigt, die zur Verlust des Fokus der Textbox geführt hat.


Code-Beispiele

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

Feuert, wenn der TextBox Fokus gewinnt - typischerweise, wenn ein Client auf eine Textbox klickt/tippt, um den Texteintrag zu beginnen.Dies wird auch ausgelöst, wenn eine Textbox den Fokus auf den Benutzer richtet.

Es kann neben TextBox.FocusLost verwendet werden, um zu verfolgen, wann eine Textbox Fokus gewinnt und verliert.

Siehe auch die UserInputService.TextBoxFocused und UserInputService.TextBoxFocusReleased für ähnliche Funktionen, die auf den UserInputService-Dienst angewiesen sind.

Dieses Ereignis wird nur abgefeuert, wenn es in einem LocalScript verwendet wird.


Code-Beispiele

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