TextBox

Veraltete anzeigen

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

Ein TextBox ermöglicht dem Spieler, Text-Eingaben zu liefern. Es funktioniert ähnlich wie ein TextButton, mit der ein einzelner Text-Box in den Fokus geraten, geklickt, getippt oder auf der Spielpad-Auswahl gesetzt werden kann. Während des Fokus kann der Spieler die Eigenschaft Text über die Tastatur ändern.

  • Wenn kein Text vorhanden ist, wird der PlaceholderText sichtbar sein. Dies ist eine nützliche Anfrage, die Spieler von der Art oder der Form der Daten eingeben sollen, die sie eingeben sollen.
  • Standardmäßig ist die ClearTextOnFocus-Eigenschaft aktiviert und stellt sicher, dass kein bestehender Text vorhanden ist, wenn eine Textbox konzentriert ist. Dies kann nicht begehrt sein für Text, der vom Spieler:inbearbeitet werden sollte.
  • Die MultiLine-Eigenschaft ermöglicht es Spielern, mehrere Zeilen mit Neulinien-Charaktern ( \n ) einzugeben.

Der ContextActionService honoriert Textbox-Tastenbelegungen und verhindert automatisch, dass die Tasten drücken-Ereignisse an Aktionen gebunden mit ContextActionService:BindAction() werden. UserInputService.InputBegan und verwandte Ereignisse werden immer ausgeführt, wenn ein Textbox-Fokus ist.

Fokus-Zustand

Es ist möglich, den Fokuszustand eines 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 ist; du kannst ContextActionService:BindAction() verwenden, um einen bestimmten Key zu binden, um eine Textbox mit dieser Funktion zu fokussieren. Wenn eine Textbox in Fokus kommt, wird das Ereignis
  • Sie können überprüfen, ob eine bestimmte TextBox in Fokus ist, indem Sie IsFocused verwenden. Alternativ kann UserInputService:GetFocusedTextBox() verwendet werden, um zu überprüfen, ob eine bestimmte TextBox in Fokus ist.
  • Wenn der Spieler fertig mit dem Eingeben von Text fertig ist, wird das Ereignis FocusLost ausgelöst, das anzeigt, ob der Benutzer Enter gedrückt hat, um den Text zusammen mit dem InputObject einschließlich der Verlustfokussierung zu senden. Wenn Sie auf Mobilger
  • Wenn während des Gameplayeine wichtigere Angelegenheit auftritt, kannst du ReleaseFocus der TextBox, damit die Tastatur eines Spieler:inzurück in dein Spiel zurückkehrt.

Text bearbeiten

Ein TextBox unterstützt die Textauswahl durch seine CursorPosition und SelectionStart -Eigenschaften. Wenn Sie GetPropertyChangedSignal verwenden, können Sie erkennen, wenn sich eine Auswahl ändert. Darüber hinaus ist es möglich, dass Spieler Text innerhalb eines TextBox kopieren und einfügen

Text-Filtering-Hinweis Spiele, die die Kommunikation zwischen Spielern mit Text ermöglichen, wie z. B. benutzerdefinierte Chat oder Namensschilder, müssen den Text mit TextService:FilterStringAsync() oder Chat:FilterStringAsync() richtig filtern. Wenn dies nicht richtig getan wird, kann Ihr Spiel eine Actionerhalten.

Code-Beispiele

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

  • Erzwingt den Client, sich auf die TextBox zu konzentrieren.

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

  • ReleaseFocus(submitted : bool):void

    Erzwingt den Client, die TextBox zu entsperren.

Methoden von GuiObject übernommen

Ereignisse

Ereignisse von GuiObject übernommenEreignisse von GuiBase2d übernommen

Eigenschaften

ClearTextOnFocus

Parallel lesen

Bestimmt, ob das Klicken auf die TextBox seine TextBox.Text Eigenschaftenlöschen wird

ContentText

Schreibgeschützt
Nicht repliziert
Parallel lesen

CursorPosition

Parallel lesen

CursorPosition bestimmt die Versetztheit des Textcurrors in Bytes oder -1, wenn die Textbox derzeit nicht bearbeitet wird. Ein Wert von 1 repräsentiert den Anfang, die Position vor dem ersten Byte in der Text Eigenschaften. Wenn er in Kombination mit der SelectionStart Eigenschaftenverwendet wird, kann sow

