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 Pudełko tekstowe pozwala graczowi na podanie tekstu wejściowego.Zachowuje się podobnie do TextButton, z wyjątkiem, że pojedyncze TextBox można wysunąć w focus za pomocą kliknięcia, dotknięcia lub wyboru gamepada.Gdy jest w fokusie, gracz może używać klawiatury, aby zmienić właściwość Text.

  • Jeśli nie ma tekstu, PlaceholderText będzie widoczny. To jest przydatne, ponieważ wskazuje graczom rodzaj lub format danych, które powinni wprowadzić.
  • Domyślnie właściwość ClearTextOnFocus jest włączona i zapewnia, że nie ma istniejącego tekstu, gdy TextBox jest skupiony.Może to 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 znakami nowego akapitu ( \n ).

The ContextActionService honoruje klawiszowe skróty klawiszowe TextBox i automatycznie zapobiegnie przekazywaniu wydarzeń naciśnięcia klawisza do działań powiązanych z ContextActionService:BindAction().UserInputService.InputBegan i powiązane wydarzenia nadal będą wystrzeliwane, gdy TextBox jest w fokusie.

Stan skupienia

Można wykryć i zmienić stan skupienia TextBox:

  • Możesz użyć CaptureFocus, gdy pojawi się dialog, aby gracz nie musiał klikać na TextBox, gdy stanie się dostępny; możesz użyć ContextActionService:BindAction(), aby przypiąć określoną klawisz do skupienia TextBox za pomocą tej funkcji.Kiedy TextBox wchodzi w fazę skupienia, uruchamia się wydarzenie Focused.
  • Możesz wykryć, czy pewien TextBox jest w focusie, używając IsFocused . Alternatywnie UserInputService:GetFocusedTextBox() można użyć do sprawdzenia, czy którykolwiek TextBox jest w focusie.
  • Gdy gracz zakończy wpisywanie tekstu, uruchamia się wydarzenie FocusLost, wskazujące, czy użytkownik naciśnie Enter, aby przesłać tekst wraz z InputObject, który spowodował utratę skupienia.Podczas używania klawiatur na ekranie na urządzeniach mobilnych i konsolach może również wystrzelić ReturnPressedFromOnScreenKeyboard.
  • Jeśli pojawi się jakaś ważniejsza sprawa podczas grania, możesz ReleaseFocus edytować TextBox, aby powróciła do rozgrywkawpis klawiatury gracza.

Edycja tekstu

Pudełko tekstowe wspiera wybór tekstu za pomocą jego właściwości CursorPosition i SelectionStart.Używając GetPropertyChangedSignal, możesz wykryć, kiedy zmienia się wybór.Ponadto możliwe jest kopiowanie i wklejanie tekstu w TextBox, umożliwiając podstawowe wsparcie dla schowka.

Powiadomienie o filtrowaniu tekstu Gry, które ułatwiają komunikację gracza z graczem za pomocą tekstu, takie jak niestandardowy czat lub etykiety nazw, muszą właściwie filtrować taki tekst za pomocą TextService:FilterStringAsync() lub Chat:FilterStringAsync() .Jeśli nie zostanie to prawidłowo wykonane, twoja gra może otrzymać akcjimoderacji.

Przykłady kodu

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

TextBox Secret Word

-- Place this code in a LocalScript inside a TextBox
local textBox = script.Parent
local secretWord = "roblox"
local colorNormal = Color3.new(1, 1, 1) -- white
local colorWrong = Color3.new(1, 0, 0) -- red
local colorCorrect = Color3.new(0, 1, 0) -- green
-- Initialize the state of the textBox
textBox.ClearTextOnFocus = true
textBox.Text = ""
textBox.Font = Enum.Font.Code
textBox.PlaceholderText = "What is the secret word?"
textBox.BackgroundColor3 = colorNormal
local function onFocused()
textBox.BackgroundColor3 = colorNormal
end
local function onFocusLost(enterPressed, _inputObject)
if enterPressed then
local guess = textBox.Text
if guess == secretWord then
textBox.Text = "ACCESS GRANTED"
textBox.BackgroundColor3 = colorCorrect
else
textBox.Text = "ACCESS DENIED"
textBox.BackgroundColor3 = colorWrong
end
else
-- The player stopped editing without pressing Enter
textBox.Text = ""
textBox.BackgroundColor3 = colorNormal
end
end
textBox.FocusLost:Connect(onFocusLost)
textBox.Focused:Connect(onFocused)

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.

  • Zwraca prawdę, jeśli pole tekstowe jest skupione, lub fałsz, jeśli nie jest.

  • ReleaseFocus(submitted : boolean):()

    Wymusza, aby klient odblokował TextBox.

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 wyczyści jego właściwość TextBox.Text

ContentText

Tylko do odczytu
Bez replikacji
Odczyt równoległy

CursorPosition

Odczyt równoległy

Właściwość ta określa przesunięcie kurora tekstu w bajtach lub -1 jeśli TextBox nie jest obecnie edytowane.Wartość 1 reprezentuje pozycję przed pierwszym bajtem w właściwości Text.Gdy jest używany w połączeniu z właściwością SelectionStart, możliwe jest jednoczesne uzyskanie i ustawienie wybranego tekstu w TextBox.

