TextBox
*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
-- 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
Określa, czy kliknięcie na TextBox usunie jego właściwość TextBox.Text.
Określa przesunięcie kursora tekstowego w bajtach lub -1, jeśli nie ma kursora.
Określa czcionkę używającą do renderowania tekstu.
Określa czcionkę używającą do renderowania tekstu.
Skala przestrzeń między liniami tekstu w TextBox.
Maksymalna liczba grafem, które TextBox może pokazywać, prezentować.
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ę.
Ustawia kolor tekstu, który zostanie użyty, gdy jeszcze tekst nie zostanie wpisany do TextBox.
Ustawia tekst, który zostanie wyświetlony, gdy jeszcze tekst nie został wpisany do TextBox.
Określa, czy TextBox renderuje TextBox.Text strumień używając bogatej formy tekstu.
Określa początkową pozycję wyboru tekstu lub -1, jeśli tekst nie zostanie wybrany.
Jeśli ustawiony na prawdę, wpisywanie klawiatury natywnej na platformie jest zamiast tego używane klawiatury wbudowanej Roblox.
Określa strumień renderowany przez element UI.
Rozmiar tekstu elementu interfejsu w odległościach.
Określa kolor tekstu renderowanego.
Określa, czy użytkownik może zmienić Text .
Czy tekst pasuje w ramach ograniczeń TextBox.
Zmienia rozmiar tekstu, aby dostosować obiekt GUI, na którym jest renderowany.
Określ wysokość linii tekstu w odległościach.
Określa kolor tekstu (wypełnienia).
Określa przejrzystość tekstu (wstępki).
Określa przejrzystość renderowanego tekstu.
Kontroluje skrócenie tekstu wyświetlanego w tym TextBox.
Określa, czy tekst zostanie zapisany na wielu linijkach w obszarze GUI , przycięcia nadmiaru tekstu.
Określa poziomowy alineat tekstu renderowanego.
Określa poziomowy alineat tekstu renderowanego.
Określa, czy ten element interfejsu wchłania wejście.
Określa punkt pochodzenia GuiObject względem jego wielkości absolutnej.
Określa, czy zmiana rozmiaru następuje w oparciu o treści dziecka.
Określa kolor tła GuiObject .
Określa przejrzystość tła GuiObject i ramy.
Określa kolor GuiObject granicy.
Określa sposób, w jaki GuiObject granica jest rozdzielana w stosunku do jej wymiarów.
Określa szerokość piksela GuiObject granicy.
Określa, czy potomstwo GuiObjects poza granicami elementu GUI rodzica powinno się renderować.
Określa, czy mikser gracza jest aktywnie naciskany na GuiObject lub nie.
Określa, czy GuiButton może być zainterakcjonowany z lub nie, lub czy GuiState z GuiObject zmienia się lub nie.
Kontroluje kolejność sortowania GuiObject z użyciem UIGridStyleLayout.
Ustawia GuiObject, który zostanie wybrany, gdy selektor gamepad zostanie przesunięty w dół.
Ustawia GuiObject, który zostanie wybrany, gdy selektor gamepad'a zostanie przeniesiony do lewej.
Ustawia GuiObject, który zostanie wybrany, gdy selektor gamepad'a zostanie przesunięty do prawej.
Ustawia GuiObject, który zostanie wybrany, gdy selektor gamepad'a zostanie przesunięty w górę.
Określa pozycję piksela i skalary GuiObject .
Określa liczbę stopni, w których obrócony jest GuiObject.
Określ, czy GUI może być wybrany przez gamepad.
Przywraca używany na płytach gier standardowy wzór wyboru.
Sortowanie GuiObjects wybrane przez interfejs wyboru gamepad'a.
Określa rozmiar piksela i skalary Class.GuiObject .
Ustawia Size osi, na których będzie opierać się GuiObject w odniesieniu do rozmiarów jego ojca.
Mieszana własność BackgroundTransparency i TextTransparency .
Określa, czy GuiObject i jego potomstwo zostaną renderowane.
Określa porządek, w jakim GuiObject renderuje w stosunku do innych.
Opisuje rzeczywistą pozycję ekranu elementu UI, w pikselach.
Opisuje rzeczywistą rotację ekranu elementu UI, w stopniach.
Opisuje rzeczywisty rozmiar ekranu elementu UI, w pikselach.
Ustawione na prawdę, lokalizacja zostanie zastosowana do tego GuiBase2d i jego potomnych.
Odnośnik do LocalizationTable używany do zastosowania automatycznej lokalizacji do tego GuiBase2d i jego potomnych.
Dostosowuje zachowanie wyboru gry w dół.
Dostosuj zachowanie selekcji sterowania w lewym kierunku.
Dostosuj zachowanie selekcji gry w odpowiednim kierunku.
Dostosowuje zachowanie wyboru gry w górę.
Umożliwia dostosowanie ruchu wyboru gry.
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.
Zmusza klienta do odblokowania pola tekstowego.
- TweenPosition(endPosition : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : bool,callback : function):bool
Płynnie przesuwa GUI do nowego UDim2 .
- TweenSize(endSize : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : bool,callback : function):bool
Płynnie skala GUI do nowego UDim2 .
- TweenSizeAndPosition(endSize : UDim2,endPosition : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : bool,callback : function):bool
Smoothly przesuwa GUI do nowego rozmiaru i pozycji.
Zdarzenia
Wyst?puje, gdy klient pozwoli, aby jego skupienie opu?ci? TextBox .
Wyst?puje, gdy TextBox zyska fokus.
Wystrzelony, gdy użytkownik zacznie interagować za pośrednictwem urządzenia interfejsu człowiek-komputer (przycisk myszy, dotknięcie początku, klawiatura do klawiatury, itp).
Wystrzelony, gdy użytkownik zmienia sposób interakcji za pośrednictwem urządzenia interfejsu człowiek-komputer (przycisk myszy, dotknięcie początku, klawiatura do klawiatury, itp).
Wystąpił problem, gdy użytkownik przestał interagować za pośrednictwem urządzenia interfejsu człowiek-komputer (przycisk myszy, dotknięcie początku, klawiatura, itp).
Wystrzela, gdy użytkownik przesuwa myszkę do elementu GUI.
Wystrzela, gdy użytkownik porusza myszką poza elementem GUI.
Wystrzela, gdy użytkownik porusza myszką, gdy jest w środku elementu GUI.
Wystrzela, gdy użytkownik przesuwa myszką z powrotem, gdy myszka jest nad elementem GUI.
Wystrzela, gdy użytkownik przesuwa myszką do przodu, gdy myszka jest nad elementem GUI.
Wystrzelony, gdy GuiObject jest skupiony na z wyborem Gamepad.
Wystrzelony, gdy selektor Gamepad przestał skupiać się na GuiObject.
Wystąpi, gdy gracz rozpocznie, będzie kontynuował i zatrzyma długo naciskał element UI.
- TouchPan(touchPositions : Array,totalTranslation : Vector2,velocity : Vector2,state : Enum.UserInputState):RBXScriptSignal
Wystrzela, gdy gracz porusza palcem po obszarze UI.
- TouchPinch(touchPositions : Array,scale : number,velocity : number,state : Enum.UserInputState):RBXScriptSignal
Wystrzela, gdy gracz wykonuje ruch pociągnięcia lub pociągnięcia za pomocą dwóch palców na elementze UI.
- TouchRotate(touchPositions : Array,rotation : number,velocity : number,state : Enum.UserInputState):RBXScriptSignal
Wystąpi, gdy gracz wykonuje rotacyjny gest używając dwóch palców na elementze UI.
Wystąpi, gdy gracz wykonuje gest swipe'u na element UI.
Wystąpi, gdy gracz wykonuje gest tap na element UI.
- SelectionChanged(amISelected : bool,previousSelection : GuiObject,newSelection : GuiObject):RBXScriptSignal
Występuje, gdy selekcja gamepad'a przesuwa się do, wychodzi lub zmienia w ciągu połączonego GuiBase2d lub dowolnego potomnego GuiObjects.
Właściwości
ContentText
CursorPosition
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
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)
Font
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
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
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
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
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
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
OpenTypeFeaturesError
PlaceholderColor3
Ustawia kolor tekstu, który zostanie użyty, gdy jeszcze tekst nie zostanie wpisany do TextBox.
PlaceholderText
Ustawia tekst, który zostanie wyświetlony, gdy jeszcze tekst nie został wpisany do TextBox.
RichText
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
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
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
Jeśli ustawiony na prawdę, wpisywanie klawiatury natywnej na platformie jest zamiast tego używane klawiatury wbudowanej Roblox.
Text
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
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
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
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
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
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
TextEditable
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
TextScaled
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
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
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
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
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
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
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
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
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.1for i = 1, 0, -0.1 dotextLabel.TextTransparency = itask.wait(0.1)end
Przykłady kodu
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
TextWrapped
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
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 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
-- 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 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
-- 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
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
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
Zwroty
Przykłady kodu
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
Boolean określający, czy klient nacisnął Enter, aby stracić skupienie ( prawdziwy ) lub nie ( fałszywy ).
Przykład InputObject wskazujący na typ wejścia powodującego utratę skupienia TextBox.
Przykłady kodu
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)
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
local textBox = script.Parent
local function onFocused()
print("Focused")
end
textBox.Focused:Connect(onFocused)