Es sollte beachtet werden, dass die Einheiten dieser Eigenschaft Bytes sind und dass viele unicode-Zeichen wie Emoji länger als 1 Byte sind. Zum Instanz, wenn ein Spieler in die TextBox "Hallo👋" eingibt – "Hallo" sofort gefolgt von dem Waving-Hand-Zeichen – der Cursor-Position wäre 10, nicht 7, da der Emoji 4 Bytes verwendet.

Code-Beispiele

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

DieFont-Eigenschaft wählt eine der mehrere vordefinierten fonts, mit denen das UI-Element seinen Text rendert. Einige Schriften haben krasse,italic und/oder hell Varianten (da es keine Schriftgewicht oder Stil Eigenschaften gibt).

Mit Ausnahme der "Legacy"-Schrift, rendert jede Schrift Text mit der Zeilenniveau, die der TextBox.TextSize Eigenschaftenentspricht. Die "Code"-Schrift ist die einzige Monospace-Schrift. Sie hat die einzigartige Eigenschaft, dass jeder Charakter die genaue Breite und Höherate von 1:2 hat. Die Breite jedes Charakters beträgt etwa die Hälfte der Class.Toolbar

Diese Eigenschaft wird mit der TextBox.FontFace Eigenschaftensynchronisiert. Wenn Sie die Schriftart einstellen, wird die Schriftart auf Font.fromEnum(value) gesetzt.

Code-Beispiele

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

Parallel lesen

Die FontFace-Eigenschaft ähnelt der Eigenschaften, aber erlaubt es, Schriften zu setzen, die in der Font-Liste nicht existieren.

Diese Eigenschaft wird mit der TextBox.Font Eigenschaftensynchronisiert. Wenn Sie die Schriftart einrichten, wird die Schriftart auf den entsprechenden Enumerie-Wert oder auf Enum.Font.Unknown gesetzt, wenn keine Matches vorhanden sind.

LineHeight

Parallel lesen

Steuert die Höhe von Zeilen, als Vielfaches der Schriftgröße, indem Sie die Abstand zwischen Zeilen des Textes im TextBox skalieren. Gültige Werte reichen von 1.0 bis 3.0, standardmäßig auf 1.0.

MaxVisibleGraphemes

Parallel lesen

Dieses Eigenschaften kontrolliert die maximale Anzahl von Graphemen (oder Einheiten von Text), die auf dem TextBox angezeigt werden, unabhängig davon, ob es die TextBox.PlaceholderText oder TextBox.Text anzeigt.

Die Änderung der Eigenschaft ändert die Position oder Größe der sichtbaren Grapheme nicht - die Platzierung wird berechnet, als ob alle Grapheme sichtbar wären.

Das Setzen der Eigenschaft auf -1 deaktiviert das Limit und zeigt die Gesamtheit des TextBox.Text .

MultiLine

Parallel lesen

Wenn auf "Ja" gesetzt, kann der Text innerhalb einer TextBox auf mehrere Zeilen verschoben werden. Dies ermöglicht auch, dass Spieler die Enter-Taste verwenden, um auf eine neue Zeile zu wechseln.

OpenTypeFeatures

Parallel lesen

OpenTypeFeaturesError

Schreibgeschützt
Nicht repliziert
Parallel lesen

PlaceholderColor3

Parallel lesen

Setzt die Textfarbe, die verwendet wird, wenn noch kein Text in die TextBox eingegeben wurde.

PlaceholderText

Parallel lesen

Setzt den Text, der angezeigt wird, wenn noch kein Text in die TextBox eingegeben wurde.

RichText

Parallel lesen

Dieses Eigenschaft bestimmt, ob das TextBox die TextBox.Text -String mit reichlichem Textformat anzeigt. Rich-Text verwendet einfache Markierungs-Tags, um Abschnitte der Strings in Bold, Items und mehr zu stylen.

Um reichlichen Text zu verwenden, füge einfach Formulierungs-Tags in die TextBox.Text -String ein.