Zauważ, że jednostki tej właściwości są bajtami i że wiele znaków unicode, takich jak emoji, są dłuższe niż 1 bajt.Na instancja, jeśli gracz wpisze "Hello👋" ("Hello" natychmiast po nim znak ręki falującej), pozycja kurora wyniesie 10, a nie 7, ponieważ emoji używa 4 bajtów.

Przykłady kodu

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

TextBox Selections

local textBox = script.Parent
local function showSelection()
if textBox.CursorPosition == -1 or textBox.SelectionStart == -1 then
print("No selection")
else
local selectedText = string.sub(
textBox.Text,
math.min(textBox.CursorPosition, textBox.SelectionStart),
math.max(textBox.CursorPosition, textBox.SelectionStart)
)
print('The selection is:"', selectedText, '"')
end
end
textBox:GetPropertyChangedSignal("CursorPosition"):Connect(showSelection)
textBox:GetPropertyChangedSignal("SelectionStart"):Connect(showSelection)
Ukryte
Bez replikacji
Odczyt równoległy

Właściwość Czcionka wybiera jedną z kilku wstępnie zdefiniowanych fonts, z którymi element UI renderuje swój tekst.Niektóre czcionki mają odważne, pogrubione i/lub lekkie odmiany (ponieważ nie ma właściwości wagi czcionki ani stylu czcionki).

Z wyjątkiem czcionki „Legacy” każda czcionka wyrenderuje tekst z wysokością linii równą właściwości TextBox.TextSize.Czcionka "Kod" jest jedyną czcionką monospacji.Posiada unikalną właściwość, że każda postać ma dokładnie taką samą relację szerokości i wysokości 1:2.Szerokość każdej postaci jest przybliżona do połowy właściwości TextBox.TextSize.

Właściwość ta jest zsynchronizowana z właściwością TextBox.FontFace. Podczas ustawiania czcionki czcionka Font zostanie ustawiona na Font.fromEnum(value).

Przykłady kodu

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

Cycle Font

local textLabel = script.Parent
while true do
-- Iterate over all the different fonts
for _, font in pairs(Enum.Font:GetEnumItems()) do
textLabel.Font = font
textLabel.Text = font.Name
task.wait(1)
end
end

This code sample renders a list of all the available fonts.

Show All Fonts

