TextBox

Pokaż przestarzałe

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

A TextBox umożliwia graczowi dostarczanie tekstu do wpisu. Zachowuje się podobnie do TextButton, z wyjątkiem tego, że pojedynczy tekst można umieścić w focusie poprzez kliknięcie, dotknięcie lub wybór gry. W trybie focusu gracz może używać klawiatury, aby zmienić właściwość Text

  • Jeśli nie ma tekstu, PlaceholderText będzie widoczny. To jest użyteczne wskazywanie graczom rodzaju lub formatu danych, które powinni wprowadzić.
  • Domyślnie właściwość ClearTextOnFocus jest włączona i zapewnia, że nie ma istniejącego tekstu, gdy pole tekstowe jest skupione. To może nie być pożądane dla tekstu, który powinien być edytowany przez gracza.
  • Właściwość MultiLine pozwala graczom na wpisanie wielu linii tekstu z nowymi znakami końca linii ( \n ).

Class.ContextActionService uhonoruje klawiatury tekstowe i automatycznie zapobiegnie wydarzeniom kluczowym, aby były przekazywane do akcji powiązanych z ContextActionService:BindAction() . UserInputService.InputBegan i powiązanych wydarzeń będą nadal się włączać, gdy tekstowa jest w centrum uwagi.

Stan koncentracji

Możliwe jest wykrycie i zmiana stanu skupienia TextBox:

  • Możesz użyć CaptureFocus , gdy pojawi się dialog, aby gracz nie musiał klikać na TextBox, gdy stał się dostępny; możesz użyć ContextActionService:BindAction() , aby związać pewien klucz, aby skupić TextBox, używając tej funkcji. Gdy TextBox stanie się
  • Możesz wykryć, czy pewna TextBox jest w focus za pomocą IsFocused. Alternatywnie, UserInputService:GetFocusedTextBox() można użyć do sprawdzenia, czy każda TextBox jest w focus.
  • Gdy gracz zakończy wpisywanie tekstu, wydarzenie FocusLost wyzwane, aby określić, czy użytkownik nacisnął Enter, aby wysłać tekst wraz z InputObject, który powoduje utratę skupienia. Gdy używany na klaw
  • Jeśli pojawi się jeszcze ważniejszy temat podczas rozgrywka, możesz ReleaseFocus TextBox, aby klawiatura gracza zwróciła się do Twojego gry.

Edytowanie tekstu

A TextBox wspiera wybór tekstu poprzez swoje CursorPosition i SelectionStart właściwości. Używając GetPropertyChangedSignal, możesz wykryć, gdy zmienia się wybór. Dodatkowo możliwe jest dla graczy skopiowanie i wklejenie tekst

Uwaga na filtrowanie tekstu Gry, które ułatwiają komunikację gracza do gracza za pomocą tekstu, takie jak dostosowany czat lub imię, muszą prawidłowo filtrować takie teksty używając TextService:FilterStringAsync() lub Chat:FilterStringAsync(). Jeśli to nie zostanie prawidłowo zrobione, może to powodować działanie akcji moder

Przykłady kodu

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)

Podsumowanie

Właściwości

Właściwości odziedziczeni z: GuiObjectWłaściwości odziedziczeni z: GuiBase2d

Metody

  • Zmusza klienta do skupienia się na TextBox.

  • Wróci prawdziwy, jeśli tekst będzie skupiony, lub fałszywy, jeśli nie będzie.

  • ReleaseFocus(submitted : bool):void

    Zmusza klienta do odblokowania pola tekstowego.

Metody odziedziczeni z: GuiObject

Zdarzenia

Zdarzenia odziedziczeni z: GuiObjectZdarzenia odziedziczeni z: GuiBase2d

Właściwości

ClearTextOnFocus

Odczyt równoległy

Określa, czy kliknięcie na TextBox usunie jego właściwość TextBox.Text

ContentText

Tylko do odczytu
Bez replikacji
Odczyt równoległy

CursorPosition

Odczyt równoległy

Pozycja kursora określa przesunięcie kursora tekstowego w bajtach lub -1, jeśli TextBox nie jest obecnie edytowany. Wartość 1 reprezentuje początek, pozycję przed pierwszym bajtem w właściwości Text. Gdy używana jest w połączeniu z właściwością Class