Beachten Sie, dass wenn das TextBox diese Eigenschaft aktiviert hat und die Box fokussiert wird, der Benutzer in der Lage sein wird, die komplette Stringzu bearbeiten und mit dem Benutzer zu interagieren, einschließlich aller Formattags. Wenn der Fokus verloren geht, wird der Text automatisch ausgeführt und die Tags als reicher Text rendern.

SelectionStart

Parallel lesen

Bestimmt die Startposition eines Textauswahl- oder -1, wenn die TextBox keine Reichweite ausgewählten Texts hat. Wenn der Wert -1 oder ähnlich ist CursorPosition, gibt es keine Reichweite ausgewählten Texts. Diese Eigenschaft verwendet die gleiche Platzierungslogik wie CursorPosition. SelectionStart wird größer sein als CursorPosition, wenn der Cursor am beendeneiner Auswahl ist, und kleiner als

Code-Beispiele

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

Parallel lesen

Wenn auf wahr gesetzt, wird die nativen Eingabe auf die Plattform verwendet, anstatt Roblox's integriertem Tastatur.

Text

Parallel lesen

Die Text-Eigenschaft bestimmt den Inhalt, der von der UI-Element rendert wird. Die visuellen Eigenschaften der Strings, die auf den Bildschirm gerendert werden, werden von TextBox.TextColor3

Es ist möglich, Emoji (z. B. 😃) und andereSymbole zu rendern. Diese SpezialSymbole sind nicht vom TextBox.TextColor3 Eigenschaft betroffen. Sie können in Script und LocalScript Objekten eingefügt werden, sowie in das Feld innerhalb des Eigenschaften-Fensters.

Dieses Eigenschaft kann neue Zeilennamen enthalten, ist aber nicht möglich, neue Zeilennamen innerhalb des Eigenschaften-Fensters zu tippen. Ähnlich ist es nicht möglich, dieses Eigenschaft ein Tab-Zeichen zu enthalten, aber es wird als Leertaste ausgegeben.

Code-Beispiele

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
"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
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
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
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-Lektüre"-Eigenschaft TextBounds gibt die absolute Größe des gerenderten Textes in Offsets wieder. In anderen Worten, wenn Sie versuchen, Text in ein Rectangle zu passen, würde diese Eigenschaft die minimale Größe des Rectangles wiedergeben, die Sie benötigen, um den Text einzupassen.

Mit TextService:GetTextSize() , kannst du vorhersagen, welche TextBounds auf einem TextLabel gegeben eine String, TextBox.Font , TextBox.TextSize und Frame Size sein.

Code-Beispiele

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

Dieses Eigenschaft bestimmt die Farbe des gesamten Textes, der von einem GUI Element rendert wird. Dieses Eigenschaft zusammen mit TextBox.Font , TextBox.TextSize und 1> Class.Toolbar.TextTransparency1> wird die visuellen Eigenschaften des Texts rendern. Text wird

Es ist wichtig, dass der Text einfach von Spielern gelesen werden kann! Stellen Sie sicher, dass Sie Farben mit geringer bis kaumer Sättigung, wie Weiß, Grau oder Schwarz, wählen. Stellen Sie sicher, dass die Farbe Ihres Textes von der TextBox.BackgroundColor3 der UI-Element angewendet wird. Wenn die Elemente eine transparente Hintergrund haben, versuchen Sie, einen

Code-Beispiele

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

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 kann der Text beim Fokus aufgerufen werden. Diese Eigenschaft ist nützlich, um kopierbare TextBoxen aus denen der Inhalt im

TextFits

Schreibgeschützt
Nicht repliziert
Parallel lesen

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

TextScaled

Parallel lesen

Statt TextScaled zu verwenden, empfehlen wir Ihnen, AutomaticSize zu verwenden, eine neue Methode, die die visuelle Ansicht dynamisch skaliert, um Ihnen das beste visuelle Ergebnis zu liefern.

Die TextSkalierung-Eigenschaft bestimmt, ob der Text so skaliert wird, dass er den gesamten Platzfüllt. Wenn dies aktiviert ist, wird TextBox.TextSize ignoriert und TextBox.TextWrapped automatisch aktiviert. Diese Eigenschaft ist nützlich für die Text-Renderung von UI-Elementen innerhalb von BillboardGuis .