local frame = script.Parent
-- Create a TextLabel displaying each font
for _, font in pairs(Enum.Font:GetEnumItems()) do
local textLabel = Instance.new("TextLabel")
textLabel.Name = font.Name
-- Set the text properties
textLabel.Text = font.Name
textLabel.Font = font
-- Some rendering properties
textLabel.TextSize = 24
textLabel.TextXAlignment = Enum.TextXAlignment.Left
-- Size the frame equal to the height of the text
textLabel.Size = UDim2.new(1, 0, 0, textLabel.TextSize)
-- Add to the parent frame
textLabel.Parent = frame
end
-- Layout the frames in a list (if they aren't already)
if not frame:FindFirstChildOfClass("UIListLayout") then
local uiListLayout = Instance.new("UIListLayout")
uiListLayout.Parent = frame
end

FontFace

Odczyt równoległy

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

Właściwość ta jest zsynchronizowana z właściwością TextBox.Font.Podczas ustawiania FontFace, czcionka jest ustawiona na odpowiadającą wartość enum lub na Enum.Font.Unknown, jeśli nie ma żadnych dopasowań.

LineHeight

Odczyt równoległy

Kontroluje wysokość linii, jako mnożnik rozmiaru em pólki tekstu w TextBox, poprzez skalowanie odległości między liniami tekstu w .Ważne wartości wynoszą od 1.0 do 3.0, domyślnie 1.0.

MaxVisibleGraphemes

Odczyt równoległy

Właściwość ta kontroluje maksymalną liczbę grafem (lub jednostek tekstu), które są wyświetlane na TextBox, niezależnie od tego, czy wyświetla TextBox.PlaceholderText lub TextBox.Text.

Zmiana właściwości nie zmienia pozycji lub rozmiaru widocznych grafemów - układ zostanie obliczony tak, jak gdyby wszystkie grafemy były widoczne.

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

MultiLine

Odczyt równoległy

Gdy ustawiono na prawdę, tekst w TextBox może przejść na wiele linii. Umożliwia to również graczom używanie klawisza Enter, aby przejść 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 jest używany, gdy jeszcze nie został wprowadzony tekst do TextBox.

PlaceholderText

Odczyt równoległy

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

RichText

Odczyt równoległy

Właściwość ta określa, czy TextBox renderuje TextBox.Text ciąg za pomocą bogatej formatyzacji tekstu.Bogaty tekst używa prostych znaczników znaczników, aby stylizować sekcje ciągu w pogrubieniu, pogrubieniu, konkretnych kolorach i więcej.

Aby używać bogatego tekstu, po prostu dodaj tagi formatowania do TextBox.Text ciągu.

Zauważ, że gdy właściwość TextBox jest włączona, a pudełko zyskuje focus, użytkownik będzie mógł edytować i wchodzić w interakcję z kompletną ciągXML, w tym ze wszystkimi tagami formatowania.Gdy utracona zostanie koncentracja, tekst automatycznie przetworzy i wyrenderuje tagi jako bogaty tekst.

SelectionStart

Odczyt równoległy

Określa początkową pozycję wyboru tekstu lub -1, jeśli TextBox nie ma zakresu wybranego tekstu.Jeśli wartość wynosi -1 lub równa się CursorPosition, nie ma zakresu tekstu wybranego.Właściwość ta używa tej samej logiki pozycjonowania, co CursorPosition.Wybór rozpocznie się większy niż pozycja kurora, jeśli kuror znajduje się na początku wyboru, a mniejszy niż pozycja kurora, jeśli kuror znajduje się na kończyć.

Przykłady kodu

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

TextBox Selections

local textBox = script.Parent
local function showSelection()
if textBox.CursorPosition == -1 or textBox.SelectionStart == -1 then
print("No selection")
else
local selectedText = string.sub(
textBox.Text,
math.min(textBox.CursorPosition, textBox.SelectionStart),
math.max(textBox.CursorPosition, textBox.SelectionStart)
)
print('The selection is:"', selectedText, '"')
end
end
textBox:GetPropertyChangedSignal("CursorPosition"):Connect(showSelection)
textBox:GetPropertyChangedSignal("SelectionStart"):Connect(showSelection)

ShowNativeInput

Odczyt równoległy

Jeśli ustawiono na prawdę, wejście natywne na platformę jest używane zamiast klawiatury wbudowanej w Roblox.

Text

Odczyt równoległy

Właściwość Tekst określa zawartość wyrenderowaną przez element UI.Wizualne właściwości ciągu renderowanego na ekranie są określone przez TextBox.TextColor3 , TextBox.TextTransparency , TextBox.TextSize , TextBox.Font , TextBox.TextScaled , TextBox.TextWrapped , TextBox.TextXAlignment i TextBox.TextYAlignment.

Można wyrenderować emoji (na przykład, 😃) i inne symbole.Te specjalne symbole nie są dotknięte właściwością TextBox.TextColor3.Można je wkleić do obiektów Script i LocalScript oraz pola w oknie Właściwości.

Właściwość ta może zawierać znaki nowego wiersza, jednak nie można wpisać znaków nowego wiersza w oknie Właściwości.Podobnie ta właściwość może zawierać znak zakładki, ale zostanie wyrenderowana jako przestrzeń zamiast tego.

Przykłady kodu

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

Fading Banner

local TweenService = game:GetService("TweenService")
local textLabel = script.Parent
local content = {
"Welcome to my game!",
"Be sure to have fun!",
"Please give suggestions!",
"Be nice to other players!",
"Don't grief other players!",
"Check out the shop!",
"Tip: Don't die!",
}
local tweenInfo = TweenInfo.new(1, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut)
local RNG = Random.new()
local fadeIn = TweenService:Create(textLabel, tweenInfo, {
TextTransparency = 0,
})
local fadeOut = TweenService:Create(textLabel, tweenInfo, {
TextTransparency = 1,
})
local lastIndex
while true do
-- Step 0: Fade out before doing anything
fadeOut:Play()
task.wait(tweenInfo.Time)
-- Step 1: pick content that wasn't the last displayed
local index
repeat
index = RNG:NextInteger(1, #content)
until lastIndex ~= index
-- Make sure we don't show the same thing next time
lastIndex = index
-- Step 2: show the content
textLabel.Text = content[index]
fadeIn:Play()
task.wait(tweenInfo.Time + 1)
end

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

"Kaboom!" Text

local textLabel = script.Parent
textLabel.Text = "Kaboom!"
while true do
for size = 5, 100, 5 do
textLabel.TextSize = size
textLabel.TextTransparency = size / 100
task.wait()
end
task.wait(1)
end

This code sample renders a list of all the available fonts.

Show All Fonts

local frame = script.Parent
-- Create a TextLabel displaying each font
for _, font in pairs(Enum.Font:GetEnumItems()) do
local textLabel = Instance.new("TextLabel")
textLabel.Name = font.Name
-- Set the text properties
textLabel.Text = font.Name
textLabel.Font = font
-- Some rendering properties
textLabel.TextSize = 24
textLabel.TextXAlignment = Enum.TextXAlignment.Left
-- Size the frame equal to the height of the text
textLabel.Size = UDim2.new(1, 0, 0, textLabel.TextSize)
-- Add to the parent frame
textLabel.Parent = frame
end
-- Layout the frames in a list (if they aren't already)
if not frame:FindFirstChildOfClass("UIListLayout") then
local uiListLayout = Instance.new("UIListLayout")
uiListLayout.Parent = frame
end

This code sample demonstrates TextWrap by spelling out a long chunk of text progressively. If the text doesn't fit, it turns a different color.

Long Text Wrapping

local textLabel = script.Parent
-- This text wrapping demo is best shown on a 200x50 px rectangle
textLabel.Size = UDim2.new(0, 200, 0, 50)
-- Some content to spell out
local content = "Here's a long string of words that will "
.. "eventually exceed the UI element's width "
.. "and form line breaks. Useful for paragraphs "
.. "that are really long."
-- A function that will spell text out two characters at a time
local function spellTheText()
-- Iterate from 1 to the length of our content
for i = 1, content:len() do
-- Get a substring of our content: 1 to i
textLabel.Text = content:sub(1, i)
-- Color the text if it doesn't fit in our box
if textLabel.TextFits then
textLabel.TextColor3 = Color3.new(0, 0, 0) -- Black
else
textLabel.TextColor3 = Color3.new(1, 0, 0) -- Red
end
-- Wait a brief moment on even lengths
if i % 2 == 0 then
task.wait()
end
end
end
while true do
-- Spell the text with scale/wrap off
textLabel.TextWrapped = false
textLabel.TextScaled = false
spellTheText()
task.wait(1)
-- Spell the text with wrap on
textLabel.TextWrapped = true
textLabel.TextScaled = false
spellTheText()
task.wait(1)
-- Spell the text with text scaling on
-- Note: Text turns red (TextFits = false) once text has to be
-- scaled down in order to fit within the UI element.
textLabel.TextScaled = true
-- Note: TextWrapped is enabled implicitly when TextScaled = true
--textLabel.TextWrapped = true
spellTheText()
task.wait(1)
end

This code sample demonstrates emoji rendering using the Text property.

Emoji in Text

local textLabel = script.Parent
local moods = {
["happy"] = "😃",
["sad"] = "😢",
["neutral"] = "😐",
["tired"] = "😫",
}
while true do
for mood, face in pairs(moods) do
textLabel.Text = "I am feeling " .. mood .. "! " .. face
task.wait(1)
end
end

TextBounds

Tylko do odczytu
Bez replikacji
Odczyt równoległy

Właściwość read-only TextBounds odzwierciedla absolutny rozmiar tekstu renderowanego w offsetach.Innymi słowy, jeśli próbujesz włożyć tekst do prostokąta, ta właściwość odzwierciedlałaby minimalne wymiary prostokąta, których potrzebujesz, aby zmieścić tekst.

Używając TextService:GetTextSize() , możesz przewidzieć, jak będą wyglądały granice tekstu na etykiecie tekstowej, TextBox.Font , TextBox.TextSize i rozmiar ramy.

Przykłady kodu

This code sample dynamically resizes a TextLabel, TextButton or TextBox to match the size of its TextBounds. Try changing the minimum width/height and pasting into a LocalScript in a TextBox.

Dynamic TextBox Size

local textBox = script.Parent
-- The smallest the TextBox will go
local minWidth, minHeight = 10, 10
-- Set alignment so our text doesn't wobble a bit while we type
textBox.TextXAlignment = Enum.TextXAlignment.Left
textBox.TextYAlignment = Enum.TextYAlignment.Top
local function updateSize()
textBox.Size = UDim2.new(0, math.max(minWidth, textBox.TextBounds.X), 0, math.max(minHeight, textBox.TextBounds.Y))
end
textBox:GetPropertyChangedSignal("TextBounds"):Connect(updateSize)

TextColor3

Odczyt równoległy

Właściwość ta określa kolor całego tekstu wyrenderowanego przez element GuiObject.Właściwość ta wraz z TextBox.Font, TextBox.TextSize i TextBox.TextTransparency określi właściwości wizualne tekstu.Tekst jest renderowany po pociągnięciu tekstu ( TextBox.TextStrokeColor3 ).

Ważne jest, aby tekst był łatwy do odczytania przez graczy! Pamiętaj o wyborze kolorów o niewielkiej nasyceniu, takich jak biały, szary lub czarny.Upewnij się, że kolor twojego tekstu jest kontrastowany przez TextBox.BackgroundColor3 element interfejsu użytkownika.Jeśli element ma przezroczysty tłok, spróbuj zastosować czarny TextBox.TextStrokeColor3 , aby pomóc kontrastować tekst z 3D światem za nim.

Przykłady kodu

This code sample, when placed within a TextBox, will turn the text color red if the typed string contains no vowels (A, E, I, O or U).

Vowel Detector

local textBox = script.Parent
local function hasVowels(str)
return str:lower():find("[aeiou]")
end
local function onTextChanged()
local text = textBox.Text
-- Check for vowels
if hasVowels(text) then
textBox.TextColor3 = Color3.new(0, 0, 0) -- Black
else
textBox.TextColor3 = Color3.new(1, 0, 0) -- Red
end
end
textBox:GetPropertyChangedSignal("Text"):Connect(onTextChanged)

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

TextBox Secret Word

-- Place this code in a LocalScript inside a TextBox
local textBox = script.Parent
local secretWord = "roblox"
local colorNormal = Color3.new(1, 1, 1) -- white
local colorWrong = Color3.new(1, 0, 0) -- red
local colorCorrect = Color3.new(0, 1, 0) -- green
-- Initialize the state of the textBox
textBox.ClearTextOnFocus = true
textBox.Text = ""
textBox.Font = Enum.Font.Code
textBox.PlaceholderText = "What is the secret word?"
textBox.BackgroundColor3 = colorNormal
local function onFocused()
textBox.BackgroundColor3 = colorNormal
end
local function onFocusLost(enterPressed, _inputObject)
if enterPressed then
local guess = textBox.Text
if guess == secretWord then
textBox.Text = "ACCESS GRANTED"
textBox.BackgroundColor3 = colorCorrect
else
textBox.Text = "ACCESS DENIED"
textBox.BackgroundColor3 = colorWrong
end
else
-- The player stopped editing without pressing Enter
textBox.Text = ""
textBox.BackgroundColor3 = colorNormal
end
end
textBox.FocusLost:Connect(onFocusLost)
textBox.Focused:Connect(onFocused)

This code sample makes a TextLabel or TextButton count backwards from 10, setting the text color as it does so.

Countdown Text

-- Place this code in a LocalScript within a TextLabel/TextButton
local textLabel = script.Parent
-- Some colors we'll use with TextColor3
local colorNormal = Color3.new(0, 0, 0) -- black
local colorSoon = Color3.new(1, 0.5, 0.5) -- red
local colorDone = Color3.new(0.5, 1, 0.5) -- green
-- Loop infinitely
while true do
-- Count backwards from 10 to 1
for i = 10, 1, -1 do
-- Set the text
textLabel.Text = "Time: " .. i
-- Set the color based on how much time is left
if i > 3 then
textLabel.TextColor3 = colorNormal
else
textLabel.TextColor3 = colorSoon
end
task.wait(1)
end
textLabel.Text = "GO!"
textLabel.TextColor3 = colorDone
task.wait(2)
end

This code sample mirrors the contents of a StringValue into a TextLabel, updating and setting the color of the text as it changes.

Game State Text

local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Place a StringValue called "GameState" in the ReplicatedStorage
local vGameState = ReplicatedStorage:WaitForChild("GameState")
-- Place this code in a TextLabel
local textLabel = script.Parent
-- Some colors we'll use with TextColor3
local colorNormal = Color3.new(0, 0, 0) -- black
local colorCountdown = Color3.new(1, 0.5, 0) -- orange
local colorRound = Color3.new(0.25, 0.25, 1) -- blue
-- We'll run this function to update the TextLabel as the state of the
-- game changes.
local function update()
-- Update the text
textLabel.Text = "State: " .. vGameState.Value
-- Set the color of the text based on the current game state
if vGameState.Value == "Countdown" then
textLabel.TextColor3 = colorCountdown
elseif vGameState.Value == "Round" then
textLabel.TextColor3 = colorRound
else
textLabel.TextColor3 = colorNormal
end
end
-- Pattern: update once when we start and also when vGameState changes
-- We should always see the most updated GameState.
update()
vGameState.Changed:Connect(update)

TextDirection

Odczyt równoległy

TextEditable

Odczyt równoległy

Edytowalny tekst określa, czy użytkownik może zmienić Text za pomocą wpisu.Zaleca się wyłączenie ClearTextOnFocus, gdy ta właściwość jest wyłączona, w przeciwnym razie tekst może zostać wyczyszony podczas skupienia.Właściwość ta jest przydatna do tworzenia tekstowych pudełek tylko do odczytu, z których treść można skopiować w grze.

TextFits

Tylko do odczytu
Bez replikacji
Odczyt równoległy

Czy tekst pasuje do ograniczeń TextBox.

TextScaled

Odczyt równoległy

Zamiast używać TextScaled, zalecamy rozważyć użycie AutomaticSize, nowej metody dynamicznego skalowania interfejsu, która da Ci najlepszy wynik wizualny możliwy.

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

Gdy ta właściwość jest używana do interfejsu użytkownika w przestrzeni ekranu, możliwe jest użycie UITextSizeConstraint , aby ograniczyć zakres możliwych rozmiarów tekstu.

Skalowanie tekstu i automatyczny rozmiar

Zaleca się, aby programiści unikali użycia TextScaled i dostosowywali interfejs, aby skorzystać z właściwości AutomaticSize zamiast tego.Oto główne różnice między dwiema właściwościami:

  • TextScaled skaluje treść (tekst), aby pomieścić interfejs użytkownika. Bez uważnego rozważenia niektóry tekst może stać się nieczytelny, jeśli zostanie skalowany zbyt mały.
  • AutomaticSize zmienia rozmiar interfejsu, aby pomieścić treść.

Dzięki AutomaticSize możesz dostosować interfejs użytkownika, aby pomieścić treść (tekst), zachowując stałą wielkość czcionki.Aby uzyskać więcej informacji o tym, jak korzystać z automatycznego skalowania, zobacz artykuł UI Automatic Size.

Sugerujemy, abyś nie stosował zarówno TextScaled, jak i AutomaticSize na tym samym obiekcie interfejsu użytkownika. Jeśli stosujesz obie właściwości:

  • Rozmiar automatyczny określa maksymalną ilość dostępnej przestrzeni, której GuiObject może użyć (w tym przypadku tekst)
  • TextScaled wykorzystuje dostępną przestrzeń określoną przez AutomaticSize, aby skalować rozmiar czcionki, aby pasował do dostępnej przestrzeni, która rozszerzy się do maksymalnego rozmiaru czcionki (100), jeśli nie ma ograniczeń rozmiaru
  • Ostateczny wynik będzie następujący: tekst przejdzie do rozmiaru 100 fontów, a obiekt interfejsu użytkownika rozszerzy się, aby pasował do tego tekstu

Wykorzystanie zarówno AutomaticSize, jak i TextScaled jednocześnie może spowodować znaczne różnice w skalowaniu niż w przypadku wyłączenia AutomaticSize.

Przykłady kodu

This code sample demonstrates TextWrap by spelling out a long chunk of text progressively. If the text doesn't fit, it turns a different color.

Long Text Wrapping

local textLabel = script.Parent
-- This text wrapping demo is best shown on a 200x50 px rectangle
textLabel.Size = UDim2.new(0, 200, 0, 50)
-- Some content to spell out
local content = "Here's a long string of words that will "
.. "eventually exceed the UI element's width "
.. "and form line breaks. Useful for paragraphs "
.. "that are really long."
-- A function that will spell text out two characters at a time
local function spellTheText()
-- Iterate from 1 to the length of our content
for i = 1, content:len() do
-- Get a substring of our content: 1 to i
textLabel.Text = content:sub(1, i)
-- Color the text if it doesn't fit in our box
if textLabel.TextFits then
textLabel.TextColor3 = Color3.new(0, 0, 0) -- Black
else
textLabel.TextColor3 = Color3.new(1, 0, 0) -- Red
end
-- Wait a brief moment on even lengths
if i % 2 == 0 then
task.wait()
end
end
end
while true do
-- Spell the text with scale/wrap off
textLabel.TextWrapped = false
textLabel.TextScaled = false
spellTheText()
task.wait(1)
-- Spell the text with wrap on
textLabel.TextWrapped = true
textLabel.TextScaled = false
spellTheText()
task.wait(1)
-- Spell the text with text scaling on
-- Note: Text turns red (TextFits = false) once text has to be
-- scaled down in order to fit within the UI element.
textLabel.TextScaled = true
-- Note: TextWrapped is enabled implicitly when TextScaled = true
--textLabel.TextWrapped = true
spellTheText()
task.wait(1)
end

TextSize

Odczyt równoległy

Właściwość TextSize określa wysokość w odległości jednej linii renderowanego tekstu.Jednostka jest w odległościach, a nie punktach (które są używane w większości programów do edycji dokumentów).Czcionka "Legacy" nie posiada tej właściwości.

Przykłady kodu

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

"Kaboom!" Text

local textLabel = script.Parent
textLabel.Text = "Kaboom!"
while true do
for size = 5, 100, 5 do
textLabel.TextSize = size
textLabel.TextTransparency = size / 100
task.wait()
end
task.wait(1)
end

TextStrokeColor3

Odczyt równoległy

Właściwość TextStrokeColor3 ustawia kolor oczekiwania, lub obwodu, tekstu renderowanego.Ta właściwość i TextBox.TextStrokeTransparency określają właściwości wizualne pisma tekstowego.

Szczelina tekstowa jest renderowana przed normalnym tekstem i jest po prostu 4 renderowaniami tego samego tekstu w +/- 1 przesunięciu pikselowym w każdym kierunku.Renderowanie linii tekstu działa niezależnie i identycznie do TextBox.TextColor3 i TextBox.TextTransparency.

Przykłady kodu

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

Text Highlight Oscillation

local textLabel = script.Parent
-- How fast the highlight ought to blink
local freq = 2
-- Set to yellow highlight color
textLabel.TextStrokeColor3 = Color3.new(1, 1, 0)
while true do
-- math.sin oscillates from -1 to 1, so we change the range to 0 to 1:
local transparency = math.sin(workspace.DistributedGameTime * math.pi * freq) * 0.5 + 0.5
textLabel.TextStrokeTransparency = transparency
task.wait()
end

TextStrokeTransparency

Odczyt równoległy

Właściwość TextStrokeTransparency ustawia przejrzystość pisma lub konturu renderowanego tekstu.Ta właściwość i TextBox.TextStrokeColor3 określają właściwości wizualne pisma tekstowego.

Szczelina tekstowa jest renderowana przed normalnym tekstem i jest po prostu 4 renderowaniami tego samego tekstu w +/- 1 przesunięciu pikselowym w każdym kierunku.Renderowanie linii tekstu działa niezależnie i identycznie do TextBox.TextColor3 i TextBox.TextTransparency.Ponieważ pociągnięcie tekstu jest po prostu wielokrotnym renderowaniem tej samej przejrzystości, ta właściwość jest zasadniczo mnożąca się cztery razy (np.Przezroczystość tekstu 0.5 pojawia się około tak samo jak przejrzystość tekstu 0.0625 lub 0.5^4).Zaleca się więc ustawienie TextStrokeTransparency na wartość w przedziale od 0,75 do 1, aby uzyskać bardziej subtelny efekt.

Przykłady kodu

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

Text Highlight Oscillation

local textLabel = script.Parent
-- How fast the highlight ought to blink
local freq = 2
-- Set to yellow highlight color
textLabel.TextStrokeColor3 = Color3.new(1, 1, 0)
while true do
-- math.sin oscillates from -1 to 1, so we change the range to 0 to 1:
local transparency = math.sin(workspace.DistributedGameTime * math.pi * freq) * 0.5 + 0.5
textLabel.TextStrokeTransparency = transparency
task.wait()
end

TextTransparency

Odczyt równoległy

Właściwość TextColor3 określa przejrzystość całego tekstu renderowanego przez element interfejsu użytkownika.Właściwość ta wraz z TextBox.Font, TextBox.TextSize i TextBox.TextColor3 określi właściwości wizualne tekstu.Tekst jest renderowany po pociągnięciu tekstu ( TextBox.TextStrokeTransparency ).

Znikanie tekstu za pomocą cyklu for liczbowego to fantastyczny sposób na zwrócenie 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

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

Fading Banner

local TweenService = game:GetService("TweenService")
local textLabel = script.Parent
local content = {
"Welcome to my game!",
"Be sure to have fun!",
"Please give suggestions!",
"Be nice to other players!",
"Don't grief other players!",
"Check out the shop!",
"Tip: Don't die!",
}
local tweenInfo = TweenInfo.new(1, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut)
local RNG = Random.new()
local fadeIn = TweenService:Create(textLabel, tweenInfo, {
TextTransparency = 0,
})
local fadeOut = TweenService:Create(textLabel, tweenInfo, {
TextTransparency = 1,
})
local lastIndex
while true do
-- Step 0: Fade out before doing anything
fadeOut:Play()
task.wait(tweenInfo.Time)
-- Step 1: pick content that wasn't the last displayed
local index
repeat
index = RNG:NextInteger(1, #content)
until lastIndex ~= index
-- Make sure we don't show the same thing next time
lastIndex = index
-- Step 2: show the content
textLabel.Text = content[index]
fadeIn:Play()
task.wait(tweenInfo.Time + 1)
end

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

"Kaboom!" Text

local textLabel = script.Parent
textLabel.Text = "Kaboom!"
while true do
for size = 5, 100, 5 do
textLabel.TextSize = size
textLabel.TextTransparency = size / 100
task.wait()
end
task.wait(1)
end

TextTruncate

Odczyt równoległy

Kontroluje skrócenie tekstu wyświetlanego w tym polu tekstowym.

TextWrapped

Odczyt równoległy

Po włączeniu właściwość ta wyrenderuje tekst na wielu liniach w przestrzeni elementu TextBox, tak że TextBox.TextBounds nigdy nie przekroczy GuiBase2d.AbsoluteSize elementu GUI.

Osiąga się to poprzez rozbicie długich linii tekstu na wiele linii.Przerwy wiersza będą preferować spację; jeśli długie nieprzerwane słowo przekroczy szerokość elementu, to słowo zostanie rozdzielone na wiele linii.

Jeśli dalsze przerwanie linii spowoduje, że wysokość tekstu (składnik Y z TextBox.TextBounds) przekroczy wysokość elementu (składnik Y z GuiBase2d.AbsoluteSize), linia ta nie zostanie w wszystkorenderowana.

Przykłady kodu

This code sample demonstrates TextWrap by spelling out a long chunk of text progressively. If the text doesn't fit, it turns a different color.

Long Text Wrapping

local textLabel = script.Parent
-- This text wrapping demo is best shown on a 200x50 px rectangle
textLabel.Size = UDim2.new(0, 200, 0, 50)
-- Some content to spell out
local content = "Here's a long string of words that will "
.. "eventually exceed the UI element's width "
.. "and form line breaks. Useful for paragraphs "
.. "that are really long."
-- A function that will spell text out two characters at a time
local function spellTheText()
-- Iterate from 1 to the length of our content
for i = 1, content:len() do
-- Get a substring of our content: 1 to i
textLabel.Text = content:sub(1, i)
-- Color the text if it doesn't fit in our box
if textLabel.TextFits then
textLabel.TextColor3 = Color3.new(0, 0, 0) -- Black
else
textLabel.TextColor3 = Color3.new(1, 0, 0) -- Red
end
-- Wait a brief moment on even lengths
if i % 2 == 0 then
task.wait()
end
end
end
while true do
-- Spell the text with scale/wrap off
textLabel.TextWrapped = false
textLabel.TextScaled = false
spellTheText()
task.wait(1)
-- Spell the text with wrap on
textLabel.TextWrapped = true
textLabel.TextScaled = false
spellTheText()
task.wait(1)
-- Spell the text with text scaling on
-- Note: Text turns red (TextFits = false) once text has to be
-- scaled down in order to fit within the UI element.
textLabel.TextScaled = true
-- Note: TextWrapped is enabled implicitly when TextScaled = true
--textLabel.TextWrapped = true
spellTheText()
task.wait(1)
end

TextXAlignment

Odczyt równoległy

TextXAlignment określa poziom wyśrodkowania tekstu (osi X) renderowanego w przestrzeni elementu interfejsu użytkownika.Funkcjonuje podobnie do właściwości CSS text-align, z lewą, prawą i środkową wartościami (nie ma opcji usprawiedliwienia).Dla lewej i prawej strony tekst jest renderowany w taki sposób, że granice lewego/prawego tekstu dotykają tylko krawędź elementu UI.Dla centrum każda linia tekstu jest skupiona w środku UI elementu prostokątu.

Właściwość ta jest używana w połączeniu z TextBox.TextYAlignment w celu w pełni określenia układu tekstu na obu osiach.Właściwość ta nie wpłynie na właściwości tylko do odczytu TextBox.TextBounds i TextBox.TextFits.

Przykłady kodu

This code sample shows all the different text alignment combinations by iterating over each enum item. It is meant to be placed within a TextLabel, TextButton or TextBox.

Text Alignment

-- Paste this in a LocalScript within a TextLabel/TextButton/TextBox
local textLabel = script.Parent
local function setAlignment(xAlign, yAlign)
textLabel.TextXAlignment = xAlign
textLabel.TextYAlignment = yAlign
textLabel.Text = xAlign.Name .. " + " .. yAlign.Name
end
while true do
-- Iterate over both TextXAlignment and TextYAlignment enum items
for _, yAlign in pairs(Enum.TextYAlignment:GetEnumItems()) do
for _, xAlign in pairs(Enum.TextXAlignment:GetEnumItems()) do
setAlignment(xAlign, yAlign)
task.wait(1)
end
end
end

TextYAlignment

Odczyt równoległy

TextYAlignment określa poziom wyśrodkowania tekstu (osi Y) renderowany w przestrzeni elementu interfejsu użytkownika.Dla góry i dołu tekst jest renderowany w taki sposób, że granice tekstu górnego/dolnego dotykają tylko krawędź elementu UI.Dla centrum tekst jest renderowany w taki sposób, że istnieje równa odległość od górnej granicy tekstu do góry elementu i dolnej granicy tekstu do dołu elementu.

Właściwość ta jest używana w połączeniu z TextBox.TextXAlignment w celu w pełni określenia układu tekstu na obu osiach.Właściwość ta nie wpłynie na właściwości tylko do odczytu TextBox.TextBounds i TextBox.TextFits.

Przykłady kodu

This code sample shows all the different text alignment combinations by iterating over each enum item. It is meant to be placed within a TextLabel, TextButton or TextBox.

Text Alignment

-- Paste this in a LocalScript within a TextLabel/TextButton/TextBox
local textLabel = script.Parent
local function setAlignment(xAlign, yAlign)
textLabel.TextXAlignment = xAlign
textLabel.TextYAlignment = yAlign
textLabel.Text = xAlign.Name .. " + " .. yAlign.Name
end
while true do
-- Iterate over both TextXAlignment and TextYAlignment enum items
for _, yAlign in pairs(Enum.TextYAlignment:GetEnumItems()) do
for _, xAlign in pairs(Enum.TextXAlignment:GetEnumItems()) do
setAlignment(xAlign, yAlign)
task.wait(1)
end
end
end

Metody

CaptureFocus

()

Zmusza klienta do skupienia się na TextBox.


Zwroty

()

Przykłady kodu

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

TextBox:CaptureFocus

local ContextActionService = game:GetService("ContextActionService")
local ACTION_NAME = "FocusTheTextBox"
local textBox = script.Parent
local function handleAction(actionName, inputState, _inputObject)
if actionName == ACTION_NAME and inputState == Enum.UserInputState.End then
textBox:CaptureFocus()
end
end
ContextActionService:BindAction(ACTION_NAME, handleAction, false, Enum.KeyCode.Q)

IsFocused

Zwraca prawdę, jeśli pole tekstowe jest skupione, lub fałsz, jeśli nie jest.


Zwroty

ReleaseFocus

()

Wymusza, aby klient odblokował TextBox. Parametr submitted pozwala na przejęcie parametru enterPressed w wydarzeniu TextBox.FocusLost.

Ten przedmiot powinien być używany z LocalScript w celu prawidłowego działania w trybie online.

Kod pokazany poniżej zmusi klienta do odblokowania "TextBox" 5 sekund po wybraniu:


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

Pamiętaj, że powyższy przykład zakłada, że jest w LocalScript, jako dziecko TextBox.

Parametry

submitted: boolean
Wartość domyślna: false

Zwroty

()

Przykłady kodu

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

TextBox:ReleaseFocus

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

Zdarzenia

FocusLost

Wystrzeliwuje, gdy klient pozwala, aby jego skupienie opuściło TextBox - zwykle gdy klient kliknie/dotknie poza TextBox.Wystrzeliwuje to również, jeśli TextBox zmusza do skupienia się na użytkowniku.

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

Zobacz także UserInputService.TextBoxFocused i UserInputService.TextBoxFocusReleased dla podobnych funkcji, które opierają się na usłudze UserInputService.

To wydarzenie będzie wystrzeliwane tylko wtedy, gdy używane jest w LocalScript.

Parametry

enterPressed: boolean

Boolean wskazujący, czy klient naciśnął Enter, aby stracić koncentrację (prawda) lub nie (fałsz).

inputThatCausedFocusLoss: InputObject

Przykład InputObject instancji wskazujący rodzaj wejścia, które spowodowało utratę koncentracji przez TextBox


Przykłady kodu

The example shown below will print "Focus was lost because enter was pressed!" whenever the TextBox loses focus as a result of the enter key being pressed.

TextBox.FocusLost1

local gui = script.Parent
local textBox = gui.TextBox
local function focusLost(enterPressed)
if enterPressed then
print("Focus was lost because enter was pressed!")
else
print("Focus was lost without enter being pressed")
end
end
textBox.FocusLost:Connect(focusLost)

This example works when placed in a LocalScript that is the child of a TextBox. When the TextBox loses focus, the example prints either:

  1. "Player pressed Enter" - if the TextBox lost focus because the player pressed the Enter key. or
  2. "Player pressed InputObject.KeyCode" - where "KeyCode" is the InputObject KeyCode property of the input that caused the TextBox to lose focus. For example, pressing the Escape (esc) key to exit TextBox focus returns an InputObject instance with the KeyCode 'InputObject.Escape'.
FocusLost

local textBox = script.Parent
local function onFocusLost(enterPressed, inputThatCausedFocusLost)
if enterPressed then
print("Player pressed Enter")
else
print("Player pressed", inputThatCausedFocusLost.KeyCode)
end
end
textBox.FocusLost:Connect(onFocusLost)

Focused

Wystrzeliwuje się, gdy TextBox uzyskuje fuzję - zwykle, gdy klient kliknie/dotknie TextBox, aby rozpocząć wpisanie tekstu.Wystrzeliwuje to również, jeśli TextBox zmusza do skupienia się na użytkowniku.

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

Zobacz także UserInputService.TextBoxFocused i UserInputService.TextBoxFocusReleased dla podobnych funkcji, które opierają się na usłudze UserInputService.

To wydarzenie będzie wystrzeliwane tylko wtedy, gdy używane jest w LocalScript.


Przykłady kodu

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

Focus

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

ReturnPressedFromOnScreenKeyboard