Należy zauważyć, że jednostkami tego właściwości są bajty i że wiele znaków nieocyfrowych, takich jak emoji, są dłuższe niż 1 bajt. Na instancja, jeśli gracz wpisze do TextBox "Hello👋" – "Hello" natychmiastnie połączone z znakiem ręki – pozycja kursera będzie 10, nie 7, poniewa

Przykłady kodu

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)
Ukryte
Bez replikacji
Odczyt równoległy

Właściwość czcionki wybiera jedną z kilku zapisów fonts z których element UI renderuje jego tekst. Niektóre czcionki mają gładkie, włoski i/lub ciemne warianty (ponieważ nie ma właściwości wagi czcionki lub stylu czcionki).

Poza fontem "Dziedzictwo" każdy font będzie renderować tekst z wysokością linii równej z właściwością TextBox.TextSize.Font "Kodeks" jest jedynym monospace'em. Ma unikalną właściwość, że każdy znak ma dokładnie tę samą szerokość i wysokość proporcjonalną 1:2. Szerokość każdego znaku wynosi

Ta właściwość jest zsynchronizowana z właściwością TextBox.FontFace. Gdy ustawiasz czcionkę, czcionka zostanie ustawiona na Font.fromEnum(value).

Przykłady kodu

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

Odczyt równoległy

Właściwość FontFace jest podobna do właściwościFont, ale umożliwia ustawienie czcionek, które nie istnieją w Font枚.

Ta właściwość jest zsynchronizowana z właściwością TextBox.Font. Gdy ustawiaszFontFace,Font jest ustawiony na odpowiednią wartość enum lub Enum.Font.Unknown jeśli nie ma żadnych dopasów.

LineHeight

Odczyt równoległy

Kontroluje wysokość linii, jako liczbę rozmiaru czcionki, poprzez skalowanie przestrzeni między liniami tekstu w TextBox. Wartości poprzez domyślną wartość 1.0 do 3.0, domyślnie 1.0.

MaxVisibleGraphemes

Odczyt równoległy

Ta właściwość kontroluje maksymalną liczbę grafem (lub jednostek tekstu), które są pokazane na TextBox, niezależnie czy pokazują TextBox.PlaceholderText lub TextBox.Text.

Zmienianie właściwości nie zmienia pozycji lub rozmiaru widocznych grafem - układ zostanie obliczony, jakby wszystkie grafemy były widoczne.

Ustawienie właściwości na -1 wyłącza ograniczenie i pokazuje całkowitość TextBox.Text .

MultiLine

Odczyt równoległy

Gdy ustawiony na prawdę, tekst w TextBox może być przenoszony na wiele linii. Umożliwia to również graczom używanie klawiszu enter, aby przenieść się na nową linię.

OpenTypeFeatures

Odczyt równoległy

OpenTypeFeaturesError

Tylko do odczytu
Bez replikacji
Odczyt równoległy

PlaceholderColor3

Odczyt równoległy

Ustawia kolor tekstu, który zostanie użyty, gdy jeszcze tekst nie zostanie wpisany do TextBox.

PlaceholderText

Odczyt równoległy

Ustawia tekst, który zostanie wyświetlony, gdy jeszcze tekst nie został wpisany do TextBox.

RichText

Odczyt równoległy

Ten właściwość określa, czy TextBox renderuje TextBox.Text strungę używającą bogatej formy tekstu. Bogate tekstu używa proste tagi znaczników, aby stylować sekcje strungi w odważnych, podkreślonych, kolorach itp.

Aby użyć bogatego tekstu, po prostu włącz tagi formatowania w TextBox.Text ciąg.

Uwaga, że gdy TextBox ma włączoną tę właściwość, a polowanie zyska fokus, użytkownik będzie w stanie edytować i interagować z kompletem ciągXML, w tym wszystkie tagi formułowania. Gdy fokus zostanie utracony, tekst będzie automatycznie przetwarzał i renderował tagi jako bogate teksty.

SelectionStart

Odczyt równoległy