Wenn dieses Eigenschaft für Screen-Space-UI verwendet wird, kann es sinnvoll sein, ein UITextSizeConstraint zu verwenden, um die Reichweite der möglichen Textgrößen zu begrenzen.

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 Haupterschiede zwischen den beiden Eigenschaften:

  • TextScaled skaliert den Inhalt (Text), um die UI unterzubringen. Ohne sorgfältige Überlegung kann einige Textzeilen unleserlich werden, wenn er zu klein skaliert wird.
  • AutomaticSize passt die UI an, um Inhalte unterzubringen.

Mit der automatischen Größe können Sie Ihre UI anpassen, um den Inhalt (Text) unterzubringen, während Sie eine konstante Schriftgröße verwenden. Weitere Informationen darüber, wie Sie die automatische Größe verwenden, finden Sie im Artikel "Automatische Schriftgröße".

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

  • AutomaticSize bestimmt die maximale Menge verfügbarer Platz, die ein GuiObject verwenden kann (in diesem Fall, Text)
  • TextScaled verwendet den verfügbaren Platz, der von AutomaticSize bestimmt ist, um die Schriftgröße anzupassen, um den verfügbaren Platz zu füllen, was bis zum maximalen Schriftgrößen (100) erweitert wird, wenn keine Größenbeschränkungen vorhanden sind
  • Das Ergebnis wird sein: Text geht auf 100 Zeichengröße und das UI-Objekt wird sich erweitern, um diesen Text zu fassen

Das gleichzeitige Verwenden von both AutomaticSize und TextScaled kann zu erheblichen Skalierungsdifferen führen, als wenn AutomaticSize ausgeschaltet ist.

Code-Beispiele

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 TextSize-Eigenschaft bestimmt die Höhe in Offsets einer Zeile des gerenderten Textes. Die Einheit ist in Offsets, nicht Punkten (was in den meisten Dokumenten-Editor-Programmen verwendet wird). Die "Legacy"-Schriftart enthält diese Eigenschaftennicht.

Code-Beispiele

"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

Parallel lesen

Die TextStrokeColor3-Eigenschaft setzt die Farbe des Strokes oder der Umrissung des gerenderten Textes. Diese Eigenschaft und TextBox.TextStrokeTransparency ermitteln die visuellen Eigenschaften des Textstrokes.

Textstick wird vor dem normalen Text gerendert und ist einfach 4 Renderings des gleichen Textes in +/- 1 Pixel-Versatz in jede Richtung. Textstick-Renderung funktioniert unabhängig und identisch zu TextBox.TextColor3 und TextBox.TextTransparency.

Code-Beispiele

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 TextStrokeTransparency-Eigenschaft setzt die Transparenz des Stocks oder Umrisses des gerenderten Textes. Diese Eigenschaft und TextBox.TextStrokeColor3 ermitteln die visuellen Eigenschaften des Textstocks.

Textstick wird vor normalem Text gerendert und ist einfach 4 Renderings des gleichen Textes in +/- 1 Pixel-Versatz in jede Richtung. Textstick-Renderung funktioniert unabhäng

