TextButton
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
Ein TextButton verhält sich ähnlich wie TextLabel in Bezug auf die Darstellung mit den zusätzlichen Verhaltensweisen eines GuiButton . Es definiert die gleichen Text-Render-Eigenschaften wie eine TextLabel.
Du kannst Text-Renderung deaktivieren, indem du TextButton.TextTransparency auf 1 setzt. Dies lässt dich mit einem einfachen Rechteck, das als Button verwendet werden kann, zurück.
Code-Beispiele
-- Place this code in a LocalScript in a TextButton
local textButton = script.Parent
local counter = 0
textButton.Text = "Click me!"
local function onActivated()
counter = counter + 1
textButton.Text = "Clicks: " .. counter
end
textButton.Activated:Connect(onActivated)
Zusammenfassung
Eigenschaften
Eine Kopie von TextButton.Text , die genau das enthält, was von dem TextButton gerendert wird.
Bestimmt die Schriftart, die verwendet wird, um Text zu rendern.
Bestimmt die Schriftart, die verwendet wird, um Text zu rendern.
Skaliert die Abstände zwischen Textzeilen im TextButton .
Setzt, ob ein Class.TextButton``Class.GuiBase2d.Localize oder nicht sein soll.
Die maximale Anzahl von Graphen, die TextButton anzeigenkann.
Bestimmt, ob der TextButton die TextButton.Text Strings mit reichlicher Text格式 rendert.
Bestimmt die Strings, die von der UI-Elementanzeige rend染됩니다。
Die Größe des Textes eines UI-Elements in Offsets.
Bestimmt die Farbe des gerenderten Textes.
Eine bool-Repräsentation, ob der TextButton-Text in seine Größe passt.
Ändert, ob der Text innerhalb des TextButtons auf die Größe skaliert wird.
Bestimmen Sie die Zeilshöhe des Textes in Offsets.
Bestimmt die Farbe des Textstoßes (Umriss).
Bestimmt die Transparenz des Textes (Umriss).
Bestimmt die Transparenz des gerenderten Textes.
Steuert die Kürzung des Textes, die in diesem TextButton angezeigt wird.
Bestimmt, ob Text-Wraps in mehreren Zeilen innerhalb des GUI Platzzusammengesetzt werden, überschüssigen Text zuschneiden.
Bestimmt die horizontale Ausrichtung des gerenderten Textes.
Bestimmt die vertikale Ausrichtung des gerenderten Texts.
Bestimmt, ob die Schaltfläche automatisch Farbe ändert, wenn die Maus darüber schwebt oder darauf klickt.
Wenn wahr, während der GUI-Element sichtbar ist, wird die Maus nicht gesperrt, wenn der rechte Maustaste nicht abgestellt ist.
EineBoolean-Eigenschaft, die anzeigt, ob das Objekt ausgewählt wurde.
Setzt den Stil des GuiButton basierend auf einer Liste von vordefinierten Stilen.
Bestimmt, ob dieses UI-Element die Eingabe sinkt.
Bestimmt den Ursprungspunkt eines GuiObject , relativer zu seiner absoluten Größe.
Bestimmt, ob das Skalieren basierend auf Kindern Inhalt.
Bestimmt die Hintergrundfarbe des GuiObject.
Bestimmt die Transparenz der GuiObject -Hintergrund und -Rand.
Bestimmt die Farbe der GuiObject Grenze.
Bestimmt, in welcher Weise die GuiObject Kante relativ zu ihren Dimensionen platziert ist.
Bestimmt die Pixelbreite der GuiObject Grenze.
Bestimmt, ob der Nachkomme GuiObjects außerhalb der Grenzen eines Eltern-GUI-Elements rendernwerden soll.
Bestimmt, ob die Maus des Spieler:inauf dem GuiObject aktiviert wird oder nicht.
Bestimmt, ob das GuiButton mit oder ohne Interaktion möglich ist, oder ob das GuiState der GuiObject geändert wird oder nicht.
Steuert die Sortierungsordnung der GuiObject bei Verwendung mit einem UIGridStyleLayout.
Setzt das GuiObject, das ausgewählt wird, wenn der Gamepad-Auswahlhebel nach unten verschoben wird.
Setzt das GuiObject, das ausgewählt wird, wenn der Gamepad-Auswahl器 nach links verschoben wird.
Setzt das GuiObject, das ausgewählt wird, wenn der Gamepad-Auswahlheber rechts verschoben wird.
Setzt das GuiObject, das ausgewählt wird, wenn der Gamepad-Auswahlheber nach oben verschoben wird.
Bestimmt die Pixel- und SkalierungsPosition des GuiObject.
Bestimmt die Anzahl der Grad, in denen das GuiObject gedreht wird.
Bestimmen Sie, ob das GUI durch eine Gamepadausgewählt werden kann.
Überschreibt die Standard-Auswahlornamente für Gamepads.
Die Reihenfolge von GuiObjects , die von der Spielpad-Auswahl ausgewählt wurde.
Bestimmt die Pixel- und Skalierungsgröße des GuiObject.
Setzt die Size Achsen, auf denen die GuiObject basieren wird, relativ zur Größe ihres übergeordnetes Teil.
Eine gemischte Eigenschaft von BackgroundTransparency und TextTransparency.
Bestimmt, ob das GuiObject und seine Nachkommen gerendert werden.
Bestimmt die Reihenfolge, in der ein GuiObject relativo zu anderen rendert.
Beschreibt die tatsächliche Bildschirmposition eines UI-Elements in Pixeln.
Beschreibt die tatsächliche Bildschirmdrehung eines UI-Elements, in Grad.
Beschreibt die tatsächliche Bildschirmgröße eines UI-Elements in Pixel.
Wenn auf wahr gesetzt, wird die Lokalisierung auf diesen GuiBase2d und seinen Nachkommen angewendet.
Eine Verweisung auf eine LocalizationTable , die verwendet wird, um automatisierte Lokalisierung auf diesen GuiBase2d und seinen Nachkommen anzuwenden.
Benutzerdefiniert das Verhalten der Gamepad-Auswahl in Richtung unten.
Anpassen Sie das Gamepad-Auswahlverhalten in der linken Richtung.
Benutzerdefiniert das Verhalten der Spielpad-Auswahl in die richtige Richtung.
Benutzerdefiniert das Verhalten der Gamepad-Auswahl in Richtung nach oben.
Erlaubt die Anpassung der Gamepad-Auswahl.
Methoden
Methoden von GuiObject übernommen- TweenPosition(endPosition : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : bool,callback : function):bool
Bewegt eine GUI mühelos zu einem neuen UDim2.
- TweenSize(endSize : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : bool,callback : function):bool
Skaliert eine GUI makellos zu einer neuen UDim2 .
- TweenSizeAndPosition(endSize : UDim2,endPosition : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : bool,callback : function):bool
Verschwindet ein GUI mühelos auf eine neue Größe und Position.
Ereignisse
Ereignisse von GuiButton übernommenFeuert die Taste aktiviert.
Fehler: Die Maus hat die GUI-Schaltfläche vollständig verlassen, als sie vollständig klickt hat.
Feuert, wenn die Maus in der linken unteren Position auf dem GUI-Objekt ist.
Feuert, wenn die linke Maust die GUI-Objekt freigegeben hat.
Fehler: Die Maus hat die GUI-Schaltfläche vollständig mit der rechten Maustaste angeklickt.
Feuert, wenn die Maus im rechten Maus-Down-Zustand auf dem GUI-Objekt ist.
Feuern, wenn die rechte Maustaste auf einem GUI-Objekt freigelassen wurde.
Ausgelöst, wenn ein Benutzer mit einem Human-Computer-Interface-Gerät (Maus-Button, Touch-Anfang, Tastatur-Button usw.) interagiert.
Ausgelöst, wenn ein Benutzer die Interaktion über ein Mensch-Computer-Schnittstelle-Gerät (Maus-Button nach unten, Touch-Anfang, Tastatur-Button nach unten usw.) ändert.
Ausgelöst, wenn ein Benutzer die Interaktion über ein Mensch-Computer-Schnittstelle (Maus-Button, Touch-Beginn, Tastatur-Button usw.) aufgibt.
Feuert, wenn ein Benutzer seine Maus in ein GUI-Element bewegt.
Feuert, wenn ein Benutzer seine Maus aus einem GUI-Element bewegt.
Feuert, wenn ein Benutzer seine Maus bewegt, während sie in einem GUI-Element ist.
Feuert, wenn ein Benutzer seine Maus zurück scrollt, wenn die Maus über ein GUI-Element ist.
Feuert, wenn ein Benutzer seine Maus auf ein GUI-Element bewegt, wenn die Maus über einem GUI-Element ist.
Feuern, wenn das GuiObject mit dem Gamepad-Auswahl器 konzentriert wird.
Feuern, wenn der Gamepad-Auswahlbereich auf das GuiObject aufhört, sich zu konzentrieren.
Feuert, wenn der Spieler startet, hält und stoppt das Drücken der UI.
- TouchPan(touchPositions : Array,totalTranslation : Vector2,velocity : Vector2,state : Enum.UserInputState):RBXScriptSignal
Feuert, wenn der Spieler seinen Finger auf dem UI-Element bewegt.
- TouchPinch(touchPositions : Array,scale : number,velocity : number,state : Enum.UserInputState):RBXScriptSignal
Feuert, wenn der Spieler einen Pinch oder Ziehvorgang mit zwei Fingern auf der UI-Element ausführt.
- TouchRotate(touchPositions : Array,rotation : number,velocity : number,state : Enum.UserInputState):RBXScriptSignal
Feuert, wenn der Spieler einen Rotierungs-Gestalt mit zwei Fingern auf dem UI-Element ausführt.
Feuert, wenn der Spieler eine Swipe-Geste auf dem UI-Element ausführt.
Feuert, wenn der Spieler eine Berührung auf dem UI-Element ausführt.
- SelectionChanged(amISelected : bool,previousSelection : GuiObject,newSelection : GuiObject):RBXScriptSignal
Feuert, wenn die Gamepad-Auswahl bewegt wird, geht oder sich in der verbundenen GuiBase2d oder einem Nachfolge GuiObjekten ändert.
Eigenschaften
ContentText
Dieses Eigenschaften-Fenster bietet eine Kopie von TextButton.Text, die genau das enthält, was von dem TextButton gerendert wird. Dies ist nützlich, um Stil-Tags für reichlichen Text zu eliminieren.
Beispiel
Wenn TextButton.RichText aktiviert ist, zeigt die Eigenschaft TextButton.ContentText den Text an, wie er dem Spieler:inangezeigt wird.
<tbody><tr><td>falsch</td><td>\<b>Hallo,\<br/> Welt!\</b></td><td>\<b>Hallo,\<br/> Welt!\</b></td></tr><tr><td>wahr</td><td>\<b>Hallo,\<br/> Welt!\</b></td><td>Hallo, Welt!</td></tr></tbody>
ReichText | Text | Inhalts-Text |
---|
Font
Die Schriftart-Eigenschaft wählt eine der mehrere voreingestellten Schriftarten, mit denen der Text der Benutzeroberfläche gerendert wird. Einige Schriftarten haben kräftige,italic und/oder hellere Farbvariationen (da es keine Schriftart-Weight oder Schriftartstil-Eigenschaften gibt).
Mit Ausnahme der "Legacy"-Schrift, wird jede Schrift Text mit der Zeilengröße, die der TextButton.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
Diese Eigenschaft wird mit der TextButton.FontFace Eigenschaftensynchronisiert. Wenn Sie die Schriftart einstellen, wird die Schriftart auf Font.fromEnum(value) gesetzt.
Code-Beispiele
local textLabel = script.Parent
while true do
-- Iterate over all the different fonts
for _, font in pairs(Enum.Font:GetEnumItems()) do
textLabel.Font = font
textLabel.Text = font.Name
task.wait(1)
end
end
local frame = script.Parent
-- Create a TextLabel displaying each font
for _, font in pairs(Enum.Font:GetEnumItems()) do
local textLabel = Instance.new("TextLabel")
textLabel.Name = font.Name
-- Set the text properties
textLabel.Text = font.Name
textLabel.Font = font
-- Some rendering properties
textLabel.TextSize = 24
textLabel.TextXAlignment = Enum.TextXAlignment.Left
-- Size the frame equal to the height of the text
textLabel.Size = UDim2.new(1, 0, 0, textLabel.TextSize)
-- Add to the parent frame
textLabel.Parent = frame
end
-- Layout the frames in a list (if they aren't already)
if not frame:FindFirstChildOfClass("UIListLayout") then
local uiListLayout = Instance.new("UIListLayout")
uiListLayout.Parent = frame
end
FontFace
Die FontFace-Eigenschaft ähnelt der Eigenschaften, aber erlaubt es, Schriften zu setzen, die in der Font-Liste nicht existieren.
Diese Eigenschaft wird mit der TextButton.Font Eigenschaftensynchronisiert. Wenn Sie die Schriftart einrichten, wird die Schriftart auf den entsprechenden Enumerator-Wert oder auf Enum.Font.Unknown gesetzt, wenn keine Matches vorhanden sind.
LineHeight
Steuert die Höhe von Zeilen, als Vielfaches der Schriftgröße, indem Sie die Abstand zwischen Zeilen des Textes im TextButton skalieren. Gültige Werte reichen von 1.0 bis 3.0, standardmäßig 1.0.
LocalizedText
Dieses Eigenschaften legt fest, ob ein Class.TextButton``Class.GuiBase2d.Localize oder nicht sein soll.
MaxVisibleGraphemes
Dieses Eigenschaftsteuerung kontrolliert die maximale Anzahl von Graphemen (oder Einheiten von Text), die auf dem TextButton angezeigt werden. Es wird hauptsächlich als einfacher Weg zur Schaffung eines "Schreibmaschineneffekts" bereitgestellt, bei dem die Zeichen einzeln erscheinen.
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 TextButton.Text .
Code-Beispiele
local TweenService = game:GetService("TweenService")
local textObject = script.Parent
local tweenInfo = TweenInfo.new(
4, -- it takes 4 seconds for the effect to complete
Enum.EasingStyle.Sine, -- typing starts fast and slows near the end
Enum.EasingDirection.Out
)
local tween = TweenService:Create(textObject, tweenInfo, {
-- Final value should be the total grapheme count
MaxVisibleGraphemes = utf8.len(textObject.ContentText),
})
tween:Play()
tween.Completed:Wait()
-- Reset the value so it can be tweened again
textObject.MaxVisibleGraphemes = -1
OpenTypeFeatures
OpenTypeFeaturesError
RichText
Dieses Eigenschaft bestimmt, ob das TextButton die TextButton.Text -String mit reichlichem Textstyling rendert. Rich-Text verwendet einfache Markierungs-Tags, um Abschnitte der Zeile in Bold, Items, bestimmten Farben und mehr zu stylen.
Um reichlichen Text zu verwenden, füge einfach Formular-Tags in die TextButton.Text Strings ein.
Text
Die Text-Eigenschaft bestimmt den Inhalt, der von der UI-Element rendert wird. Die visuellen Eigenschaften des Strings, der auf den Bildschirm gerendert wird, werden von Class.
Es ist möglich, Emoji (zum Beispiel, 😃) und andereSymbole zu rendern. Diese SpezialSymbole sind nicht vom TextButton.TextColor3 Eigenschaft betroffen. Sie können in Script und LocalScript Objekten eingefügt werden, sowie in das Feld innerhalb der Eigenschaften-Fenster.
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
local TweenService = game:GetService("TweenService")
local textLabel = script.Parent
local content = {
"Welcome to my game!",
"Be sure to have fun!",
"Please give suggestions!",
"Be nice to other players!",
"Don't grief other players!",
"Check out the shop!",
"Tip: Don't die!",
}
local tweenInfo = TweenInfo.new(1, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut)
local RNG = Random.new()
local fadeIn = TweenService:Create(textLabel, tweenInfo, {
TextTransparency = 0,
})
local fadeOut = TweenService:Create(textLabel, tweenInfo, {
TextTransparency = 1,
})
local lastIndex
while true do
-- Step 0: Fade out before doing anything
fadeOut:Play()
task.wait(tweenInfo.Time)
-- Step 1: pick content that wasn't the last displayed
local index
repeat
index = RNG:NextInteger(1, #content)
until lastIndex ~= index
-- Make sure we don't show the same thing next time
lastIndex = index
-- Step 2: show the content
textLabel.Text = content[index]
fadeIn:Play()
task.wait(tweenInfo.Time + 1)
end
local textLabel = script.Parent
textLabel.Text = "Kaboom!"
while true do
for size = 5, 100, 5 do
textLabel.TextSize = size
textLabel.TextTransparency = size / 100
task.wait()
end
task.wait(1)
end
local frame = script.Parent
-- Create a TextLabel displaying each font
for _, font in pairs(Enum.Font:GetEnumItems()) do
local textLabel = Instance.new("TextLabel")
textLabel.Name = font.Name
-- Set the text properties
textLabel.Text = font.Name
textLabel.Font = font
-- Some rendering properties
textLabel.TextSize = 24
textLabel.TextXAlignment = Enum.TextXAlignment.Left
-- Size the frame equal to the height of the text
textLabel.Size = UDim2.new(1, 0, 0, textLabel.TextSize)
-- Add to the parent frame
textLabel.Parent = frame
end
-- Layout the frames in a list (if they aren't already)
if not frame:FindFirstChildOfClass("UIListLayout") then
local uiListLayout = Instance.new("UIListLayout")
uiListLayout.Parent = frame
end
local textLabel = script.Parent
-- This text wrapping demo is best shown on a 200x50 px rectangle
textLabel.Size = UDim2.new(0, 200, 0, 50)
-- Some content to spell out
local content = "Here's a long string of words that will "
.. "eventually exceed the UI element's width "
.. "and form line breaks. Useful for paragraphs "
.. "that are really long."
-- A function that will spell text out two characters at a time
local function spellTheText()
-- Iterate from 1 to the length of our content
for i = 1, content:len() do
-- Get a substring of our content: 1 to i
textLabel.Text = content:sub(1, i)
-- Color the text if it doesn't fit in our box
if textLabel.TextFits then
textLabel.TextColor3 = Color3.new(0, 0, 0) -- Black
else
textLabel.TextColor3 = Color3.new(1, 0, 0) -- Red
end
-- Wait a brief moment on even lengths
if i % 2 == 0 then
task.wait()
end
end
end
while true do
-- Spell the text with scale/wrap off
textLabel.TextWrapped = false
textLabel.TextScaled = false
spellTheText()
task.wait(1)
-- Spell the text with wrap on
textLabel.TextWrapped = true
textLabel.TextScaled = false
spellTheText()
task.wait(1)
-- Spell the text with text scaling on
-- Note: Text turns red (TextFits = false) once text has to be
-- scaled down in order to fit within the UI element.
textLabel.TextScaled = true
-- Note: TextWrapped is enabled implicitly when TextScaled = true
--textLabel.TextWrapped = true
spellTheText()
task.wait(1)
end
local textLabel = script.Parent
local moods = {
["happy"] = "😃",
["sad"] = "😢",
["neutral"] = "😐",
["tired"] = "😫",
}
while true do
for mood, face in pairs(moods) do
textLabel.Text = "I am feeling " .. mood .. "! " .. face
task.wait(1)
end
end
TextBounds
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 Stringsein, TextButton.Font , TextButton.TextSize und der Bildschirmgröße.
Code-Beispiele
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
Dieses Eigenschaft bestimmt die Farbe des gesamten Textes, der von einem GUI Element rendert wird. Dieses Eigenschaft zusammen mit TextButton.Font , TextButton.TextSize und 1> Class.TextButton.Transparency1> wird die visuellen Eigenschaften des Textes
Es ist wichtig, dass der Text einfach von Spielern gelesen werden kann! Stellen Sie sicher, dass die Farbe mit wenig bis keiner Saturation, wie weiß, grau oder schwarz, ausgewählt ist. Stellen Sie sicher, dass die Farbe Ihres Texts von der TextButton.BackgroundColor3 der Benutzeroberfläche kontrastiert wird. Wenn die Elemente eine transparente Hintergrund haben,
Code-Beispiele
local textBox = script.Parent
local function hasVowels(str)
return str:lower():find("[aeiou]")
end
local function onTextChanged()
local text = textBox.Text
-- Check for vowels
if hasVowels(text) then
textBox.TextColor3 = Color3.new(0, 0, 0) -- Black
else
textBox.TextColor3 = Color3.new(1, 0, 0) -- Red
end
end
textBox:GetPropertyChangedSignal("Text"):Connect(onTextChanged)
-- Place this code in a LocalScript inside a TextBox
local textBox = script.Parent
local secretWord = "roblox"
local colorNormal = Color3.new(1, 1, 1) -- white
local colorWrong = Color3.new(1, 0, 0) -- red
local colorCorrect = Color3.new(0, 1, 0) -- green
-- Initialize the state of the textBox
textBox.ClearTextOnFocus = true
textBox.Text = ""
textBox.Font = Enum.Font.Code
textBox.PlaceholderText = "What is the secret word?"
textBox.BackgroundColor3 = colorNormal
local function onFocused()
textBox.BackgroundColor3 = colorNormal
end
local function onFocusLost(enterPressed, _inputObject)
if enterPressed then
local guess = textBox.Text
if guess == secretWord then
textBox.Text = "ACCESS GRANTED"
textBox.BackgroundColor3 = colorCorrect
else
textBox.Text = "ACCESS DENIED"
textBox.BackgroundColor3 = colorWrong
end
else
-- The player stopped editing without pressing Enter
textBox.Text = ""
textBox.BackgroundColor3 = colorNormal
end
end
textBox.FocusLost:Connect(onFocusLost)
textBox.Focused:Connect(onFocused)
-- Place this code in a LocalScript within a TextLabel/TextButton
local textLabel = script.Parent
-- Some colors we'll use with TextColor3
local colorNormal = Color3.new(0, 0, 0) -- black
local colorSoon = Color3.new(1, 0.5, 0.5) -- red
local colorDone = Color3.new(0.5, 1, 0.5) -- green
-- Loop infinitely
while true do
-- Count backwards from 10 to 1
for i = 10, 1, -1 do
-- Set the text
textLabel.Text = "Time: " .. i
-- Set the color based on how much time is left
if i > 3 then
textLabel.TextColor3 = colorNormal
else
textLabel.TextColor3 = colorSoon
end
task.wait(1)
end
textLabel.Text = "GO!"
textLabel.TextColor3 = colorDone
task.wait(2)
end
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Place a StringValue called "GameState" in the ReplicatedStorage
local vGameState = ReplicatedStorage:WaitForChild("GameState")
-- Place this code in a TextLabel
local textLabel = script.Parent
-- Some colors we'll use with TextColor3
local colorNormal = Color3.new(0, 0, 0) -- black
local colorCountdown = Color3.new(1, 0.5, 0) -- orange
local colorRound = Color3.new(0.25, 0.25, 1) -- blue
-- We'll run this function to update the TextLabel as the state of the
-- game changes.
local function update()
-- Update the text
textLabel.Text = "State: " .. vGameState.Value
-- Set the color of the text based on the current game state
if vGameState.Value == "Countdown" then
textLabel.TextColor3 = colorCountdown
elseif vGameState.Value == "Round" then
textLabel.TextColor3 = colorRound
else
textLabel.TextColor3 = colorNormal
end
end
-- Pattern: update once when we start and also when vGameState changes
-- We should always see the most updated GameState.
update()
vGameState.Changed:Connect(update)
TextDirection
TextScaled
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 Platzdes UI-Elements füllt. Wenn dies aktiviert ist, wird TextButton.TextSize ignoriert und TextButton.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
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
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
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
Die TextStrokeColor3-Eigenschaft setzt die Farbe des Stocks oder der Umriss, die in der rend染text. Dieser Eigenschaft und TextButton.TextStrokeTransparency 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ängig und identisch zu TextButton.TextColor3 und TextButton.TextTransparency.
Code-Beispiele
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
Die TextStrokeTransparency-Eigenschaft setzt die Transparenz des Stocks, oder der Umriss, des gerenderten Textes. Diese Eigenschaft und TextButton.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 unab
Code-Beispiele
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
Die TextColor3-Eigenschaft bestimmt die Transparenz des gesamten Textes, der von einem UI-Element gerendert wird. Diese Eigenschaft zusammen mit TextButton.Font , TextButton.TextSize und TextButton.TextColor3 wird die visuellen Eigenschaften des Texts bestimmen. Der Text wird nach dem Textstift ( 1> Class.TextButton
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.1for i = 1, 0, -0.1 dotextLabel.TextTransparency = itask.wait(0.1)end
Code-Beispiele
local TweenService = game:GetService("TweenService")
local textLabel = script.Parent
local content = {
"Welcome to my game!",
"Be sure to have fun!",
"Please give suggestions!",
"Be nice to other players!",
"Don't grief other players!",
"Check out the shop!",
"Tip: Don't die!",
}
local tweenInfo = TweenInfo.new(1, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut)
local RNG = Random.new()
local fadeIn = TweenService:Create(textLabel, tweenInfo, {
TextTransparency = 0,
})
local fadeOut = TweenService:Create(textLabel, tweenInfo, {
TextTransparency = 1,
})
local lastIndex
while true do
-- Step 0: Fade out before doing anything
fadeOut:Play()
task.wait(tweenInfo.Time)
-- Step 1: pick content that wasn't the last displayed
local index
repeat
index = RNG:NextInteger(1, #content)
until lastIndex ~= index
-- Make sure we don't show the same thing next time
lastIndex = index
-- Step 2: show the content
textLabel.Text = content[index]
fadeIn:Play()
task.wait(tweenInfo.Time + 1)
end
local textLabel = script.Parent
textLabel.Text = "Kaboom!"
while true do
for size = 5, 100, 5 do
textLabel.TextSize = size
textLabel.TextTransparency = size / 100
task.wait()
end
task.wait(1)
end
TextTruncate
Steuert die Kürzung des Textes, die in diesem TextButton angezeigt wird.
TextWrapped
Wenn aktiviert, wird der Text auf mehreren Zeilen innerhalb eines GUI Elements so dargestellt, dass TextButton.TextBounds niemals die GuiBase2d.AbsoluteSize des UI-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 TextButton.TextBounds ) überschreitet, wird diese Zeile nicht gerendert.
Code-Beispiele
local textLabel = script.Parent
-- This text wrapping demo is best shown on a 200x50 px rectangle
textLabel.Size = UDim2.new(0, 200, 0, 50)
-- Some content to spell out
local content = "Here's a long string of words that will "
.. "eventually exceed the UI element's width "
.. "and form line breaks. Useful for paragraphs "
.. "that are really long."
-- A function that will spell text out two characters at a time
local function spellTheText()
-- Iterate from 1 to the length of our content
for i = 1, content:len() do
-- Get a substring of our content: 1 to i
textLabel.Text = content:sub(1, i)
-- Color the text if it doesn't fit in our box
if textLabel.TextFits then
textLabel.TextColor3 = Color3.new(0, 0, 0) -- Black
else
textLabel.TextColor3 = Color3.new(1, 0, 0) -- Red
end
-- Wait a brief moment on even lengths
if i % 2 == 0 then
task.wait()
end
end
end
while true do
-- Spell the text with scale/wrap off
textLabel.TextWrapped = false
textLabel.TextScaled = false
spellTheText()
task.wait(1)
-- Spell the text with wrap on
textLabel.TextWrapped = true
textLabel.TextScaled = false
spellTheText()
task.wait(1)
-- Spell the text with text scaling on
-- Note: Text turns red (TextFits = false) once text has to be
-- scaled down in order to fit within the UI element.
textLabel.TextScaled = true
-- Note: TextWrapped is enabled implicitly when TextScaled = true
--textLabel.TextWrapped = true
spellTheText()
task.wait(1)
end
TextXAlignment
TextXAlignment 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 TextButton.TextYAlignment verwendet, um das Textausrichtung auf beiden Achsen vollständig zu bestimmen. Dieses Eigenschaft wird die Lesbarkeits-Eigenschaften TextButton.TextBounds und TextButton.TextFits nicht beeinflussen.
Code-Beispiele
-- Paste this in a LocalScript within a TextLabel/TextButton/TextBox
local textLabel = script.Parent
local function setAlignment(xAlign, yAlign)
textLabel.TextXAlignment = xAlign
textLabel.TextYAlignment = yAlign
textLabel.Text = xAlign.Name .. " + " .. yAlign.Name
end
while true do
-- Iterate over both TextXAlignment and TextYAlignment enum items
for _, yAlign in pairs(Enum.TextYAlignment:GetEnumItems()) do
for _, xAlign in pairs(Enum.TextXAlignment:GetEnumItems()) do
setAlignment(xAlign, yAlign)
task.wait(1)
end
end
end
TextYAlignment
TextYAlignment 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 TextButton.TextXAlignment verwendet, um das Textausrichtung auf beiden Achsen vollständig zu bestimmen. Dieses Eigenschaft wird die read-only-Eigenschaften TextButton.TextBounds und TextButton.TextFits nicht beeinflussen.
Code-Beispiele
-- 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