Określa pozycję wyjścia tekstu lub -1, jeśli TextBox nie ma zasięgu wybranego tekstu. Jeśli wartość jest -1 lub równa CursorPosition, nie ma wybranego tekstu. Ta właściwość używa tej samej logiki pozycjonowania co CursorPosition. SelectionStart będzie większa niż CursorPosition, jeśli kur

Przykłady kodu

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

Odczyt równoległy

Jeśli ustawiony na prawdę, wpisywanie klawiatury natywnej na platformie jest zamiast tego używane klawiatury wbudowanej Roblox.

Text

Odczyt równoległy

Właściwość tekstu określa treść renderowaną przez element UI. Właściwości wizualne linii renderowanej na ekranie są określane przez TextBox.TextColor3, <

Możliwe jest renderowanie emoji (na przykład, 😃) i innych symboli. Te specjalne symbole nie są objęte właściwością TextBox.TextColor3. Można je wkleić do Script i LocalScript obiektów, a także do pola w oknie Właściwości.

Właściwość może zawierać nowe znaki nowej linii, ale nie jest możliwe wpisywanie nowych znaków nowej linii w oknie Właściwości. Podobnie, właściwość może zawierać znak tablicy, ale będzie renderowana jako przestrzeń zamiast tego.

Przykłady kodu

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

Tylko do odczytu
Bez replikacji
Odczyt równoległy

Właściwość TextBounds odczytywana odzwierciedla rozmiar tekstu renderowanego w odległych od siebie kątach. Innymi słowy, jeśli próbowałbyś dostosować tekst do kształtu prostokąta, ta właściwość odzwierciedlałaby minimum wymiarów prostokąta, które są niezbędne do dostosowania tekstu.

Używając TextService:GetTextSize() , możesz przewidzieć, jakie będą TextBounds na tekstze podanym przez strungę, TextBox.Font , TextBox.TextSize i rozmiar ramy.

Przykłady kodu

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

Odczyt równoległy

Ten właściwość określa kolor całego tekstu renderowanego przez element GUI . Ta właściwość wraz z TextBox.Font , TextBox.TextSize i 2>Class.Toolbar.TextTransparency2> będzie określać właściwości wizualne tekstu. tekst jest

Ważne jest, aby tekst był łatwo czytany przez graczy! Upewnij się, że wybrałeś kolory z niską nasyceniem, takie jak biały, szary lub czarny. Upewnij się, że kolor tekstu jest kontrastowany przez TextBox.BackgroundColor3 elementu UI. Jeśli element ma białą podstawę, spróbuj zastosować

Przykłady kodu

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

Odczyt równoległy

TextEditable

Odczyt równoległy

TextEditable określa, czy użytkownik może zmienić Text poprzez wpis. Rekomendujemy wyłączyć ClearTextOnFocus, gdy ta właściwość jest wyłączona, aby uniknąć usuwania tekstu podczas wpisu. Ta właściwość jest przydatna do tworzenia czy

TextFits

Tylko do odczytu
Bez replikacji
Odczyt równoległy

Czy tekst pasuje w ramach ograniczeń TextBox.

TextScaled

Odczyt równoległy

Zamiast używać TextScaled, zalecamy użyć AutomaticSize, nowej metody do dynamicznego rozmiarowania interfejsu użytkownika, która zapewni Ci najlepszy wynik wizualny.

Właściwość TextScaled określa, czy tekst jest skalowany, aby wypełnić całą przestrzeń UI. Gdy to jest włączone, TextBox.TextSize jest ignorowany i TextBox.TextWrapped jest automatycznie włączony. Ta właściwość jest przydatna do renderowania elementów tekstu w ramach BillboardGuis .

Gdy ta właściwość jest używana dla interfejsu użytkownika przestrzeni ekranu, może być pożądane użycie UITextSizeConstraint, aby ograniczyć zakres możliwych rozmiarów tekstu.

TextScaled i AutomaticSize

Rekomendujemy, aby rozwijać unikanie użycia TextScaled i dostosować UI, aby wykorzystać automatyczny rozmiar właściwości zamiast tego. Oto główne różnice między dwoma właściwościami:

  • TextScaled skala treść (tekst), aby dostosować UI. Bez uważnego rozważenia niektóre teksty mogą stać się nieczytelne, jeśli skalowano je zbyt małym.
  • AutomaticSize rozmiaruje UI, aby pomieścić treść.