Code-Beispiele

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 TextColor3-Eigenschaft bestimmt die Transparenz des gesamten Textes, der von einem UI-Element gerendert wird. Diese Eigenschaft zusammen mit TextBox.Font , TextBox.TextSize und TextBox.TextColor3 wird die visuellen Eigenschaften des Texts bestimmen. Der Text wird nach dem Textstift ( 1> Class.Toolbar.TextStrokeTransparency</

Fading Text in der Verwendung einer numerischen For-Loop ist eine fantastische Möglichkeit, den Aufmerksamkeit eines Spieler:inauf Text, der auf dem Bildschirm angezeigt wird, zu ziehen.


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

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

Parallel lesen

Steuert die Kürzung des Textes, die in dieser Textkiste angezeigt wird.

TextWrapped

Parallel lesen

Wenn aktiviert, wird der Text auf mehreren Zeilen innerhalb eines GUI Elements so dargestellt, dass TextBox.TextBounds niemals die GuiBase2d.AbsoluteSize des GUI-Elements überschreiten.

Dies wird durch das Aufteilen langer Zeilen in mehrere Zeilen erreicht. Zeilennachweise bevorzugen Weißraum; wenn ein langes unbrokenes Wort die Breite des Elements überschreitet, wird das Wort in mehrere Zeilen aufgeteilt.

Wenn weitere Zeilensplits die vertikale Höhe des Texts (die Y-Komponente von TextBox.TextBounds ) überschreitet, wird diese Zeile nicht gerendert, wenn die vertikale Höhe des Elements (die Y-Komponente von GuiBase2d.AbsoluteSize ) nicht überschreitet.

Code-Beispiele

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 Platzes eines UI-Elements gerendert wird. Es funktioniert ähnlich wie die Eigenschaften, mit linken, rechten und mittleren Werten (es gibt keine Rechtfertigungsoption). Für Linke und Rechte wird der Text so gerendert, dass die linken/rechten Textkanten die Kante des UI-Elementrechtecken berühren. Für Zentrum wird jede Zeile des Textes in der Mitte des UI-Elementre

Dieses Eigenschaft wird in Zusammenarbeit mit TextBox.TextYAlignment verwendet, um das Textausrichtung auf beiden Achsen vollständig zu bestimmen. Dieses Eigenschaft wird die read-only-Eigenschaften TextBox.TextBounds und TextBox.TextFits nicht beeinflussen.

Code-Beispiele

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

Parallel lesen

TextYAlignment bestimmt die vertikale Ausrichtung (Y-Achse) des Textes, der in einem Platzgerendert wird. Für oben und unten wird der Text so gerendert, dass die oberen/unteren Textgrenzen die Kante des UI-Element-Rechtecken berühren. Für Center wird der Text so gerendert, dass es einen gleichmäßigen Raum von den oberen Textgrenzen des Textes bis zur Spitze des Elements und den unteren Textgrenzen des Textes bis zur Spitze des Elements gibt.

Dieses Eigenschaft wird in Zusammenarbeit mit TextBox.TextXAlignment verwendet, um das Textausrichtung auf beiden Achsen vollständig zu bestimmen. Dieses Eigenschaft wird die read-only-Eigenschaften TextBox.TextBounds und TextBox.TextFits nicht beeinflussen.

Code-Beispiele

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

Methoden

CaptureFocus

void

Erzwingt den Client, sich auf die TextBox zu konzentrieren.


Rückgaben

void

Code-Beispiele

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

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


Rückgaben

ReleaseFocus

void

Erzwingt den Client, die TextBox zu entfokussieren. Der submitted-Parameter ermöglicht es Ihnen, den enterPressed-Parameter im TextBox.FocusLost-Ereignis zu überschreiben.

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

Der Code, der unten gezeigt wird, wird den Client dazu zwingen, den 'Texturen' 5 Sekunden nachdem er ausgewählt ist:


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: bool
Standardwert: false

Rückgaben

void

Code-Beispiele

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 den Fokus verlässt, die TextBox - normalerweise, wenn ein Client klickt / tippt außerhalb der TextBox. Dies feuert auch, wenn ein TextBox-Fokus auf den Benutzer setzt.

Es kann neben TextBox.Focused verwendet werden, um zu verfolgen, wenn ein TextBox den Fokus gewinnt und verliert.

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

Dieses Ereignis wird nur ausgeführt, wenn es in einem LocalScript verwendet wird.

Parameter

enterPressed: bool

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

inputThatCausedFocusLoss: InputObject

Eine InputObject Instanz, die die Art der Eingabe anzeigt, die die Textbox verloren hat.


Code-Beispiele

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)
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 das TextBox den Fokus gewinnt - normalerweise, wenn ein Client auf eine Textbox klickt/antastet, um den Text-Eintrag zu beginnen. Dies feuert auch ab, wenn ein Text-Feld den Fokus auf den Benutzer setzt.

Es kann neben TextBox.FocusLost verwendet werden, um zu verfolgen, wenn ein TextBox Fokus gewinnt und verliert.

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

Dieses Ereignis wird nur ausgeführt, wenn es in einem LocalScript verwendet wird.


Code-Beispiele

Focus

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

ReturnPressedFromOnScreenKeyboard