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 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.
-- 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 wyczyści jego właściwość TextBox.Text.
Określa przesunięcie kurora tekstowego w bajtach lub -1 jeśli nie ma kurora.
Określa czcionkę używaną do renderowania tekstu.
Określa czcionkę używaną do renderowania tekstu.
Skaluje odległość między liniami tekstu w TextBox.
Maksymalna liczba grafem, które TextBox może pokazywać, prezentować.
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ę.
Ustawia kolor tekstu, który jest używany, gdy jeszcze nie został wprowadzony tekst do TextBox.
Ustawia tekst, który jest wyświetlany, gdy jeszcze nie został wpisany tekst do TextBox.
Określa, czy TextBox renderuje TextBox.Text ciąg za pomocą bogatej formatyzacji tekstu.
Określa początkową pozycję wyboru tekstu lub -1, jeśli żaden tekst nie jest wybrany.
Jeśli ustawiono na prawdę, wejście natywne na platformę jest używane zamiast klawiatury wbudowanej w Roblox.
Określa ciąg renderowany przez element UI.
Rozmiar tekstu elementu UI w odległości.
Określa kolor wyrenderowanego tekstu.
Określa, czy użytkownik może zmienić Text.
Czy tekst pasuje do ograniczeń TextBox.
Zmienia, czy tekst jest zmieniany, aby pasował do obiektu GUI, który go renderuje.
Określ wysokość linii tekstu w odległościach.
Określa kolor oczekiwania tekstu (linii).
Określa przejrzystość pisma (konturu).
Określa przejrzystość renderowanego tekstu.
Kontroluje skrócenie tekstu wyświetlanego w tym polu tekstowym.
Określa, czy tekst obejmuje wiele linii w przestrzeni elementu GuiObject, skracając nadmiarowy tekst.
Określa poziome wyśrodkowanie tekstu renderowanego.
Określa poziom wyśrodkowania tekstu renderowanego w pionie.
Określa, czy ten element interfejsu zanurza wejście.
Określa punkt pochodzenia GuiObject , względem jego absolutnego rozmiaru.
Określa, czy zmiana rozmiaru następuje w oparciu o treść dziecka.
Określa kolor tła GuiObject.
Określa przejrzystość tła i ramki GuiObject.
Określa kolor obramowania GuiObject.
Określa, w jaki sposób granica GuiObject jest rozmieszczona względem jej wymiarów.
Określa szerokość piksela obramowania GuiObject.
Określa, czy potomek GuiObjects poza granicami elementu GUI rodzica powinien się renderować.
Określa, czy mysz gracza jest aktywnie naciśnięta na GuiObject lub nie.
Określa, czy GuiButton można wejść w interakcję, czy nie, lub czy GuiState z GuiObject zmienia się lub nie.
Kontroluje kolejność sortowania GuiObject przy użyciu UIGridStyleLayout .
Ustawia GuiObject, które zostaną wybrane, gdy selektor gamepada zostanie przesunięty w dół.
Ustawia GuiObject, które zostaną wybrane, gdy selektor gamepada zostanie przesunięty w lewo.
Ustawia GuiObject, które zostaną wybrane, gdy selektor gamepada zostanie przesunięty w prawo.
Ustawia GuiObject, które zostaną wybrane, gdy selektor gamepada zostanie przesunięty w górę.
Określa pozycję piksela i skalarną pozycję GuiObject.
Określa liczbę stopni, w jakich GuiObject jest obrócony.
Określ, czy GuiObject może być wybrane przez gamepad.
Zastępuje domyślną ozdobę selekcji używaną do gamepadów.
Kolejność GuiObjects wybrana przez wybór interfejsu gamepada.
Określa rozmiar piksela i skali GuiObject .
Ustawia osie Size, na których GuiObject będzie oparty, w stosunku do rozmiaru jego rodzica.
Mieszana właściwość BackgroundTransparency i TextTransparency.
Określa, czy GuiObject i jego potomkowie zostaną wyrenderowane.
Określa kolejność, w której renderowanie GuiObject względem innych.
Opisuje rzeczywistą pozycję ekranu elementu GuiBase2d w pikselach.
Opisuje rzeczywitą rotację ekranu elementu GuiBase2d w stopniach.
Opisuje rzeczywistą rozdzielczość ekranu elementu GuiBase2d w pikselach.
Gdy ustawiono na true, lokalizacja zostanie zastosowana do tego GuiBase2d i jego potomków.
Odwołanie do LocalizationTable , które ma być użyte do zastosowania automatyzowanej lokalizacji do tego GuiBase2d i jego potomków.
Dostosowuje zachowanie wyboru pada w dół w grze.
Dostosowuje zachowanie wyboru gamepada w lewo.
Dostosowuje zachowanie wyboru gamepada w prawnym kierunku.
Dostosowuje zachowanie wyboru gamepada w kierunku góry.
Umożliwia dostosowanie ruchu wyboru gamepada.
Metody
Zmusza klienta do skupienia się na TextBox.
Zwraca prawdę, jeśli pole tekstowe jest skupione, lub fałsz, jeśli nie jest.
Wymusza, aby klient odblokował TextBox.
- TweenPosition(endPosition : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : boolean,callback : function):boolean
Płynnie przenosi interfejs użytkownika do nowego UDim2.
- TweenSize(endSize : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : boolean,callback : function):boolean
- TweenSizeAndPosition(endSize : UDim2,endPosition : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : boolean,callback : function):boolean
Płynnie przesuwa interfejs użytkownika do nowego rozmiaru i pozycji.
Zdarzenia
Wystrzeliwuje, gdy klient pozwala, aby ich skupienie opuściło TextBox.
Wypala się, gdy TextBox uzyskuje fuzję.
Wystrzeliwany, gdy użytkownik zaczyna interakcję za pomocą urządzenia interfejsu człowiek-komputer (przycisk myszy w dół, dotknięcie rozpoczęcia, przycisk klawiatury w dół itp.).
Wystrzeliwany, gdy użytkownik zmienia sposób interakcji za pomocą urządzenia interfejsu człowiek-komputer (przycisk myszy w dół, dotknięcie początku, przycisk klawiatury w dół itp.).
Wystrzeliwany, gdy użytkownik przestaje interakcjonować za pomocą urządzenia interfejsu człowiek-komputer (przycisk myszy w dół, dotknięcie początku, przycisk klawiatury w dół itp.).
Wystrzeliwuje, gdy użytkownik przesuwa mysz do elementu GUI.
Wystrzeliwuje, gdy użytkownik przesuwa mysz poza element interfejsu graficznego.
Wystrzeliwuje za każdym razem, gdy użytkownik przesuwa mysz, gdy znajduje się w środku elementu GUI.
Wystrzeliwuje, gdy użytkownik przewija koło myszy wstecz, gdy mysz znajduje się nad elementem GUI.
Wystrzeliwuje, gdy użytkownik przewija koło myszy w przód, gdy mysz znajduje się nad elementem GUI.
Wystrzeliwany, gdy GuiObject jest skupiany za pomocą wyboru Gamepad.
Wystrzelony, gdy wybór Gamepada przestaje skupiać się na GuiObject.
Wystrzeliwuje, gdy gracz zaczyna, kontynuuje i zatrzymuje długie naciśnięcie elementu interfejsu.
- TouchPan(touchPositions : Array,totalTranslation : Vector2,velocity : Vector2,state : Enum.UserInputState):RBXScriptSignal
Wystrzeliwuje, gdy gracz przesuwa palec po elementze interfejsu.
- TouchPinch(touchPositions : Array,scale : number,velocity : number,state : Enum.UserInputState):RBXScriptSignal
Wystrzeliwuje, gdy gracz wykonuje gest przesuwania lub ciągnięcia za pomocą dwóch palców na element UI.
- TouchRotate(touchPositions : Array,rotation : number,velocity : number,state : Enum.UserInputState):RBXScriptSignal
Wystrzeliwuje, gdy gracz wykonuje gest rotacji za pomocą dwóch palców na element UI.
Wypala się, gdy gracz wykonuje gest przesuwania na element interfejsu użytkownika.
Wystrzeliwuje, gdy gracz wykonuje gest dotknięcia na element interfejsu.
- SelectionChanged(amISelected : boolean,previousSelection : GuiObject,newSelection : GuiObject):RBXScriptSignal
Wybucha, gdy wybór gamepada przenosi się do, opuszcza lub zmienia w ramach połączonego GuiBase2d lub dowolnego potomka GuiObjects.
Właściwości
ContentText
CursorPosition
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().
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ść 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.
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.
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ś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
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
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
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
OpenTypeFeaturesError
PlaceholderColor3
Ustawia kolor tekstu, który jest używany, gdy jeszcze nie został wprowadzony tekst do TextBox.
PlaceholderText
Ustawia tekst, który jest wyświetlany, gdy jeszcze nie został wpisany tekst do TextBox.
RichText
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
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().
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 ustawiono na prawdę, wejście natywne na platformę jest używane zamiast klawiatury wbudowanej w Roblox.
Text
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.
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.
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.
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.
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.
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ść 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.
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
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).
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.
-- 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.
-- 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.
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
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.
TextScaled
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.
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 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.
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 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.
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ść 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.
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ść 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.1for i = 1, 0, -0.1 dotextLabel.TextTransparency = itask.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.
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.
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
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.
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 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.
-- 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 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.
-- 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.
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
Zwroty
Przykłady kodu
The code shown below will force the client to unfocus the 'TextBox' 5 seconds after it's selected:
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
Boolean wskazujący, czy klient naciśnął Enter, aby stracić koncentrację (prawda) lub nie (fałsz).
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.
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:
- "Player pressed Enter" - if the TextBox lost focus because the player pressed the Enter key. or
- "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'.
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".
local textBox = script.Parent
local function onFocused()
print("Focused")
end
textBox.Focused:Connect(onFocused)