Z AutomaticSize możesz dostosować swoją interfejs użytkownika, aby pomieścił się na treść (tekst), jednocześnie utrzymując konsekwentny rozmiar czcionki. Więcej informacji na temat użycia automatycznego rozmiarowania znajdziesz w artykule UI Automatic Size.

Zalecamy, abyś nie stosował obu właściwości TextScaled i AutomaticSize na tym samym obiekcie użytkownika. Jeśli stosujesz obie właściwości:

  • AutomaticSize określa maksymalną ilość dostępnej przestrzeni, którą może użyć GuiObject (w tym przypadku tekst)
  • TextScaled używa dostępnej ilości miejsca określonego przez AutomaticSize, aby skalować rozmiar czcionki do dostępnej ilości miejsca, która się rozwinie do maksymalnego rozmiaru czcionki (100), jeśli nie ma ograniczeń wielkości
  • Rezultatem końcowym będzie: tekst ma rozmiar 100 pikseli, a obiekt UI rozszerzy się, aby pomieścił się w ten tekst

Używanie obu AutomaticSize i TextScaled jednocześnie może powodować znaczne różnice skalowania niż gdy AutomaticSize jest wyłączone.

Przykłady kodu

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

Odczyt równoległy

Właściwość TextSize określa wysokość w odległości jednej linii tekstu renderowanego. Jest to odległość w liczbie całych, nie kropki (które są używane w większości programów do edytowania dokumentów). Czcionka "Dziedzictwo" nie ma tej właściwości.

Przykłady kodu

"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

Odczyt równoległy

Właściwość TextStrokeColor3 ustawia kolor kształtujący się tekstu lub konturu. Ta właściwość i TextBox.TextStrokeTransparency określa właściwości wizualne tekstu kształtującego.

Text stroke jest renderowany przed normalnym tekstem i jest po prostu 4 renderings tego samego tekstu w +/- 1 pixelach odległości w każdym kierunku. Wykonanie tekstu stroke działa niezależnie i identycznie do TextBox.TextColor3 i TextBox.TextTransparency .

Przykłady kodu

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

Odczyt równoległy

Właściwość TextStrokeTransparency ustawia przejrzystość lub kontur renderowanego tekstu. Ta właściwość i TextBox.TextStrokeColor3 określa właściwości wizualne tekstu Renderowanego.

Text stroke jest renderowany przed normalnym tekstem i jest po prostu czterokrotnym renderowaniem tego samego tekstu w +/- 1 pixel offsets w każdym kierunku. Text stroke render

Przykłady kodu

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

Odczyt równoległy

