TextBox
*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.
Một TextBox cho phép người chơi cung cấp dữ liệu văn bản. Nó hoạt động tương tự như một TextButton , ngoại trừ việc một cái TextBox có thể được đặt vào trung tâm bằng cách nhấp chuột, nhấn hoặc gamepad selection. Trong
- Nếu không có văn bản, PlaceholderText sẽ xuất hiện. Điều này hữu ích khi kêu gọi người chơi của loại hoặc định dạng dữ liệu mà họ nên nhập.
- Bởi mặc định, thuộc tính ClearTextOnFocus được kích hoạt và đảm bảo không có văn bản nào khi một TextBox được tập trung. Điều này có thể không đẹp mắt cho văn bản mà người chơi có thể chỉnh sửa.
- Thuộc tính MultiLine cho phép người chơi nhập nhiều dòng văn bản với những nhân vật dòng mới ( \n ).
The ContextActionService honors TextBox keybinds and will automatically prevent key press events from being passed to actions bound with ContextActionService:BindAction() . UserInputService.InputBegan and related events will still fire while a TextBox is in focus.
Tập Trung Nhàn
Có thể phát hiện và thay đổi trạng thái tập trung của một TextBox:
- Bạn có thể sử dụng CaptureFocus khi một hội thoại xuất hiện để người chơi không phải nhấp vào một TextBox khi nó trở nên có sẵn; bạn có thể sử dụng Class.ContextActionService:BindAction()</
- Bạn có thể xác định nếu một TextBox nào đó đang ở trong tập trung bằng cách sử dụng IsFocused . Hoặc, UserInputService:GetFocusedTextBox() có thể được sử dụng để kiểm tra nếu bất kỳ TextBox nào đang ở trong tập trung.
- Khi người chơi đã hoàn thành việc nhập chữ, sự kiện FocusLost xảy ra, cho biết người dùng đã nhấn Enter để gửi chữ cùng với InputObject
- Nếu một số vấn đề quan trọng khác xảy ra trong lúc trải nghiệm trò chơi, bạn có thể ReleaseFocus của TextBox để đảm bảo rằng lượng phím của người chơi trở về trò chơi của bạn.
Chỉnh Sửa Văn Bản
Một TextBox hỗ trợ lựa chọn văn bản thông qua các thuộc tính CursorPosition và SelectionStart của nó. Sử dụng GetPropertyChangedSignal, bạn có thể xác định khi một l
Thông báo về lọc văn bản Games that facilitate player-to-player communication using text, such as custom chat or nametags, must properly filter such text using TextService:FilterStringAsync() or Chat:FilterStringAsync(). If this is not properly done, your game may receive moderation hành động.
Mẫu mã
-- 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)
Tóm Tắt
Thuộc Tính
Xác định whether clicking on the TextBox will clear its TextBox.Text property.
Xác định sự thay đổi của trỏ chuột văn bản bằng dấu chấm câu trong các ký tự, hoặc -1 nếu không có trỏ chuột.
Xác định chữ cái được sử dụng để hiển thị văn bản.
Xác định chữ cái được sử dụng để hiển thị văn bản.
Điều chỉnh khoảng cách giữa các dòng chữ trong TextBox .
Số lượng tối đa của các thẻ TextBox có thể hiển trình diễn.
Khi đặt cho true, text trong một TextBox có thể di chuyển lên nhiều dòng. Điều này cũng cho phép người chơi sử dụng Enter để di chuyển lên một dòng mới.
Đặt màu chữ được sử dụng khi chưa có chữ nào được nhập vào TextBox.
Đặt văn bản được hiển thị khi chưa có văn bản nào được nhập vào TextBox.
Xác định có phải TextBox hiển thị dòng TextBox.Text bằng hình dạng văn bản phong phú không.
Xác định vị trí xuất phát của một lựa chọn văn bản, hoặc -1 nếu không có văn bản được chọn.
Nếu được đặt lại, nhập native vào trình duyệt thay vì bàn phím trên Roblox đã được tích hợp.
Xác định chuỗi được hiển thị bởi thành phần UI.
Kích thước của văn bản trong một thành phần UI bị lệch.
Xác định màu của văn bản được hiển thị.
Xác định có phải người dùng có thể thay đổi Text .
Whether the text fits within the constraints of the TextBox.
Đổi kích thước chữ để chúng phù hợp với thiết bị hiển thị nó.
Xác định chiều cao dòng chữ trong các khoảng cách.
Xác định màu của các đường nét (nét chân chóe).
Xác định độ trong suốt của các đường chữ (nét).
Xác định độ trong suốt của văn bản được hiển thị.
Điều khiển sự cắt xé của văn bản được hiển thị trong TextBox này.
Xác định nếu text wraps to multiple lines within the GUI element space, truncating excess text.
Xác định bố trí ngang của văn bản được hiển thị.
Xác định chỉnh dọc trong đó text được hiển thị.
Xác định whether this UI element sinks input.
Xác định điểm nguồn của một GuiObject , so với kích thước tương đối của nó.
Xác định xem resize có xảy ra dựa trên nội dung con hay không.
Xác định màu nền GuiObject .
Xác định độ trong suốt của GuiObject hình ảnh và biên giới.
Xác định màu của GuiObject border.
Xác định cách mà GuiObject biên giới được phân bố đối với kích thước của nó.
Xác định chiều rộng pixel của GuiObject biên giới.
Xác định nếu con cháu GuiObjects nằm ngoài giới hạn của một thành phần GUI cha mẹ nên tạo ra.
Xác định apakah chuột của người chơi đang được nhấn chủ động trên GuiObject hay không.
Xác định có thể hay không tương tác với GuiButton , hoặc liệu GuiState của GuiObject đang thay đổi hay không.
Điều khiển thứ tự sắp xếp của GuiObject khi được sử dụng với một UIGridStyleLayout .
Điều chỉnh GuiObject được chọn khi gamepad selector được di chuyển xuống.
Điều chỉnh GuiObject được chọn khi gamepad selector được di chuyển sang bên trái.
Điều chỉnh GuiObject được chọn khi gamepad selector được di chuyển sang phải.
Điều chỉnh GuiObject được chọn khi gamepad selector di chuyển lên trên.
Xác định vị trí pixel và vị trí trục của GuiObject .
Xác định số độ bằng mà GuiObject được quay.
Xác định có thể chọn GUI bằng gamepad.
Làm cho trang trí chọn mặc định của gamepad bị tắt.
Thứ tự của GuiObjects được chọn bởi gamepad UI lựa chọn.
Xác định kích thước pixel và kích thước trục của GuiObject .
Điều chỉnh các trục Size mà GuiObject sẽ dựa trên, so với kích thước của cha mình.
Một tính chất hỗn hợp của BackgroundTransparency và TextTransparency .
Xác định có phải GuiObject và con cháu của nó sẽ được xử lý.
Xác định thứ tự mà một GuiObject tạo gần những người khác.
Mô tả vị trí màn hình thực tế của một thành phần UI, bằng cách đếm các pixel.
Mô tả sự quay màn hình thực tế của một thành phần UI, bằng độ.
Mô tả kích thước màn hình thực tế của một thành phần UI, bằng các pixel.
Khi đặt về true, localization sẽ được áp dụng cho GuiBase2d và những con cháu của nó.
Một tham khảo đến một LocalizationTable để ứng dụng hóa học hóa toàn bộ vào GuiBase2d và các con cháu của nó.
Tùy chỉnh hành vi lựa chọn gamepad ở hướng dưới.
Tùy chỉnh hành vi lựa chọn gamepad ở hướng bên trái.
Tùy chỉnh hành vi lựa chọn gamepad ở hướng phải.
Tùy chỉnh hành vi lựa chọn gamepad trong hướng lên.
Cho phép tùy chỉnh chuyển động của nút gamepad.
Phương Pháp
Bắt client tập trung vào TextBox.
Trả về true nếu textbox được tập trung, hoặc false nếu nó không.
Bắt buộc khách hàng phải thoát khỏi TextBox.
- TweenPosition(endPosition : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : bool,callback : function):bool
Di chuyển một GUI mượt mà đến một new UDim2 .
- TweenSize(endSize : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : bool,callback : function):bool
Điều chỉnh mượt mà một GUI lên một new Datatype.UDim2 .
- TweenSizeAndPosition(endSize : UDim2,endPosition : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : bool,callback : function):bool
Di chuyển một GUI một cách mượt mà đến kích thước và vị trí mới.
Sự Kiện
Sự Kiện kế thừa từ GuiObjectĐược kích hoạt khi một người bắt đầu tương tác thông qua một thiết bị giao tiếp người-máy (chuột bên dưới, chạm bắt đầu, nút bàn phím xuống, v.v.v).
Bị kích động khi một người thay đổi cách họ tương tác thông qua thiết bị giao tiếp Người-Máy (chuột, bắt đầu, nhấn bàn phím, v.v..).
Đã kết thúc khi một người dừng tương tác thông qua thiết bị Giao tiếp Người-Máy (chuột bên dưới, chạm bắt đầu, nút bàn phím xuống, v.v.);.
Bắt đầu khi người dùng di chuyển chuột vào một thành phần GUI.
Bắt đầu khi người dùng di chuyển chuột khỏi một thành phần GUI.
Bắt lửa mỗi khi một người dịch chuột trong khi nó ở trong một thành phần GUI.
Bắt đầu khi người dùng cuộn chuột chuột của họ trở lại khi chuột đang ở trên một thành phần GUI.
Bắt đầu khi người dùng di chuyển bánh xe chuột của họ khi chuột ở trên một thành phần GUI.
Được kích hoạt khi GuiObject đang được tập trung với GamepadSelector.
Bị kích hoạt khi GamepadSelector ngưng tập trung vào GuiObject.
Lửa khi người chơi bắt đầu, tiếp tục và dừng lại sau khi nhấn mạnh UI.
- TouchPan(touchPositions : Array,totalTranslation : Vector2,velocity : Vector2,state : Enum.UserInputState):RBXScriptSignal
Bắt đầu khi người chơi di chuyển ngón tay của họ trên thành phần UI.
- TouchPinch(touchPositions : Array,scale : number,velocity : number,state : Enum.UserInputState):RBXScriptSignal
Bắt lửa khi người chơi thực hiện một hành động nhấn hoặc kéo dùng hai ngón tay trên thành phần UI.
- TouchRotate(touchPositions : Array,rotation : number,velocity : number,state : Enum.UserInputState):RBXScriptSignal
Bắt đầu khi người chơi thực hiện một hành động quay bằng hai ngón tay trên thành phần UI.
Bắt đầu khi người chơi thực hiện một động tác trượt tuyết trên một thành phần UI.
Bắt đầu khi người chơi thực hiện một hành động nhấn chuột trên thành phần UI.
- SelectionChanged(amISelected : bool,previousSelection : GuiObject,newSelection : GuiObject):RBXScriptSignal
Kích hoạt khi lựa chọn gamepad di chuyển đến, rời đi hoặc thay đổi trong khu vực GuiBase2d hoặc bất kỳ con cháu GuiObjects kế tiếp.
Thuộc Tính
ContentText
CursorPosition
CursorPosition xác định thời gian trễ của text cursor trong bytes, hoặc -1 nếu TextBox hiện đang không được chỉnh sửa. Một giá trị 1 đại diện cho sự bắt đầu, vị trí trước khi người dùng đầu tiên trong
Nên lưu ý rằng các đơn vị của thuộc tính này là bytes và rằng nhiều ký tự không được hỗ trợ như các ký tự cầu nối – vị trí của thanh văn là 10, không phải 7, vì ký tự này sử dụng 4 octet.
Mẫu mã
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
Thuộc tínhFont chọn một trong vài bản chữ fonts được sử dụng để hiển thị chữ của thành phần UI. Một số font có dấu chỉ, hoạt động và / hoặc ánh sáng biến thể (vì không có thuộc tínhFont hoặc kiểu chữ).
Ngoài font "Legacy", mỗi font sẽ tạo ra chữ văn bản với chiều cao dòng bằng với đặ性 TextBox.TextSize .Font "Code" là font monospace duy nhất. Nó có đặ性 độc đáo mà mỗi nhân vật có tỷ lệ chiều rộng và chiều cao tư
Đặ性 này được giữ đồng bộ với đặt tính TextBox.FontFace . Khi cài đặtFont, đặtFont sẽ được đặt để Font.fromEnum(value) .
Mẫu mã
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
Thuộc tính FontFace tương tự thuộc tínhFont, nhưng cho phép bạn cài đặt các kiểu chữ của bạn không tồn tại trong danh sách kiểu chữ.
Điều này được giữ đồng bộ với điều kiện TextBox.Font . Khi cài đặt FontFace,Font được đặt vào giá trị danh mục tương ứng tương ứng hoặc Enum.Font.Unknown nếu không có trùng khớp.
LineHeight
Điều khiển chiều cao của các dòng, như một nhiều của kích thước hàng gốc của chữ, bằng cách thay đổi kích thước khe cắm giữa các dòng của văn bản trong TextBox . Các giá trị hợp lệ có thể lớn hơn hoặc nhỏ hơn 1.0, mặc định là 1.0.
MaxVisibleGraphemes
Thuộc tính này điều khiển số lượng tối đa của графема (hoặc đơn vị văn bản) được hiển thị trên TextBox, независимо от того có phải hiển thị TextBox.PlaceholderText hoặc TextBox.Text .
Đổi tính chất không đổi vị trí hoặc kích thước của các ô thị hiện có - trang bị sẽ được tính toán như thể tất cả các ô thị hiện có.
Đặt thuộc tính để -1 tắt giới hạn và hiển thị toàn bộ TextBox.Text .
MultiLine
Khi đặt cho true, text trong một TextBox có thể di chuyển lên nhiều dòng. Điều này cũng cho phép người chơi sử dụng Enter để di chuyển lên một dòng mới.
OpenTypeFeatures
OpenTypeFeaturesError
RichText
Thuộc tính này xác định whether the TextBox render the TextBox.Text string using rich text formatting. Rich text uses simple markup tags to style sections of the string in bold, italics, specific colors, and more.
Để sử dụng văn bản mở rộng, hãy bao gồm các thẻ biểu tượng hóa trong dòng TextBox.Text của chuỗi.
Lưu ý rằng khi TextBox có thuộc tính này và hộp nhận được sự tập trung, người dùng sẽ có thể chỉnh sửa và tương tác với dòng chuỗi XML hoàn chỉnh, bao gồm tất cả các thẻ biểu tượng. Khi tập trung bị mất, chữ văn sẽ tự động xử lý và hiển thị
SelectionStart
Xác định vị trí xuất phát của một lựa chọn văn bản, hoặc -1 nếu TextBox không có phạm vi chọn chữ. Nếu giá trị là -1 hoặc tương đương với CursorPosition , thì không có phạm vi chọn chữ đ
Mẫu mã
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
Nếu được đặt lại, nhập native vào trình duyệt thay vì bàn phím trên Roblox đã được tích hợp.
Text
Thuộc tính Text xác định nội dung được hiển thị bởi thành phần UI. Các thuộc tính visual của chuỗi
Có thể tạo ra các biểu tượng emoji (như cái 😃) và các biểu tượng khác. Các biểu tượng này được tác động bởi thuộc tính TextBox.TextColor3 . Các biểu tượng này có thể được pasted vào Script
Đặc tính này có thể chứa các ký tự mới, nhưng nó không thể được gõ trong các ký tự mới trong các cửộc sống. Tương tự, đặc tính này có thể chứa một nhân vật tab, nhưng nó sẽ được hiển thị như một dấu câu trong các cửộc sống.
Mẫu mã
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
Giao hàng đọc chỉ định TextBounds phản ánh kích thước chính xác của văn bản đã được hiển thị trong các khoảng cách. Với những lời khác, nếu bạn cố gắng để đặt văn bản vào một hình chữ nhật, thì định tuyến này sẽ phản ánh các kích thước tối thiểu của hình chữ nhậ
Bằng cách sử dụng TextService:GetTextSize() , bạn có thể dự đoán những gì TextBounds sẽ có trên một TextLabel được cung cấp một chuỗi, TextBox.Font , TextBox.TextSize và kích thước khung.
Mẫu mã
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
Thuộc tính này xác định màu của tất cả các chữ cái được hiển thị bởi một thành phần GUI . This property along with TextBox.Font , TextBox.TextSize và <
Quan trọng là text được đọc dễ dàng bởi người chơi! Hãy chắc chắn chọn màu có độ bão hòa thấp, như trắng, màu xám hoặc đen. Make sure the color of your text is contrasted by the TextBox.BackgroundColor3 of the UI element. If the element has a
Mẫu mã
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 xác định whether the user can change the Text through input. It is recommended to disable ClearTextOnFocus when this property is disabled, otherwise the Text could be cleared on-focus. This property is useful to make read-only TextBoxes from which content can be복사 trong game.
TextScaled
Thay vì sử dụng TextScaled, chúng tôi khuyến nghị bạn xem xét sử dụng AutomaticSize, một phương pháp mới để thu nhỏ UI một cách tự động mà sẽ cho bạn kết quả thị giác tốt nhất có thể.
Thuộc tính TextScaled xác định có phải text được nhân bằng cỡ nội dung trên toàn bộ khu vực UI không? Khi bật điều này, TextBox.TextSize được bỏ qua và TextBox.TextWrapped được tự động bật. Th
Khi sử dụng thuộc tính này cho UI screen-space, có thể đáng khuyến khích sử dụng một UITextSizeConstraint để hạn chế phạm vi các kích thước chữ khải.
TextScaled và AutomaticSize
Được khuyến nghị rằng các nhà phát triển tránh sử dụng TextScaled và điều chỉnh UI để tận dụng tính tự động thay đổi kích thước nhưng thay vào đó là tính tự động thay đổi kích thước. Dưới đây là sự khác biệt chính giữa hai tính năng này:
- TextScaled tăng cỡ nội dung (văn bản) để chấp nhận UI. Mà không có sự cân nhắc kỹ lưỡng, một số văn bản có thể trở nên không đọc được nếu bạn thu nhỏ quá nhỏ.
- Kích thước tự động thay đổi kích thước của UI để chứa nội dung.
Với AutomaticSize, bạn có thể điều chỉnh UI của bạn để chứa nội dung (văn bản) mà vẫn duy trì kích thước chữ (kiểu chữ). Để biết thêm thông tin về cách sử dụng kiểu chữ tự động, hãy xem bài viết UI tự động Size.
Chúng tôi khuyến nghị bạn không áp dụng cả TextScaled và AutomaticSize trên cùng một đối tượng UI. Nếu bạn áp dụng cả hai đặt tính này:
- Kích thước tự động xác định số lượng không gian tối đa mà một GuiObject có thể sử dụng (trong trường hợp này, text)
- TextScaled sử dụng không gian có sẵn được xác định bởi AutomaticSize, để thay đổi kích thước chữ vào không gian có sẵn, nhưng sẽ mở rộng lên đến kích thước chữ tối đa (100), nếu không có hạn chế kích thước
- Kết quả cuối cùng sẽ là: text đi đến 100 font size và UI object sẽ mở rộng để phù hợp với những chữ
Sử dụng cả AutomaticSize và TextScaled cùng một lúc có thể dẫn đến sự khác biệt về mức độ thu nhỏ lớn hơn so với khi AutomaticSize bị tắt.
Mẫu mã
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
Thuộc tính TextSize xác định chiều cao trong các ô chữ được hiển thị. Đơn vị được xác định bằng các ô, chứ không phải dấu (như được sử dụng trong hầu hết các chương trình chỉnh sửa tài liệu).Font "Legacy" không hỗ trợ thuộc tính này.
Mẫu mã
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
Thuộc tính TextStrokeColor3 định màu của cái đoạn, hoặc nét tương tự của chữ được hiển thị. This property and TextBox.TextStrokeTransparency định màu tương tự của cái đoạn.
Text stroke được hiển thị trước text thường và chỉ là 4 render thường của cùng một text ở +/- 1 pixel offsets trong mỗi hướng. Text stroke render hoạt động độc lập và giống nhau đối với TextBox.TextColor3 và TextBox.TextTransparency .
Mẫu mã
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
Thuộc tính TextStrokeTransparency cài đặt độ trong suốt của các đường nét hoặc nét bên trên của chữ được hiển thị. Thuộc tính này và TextBox.TextStrokeColor3 xác định các thuộc tính thị giác của các đường nét.
Hiệu ứng chữ là hiệu ứng chữ được tạo trước khi thực hiện chữ thường và chỉ đơn gi
Mẫu mã
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
Thuộc tính TextColor3 xác định độ trong suốt của tất cả các kết cấu chữ được hiển thị bởi một thành phần UI. Thuộc tính này cùng với TextBox.Font , TextBox.TextSize và Class.Toolbar.Text
Việc thay đổi chữ trong một vòng lặp sử dụng một số bằng văn bản là một cách tuyệt vời để thu hút sự chú ý của người chơi đến văn bản xuất hiện trên màn hình.
-- Count backwards from 1 to 0, decrementing by 0.1for i = 1, 0, -0.1 dotextLabel.TextTransparency = itask.wait(0.1)end
Mẫu mã
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
Khi bật, thuộc tính này sẽ hiển thị chữ trên nhiều dòng trong không gian của một GUI thành phần để TextBox.TextBounds sẽ không bao giờ vượt quá GuiBase2d.AbsoluteSize của thành phần GUI.
Điều này đạt được bằng cách phân các dòng văn bản thành nhiều dòng. Các dòng cắt sẽ ưa thích dấu trắng; nếu một từ không được cắt đứt vượt qua chiều rộng của thành phần, từ đó sẽ được chia thành nhiều dòng.
Nếu các dòng nối dòng tiếp theo gây ra sự thay đổi chiều cao dọc của văn bản (nhà cung cấp Y của TextBox.TextBounds ) quá chiều cao dọc của thành phần (nhà cung cấp Y của GuiBase2d.AbsoluteSize), thì dòng đó sẽ không được hiển thị.
Mẫu mã
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 xác định hướng dọc (X-axi) của văn bản được hiển thị trong không gian của một thành phần UI. Nó hoạt động tương tự như property text-align bên trái, bên phải và trung tâm (không có lựa chọn chỉnh sửa). Đối với Left và Right, mỗ
Thuộc tính này được sử dụng kết hợp với TextBox.TextYAlignment để xác định hoàn toàn vị trí trên cả hai trục. Thuộc tính này sẽ không ảnh hưởng đến các thuộc tính đọc TextBox.TextBounds và TextBox.TextFits .
Mẫu mã
-- 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 xác định vị trí dọc (Y-ax) của văn bản được hiển thị trong không gian của thành phần UI. Đối với Top và Bottom, văn bản được hiển thị như văn bản trên cùng/văn bản dưới cùng của khu vực hộp thoại. Đối vớ
Thuộc tính này được sử dụng kết hợp với TextBox.TextXAlignment để xác định hoàn toàn vị trí trên cả hai trục. Thuộc tính này sẽ không ảnh hưởng đến các thuộc tính đọc TextBox.TextBounds và TextBox.TextFits .
Mẫu mã
-- 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
Phương Pháp
CaptureFocus
Bắt client tập trung vào TextBox.
Lợi Nhuận
Mẫu mã
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)
ReleaseFocus
Bắt buộc khách hàng phải bỏ tập trung vào TextBox. Độ submitted của tham số cho phép bạn qua độ enterPressed trong sự kiện TextBox.FocusLost.
Món đồ này nên được sử dụng với một LocalScript để hoạt động như đã mong đợi trong chế độ trực tuyến.
Mã được hiển thị bên dưới sẽ buộc khách hàng phải thoát khỏi 'Texture' sau 5 giây kể từ khi nó được chọn:
local TextBox = script.Parent
TextBox.Focused:Connect(function()
wait(5)
TextBox:ReleaseFocus()
end)
Vui lòng lưu ý rằng ví dụ trên đã cho thấy nó đang ở trong một LocalScript, là con của một TextBox.
Tham Số
Lợi Nhuận
Mẫu mã
local textBox = script.Parent
local function onFocused()
task.wait(5)
textBox:ReleaseFocus()
end
textBox.Focused:Connect(onFocused)
Sự Kiện
FocusLost
Khi khách hàng bỏ cuộn dữ liệu ra khỏi TextBox - thường là khi khách hàng nhấp chuột / nhấp chuột ngoài TextBox. Điều này cũng kích hoạt nếu TextBox yêu cầu tập trung vào người dùng.
Nó có thể được sử dụng cùng với TextBox.Focused để theo dõi khi một TextBox thắng và mất tập trung.
Xem thêm các UserInputService.TextBoxFocused và UserInputService.TextBoxFocusReleased cho các chức năng tương tự sử dụng dịch vụ UserInputService.
Sự kiện này chỉ bắt đầu khi được sử dụng trong một LocalScript .
Tham Số
Một biểu tượngBoolean cho biết có phải nhấn Enter để mất tập trung ( true ) hay không ( false ).
Một InputObject instace cho thấy loại nhập nào gây ra việc mất tập trung của TextBox.
Mẫu mã
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
Khi TextBox lấy được sự tập trung - thường là khi một client nhấp vào một TextBox để bắt đầu nhập chữ. Điều này cũng kích hoạt nếu một TextBox buộc tập trung vào người dùng.
Nó có thể được sử dụng cùng với TextBox.FocusLost để theo dõi khi một TextBox thắng và mất tập trung.
Xem thêm các UserInputService.TextBoxFocused và UserInputService.TextBoxFocusReleased cho các chức năng tương tự sử dụng dịch vụ UserInputService.
Sự kiện này chỉ bắt đầu khi được sử dụng trong một LocalScript .
Mẫu mã
local textBox = script.Parent
local function onFocused()
print("Focused")
end
textBox.Focused:Connect(onFocused)