Właściwość TextColor3 określa przejrzystość wszystkiego, co jest renderowane przez element UI. Ta właściwość wraz z TextBox.Font, TextBox.TextSize i TextBox.TextColor3 zdeterminuje właściwości wizualne tekstu. tekst jest renderowany po rysunku tekstu ( 2>Class.Toolbar.TextStrokeTrans

Znikający tekst w użyciu liczby for-loop jest fantastycznym sposobem na przyciągnięcie uwagi gracza na tekst pojawiający się na ekranie.


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

Przykłady kodu

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

Odczyt równoległy

Kontroluje skrócenie tekstu wyświetlanego w tym TextBox.

TextWrapped

Odczyt równoległy

Gdy włączone, właściwość ta będzie renderować tekst na wielu linijkach w przestrzeni GUI tak, aby TextBox.TextBounds nie przekroczyły nigdy GuiBase2d.AbsoluteSize elementu GUI.

Osiągnięto to poprzez rozbicie długich linii tekstu na wiele linii. Linie rozdzielne będą preferować białą przestrzeń; jeśli długi niezakończony słowo przekroczy szerokość elementu, ten słownik zostanie rozdzielony na wiele linii.

Jeśli dalsze przerwy linii spowodują, że poziomy wysokości tekstu (komponent Y z TextBox.TextBounds ) przekroczą poziomy wysokości elementu (komponent Y z GuiBase2d.AbsoluteSize ) to linia ta nie zostanie w wszystkorenderowana.

Przykłady kodu

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

Odczyt równoległy

TextXAlignment określa poziom poziomego alineowania tekstu w przestrzeni elementu UI. Funkcjonuje podobnie do właściwości tekstu alineowania lewego, prawego i środkowego (nie ma opcji uzasadnienia). Dla lewego i prawego tekstu tekst jest renderowany tak, aby lewe/prawne granice tekstu po prostu dotykały krawędzi UI elementu. Dla Centrum każda linia tekstu jest pośrod

Ten właściwość jest używany wraz z TextBox.TextYAlignment, aby w pełni określić ustawienie tekstu na obu osiach. Ta właściwość nie będzie wpływać na właściwości czytelne TextBox.TextBounds i TextBox.TextFits.

Przykłady kodu

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

Odczyt równoległy

TextYAlignment określa poziomowy rozstaw tekstu (Y-axis) tekstu renderowany w przestrzeni elementu UI. Dla góry i dołu tekst jest renderowany tak, aby górne/dolne granice tekstu dotykały krawędzi UI elementu. Dla Centrum tekst jest renderowany tak, aby istniał równy przestrzeń od górnych granic tekstu do góry elementu i dolnych granic tekstu do dołu elementu.

Ten parametr jest używany wraz z TextBox.TextXAlignment , aby w pełni określić ustawienie tekstu na obu osiach. Ten parametr nie będzie wpływać na czytelne właściwości TextBox.TextBounds i TextBox.TextFits.

Przykłady kodu

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

Metody

CaptureFocus

void

Zmusza klienta do skupienia się na TextBox.


Zwroty

void

Przykłady kodu

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

Wróci prawdziwy, jeśli tekst będzie skupiony, lub fałszywy, jeśli nie będzie.


Zwroty

ReleaseFocus

void

Zmusza klienta do odblokowania TextBox. Parametr submitted pozwala na przeciągnięcie parametru enterPressed w wydarzeniu TextBox.FocusLost.

Ten przedmiot powinien być używany z LocalScript , aby działał tak, jak powinien w trybie online.

Poniżej pokazano kod, który zmusi klienta do odblokowania 'Texture' 5 sekund po wybraniu go:


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

Proszę zdać sobie sprawę, że powyższy przykład zakłada, że jest to w lokalnym skrypcie, jako dziecko TextBox.

Parametry

submitted: bool
Wartość domyślna: false

Zwroty

void

Przykłady kodu

TextBox:ReleaseFocus

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

Zdarzenia

FocusLost

Wystąpi, gdy klient pozwoli, aby jego skupienie opuściło TextBox - zwykle, gdy klient klika / dotyka poza TextBox. To również wystąpi, jeśli TextBox wymaga skupienia na użytkowniku.

Można go używać obok TextBox.Focused , aby śledzić, kiedy TextBox zyskuje i traci skupienie.

Zobacz również UserInputService.TextBoxFocused i UserInputService.TextBoxFocusReleased dla podobnych funkcji, które zależą od usługi Class.UserInputService.

Ten wątek zostanie wywołany tylko, gdy zostanie użyty w LocalScript .

Parametry

enterPressed: bool

Boolean określający, czy klient nacisnął Enter, aby stracić skupienie ( prawdziwy ) lub nie ( fałszywy ).

inputThatCausedFocusLoss: InputObject

Przykład InputObject wskazujący na typ wejścia powodującego utratę skupienia TextBox.


Przykłady kodu

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

Występuje, gdy TextBox zyska fokus - zwykle, gdy klienci klikają / dotykają TextBox, aby rozpocząć wpis tekstowy. To również uruchamia, jeśli TextBox skupia się na użytkowniku.

Można go używać obok TextBox.FocusLost , aby śledzić, kiedy TextBox zyskuje i traci skupienie.

Zobacz również UserInputService.TextBoxFocused i UserInputService.TextBoxFocusReleased dla podobnych funkcji, które zależą od usługi Class.UserInputService.

Ten wątek zostanie wywołany tylko, gdy zostanie użyty w LocalScript .


Przykłady kodu

Focus

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

ReturnPressedFromOnScreenKeyboard