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 đầu vào văn bản.Nó hành xử tương tự như một TextButton , ngoại trừ rằng một TextBox duy nhất có thể được đưa vào trọng tâm bằng cách nhấp chuột, chạm hoặc lựa chọn gamepad.Trong khi tập trung, người chơi có thể sử dụng bàn phím để thay đổi thuộc tính Text.
- Nếu không có văn bản, PlaceholderText sẽ hiển thị. Điều này hữu ích khi yêu cầu người chơi loại hoặc định dạng dữ liệu họ nên nhập.
- Mặc định, thuộc tính ClearTextOnFocus được bật và đảm bảo không có văn bản hiện có khi một TextBox được tập trung.Điều này có thể không mong muốn đối với văn bản nên được chỉnh sửa bởi người chơi.
- Thuộc tính MultiLine cho phép người chơi nhập nhiều dòng văn bản với các ký tự dòng mới ( \n ).
The ContextActionService tôn vinh các phím TextBox và sẽ tự động ngăn chặn sự kiện nhấn phím không được chuyển đến các hành động được gắn với ContextActionService:BindAction() .UserInputService.InputBegan và các sự kiện liên quan vẫn sẽ bắt lửa trong khi một TextBox đang ở trong tâm trí.
Tập trung trạng thái
Việc phát hiện và thay đổi trạng thái tập trung của một TextBox là có thể:
- Bạn có thể sử dụng CaptureFocus khi một hộp 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 ContextActionService:BindAction() để gắn một phím cụ thể vào tập trung một TextBox bằng cách sử dụng chức năng này.Khi một TextBox đi vào tập trung, sự kiện Focused bắt lửa.
- Bạn có thể phát hiện xem một TextBox nhất định có đang ở trong tâm điểm hay không bằng cách sử dụng IsFocused . Hoặc thay thế, UserInputService:GetFocusedTextBox() có thể được sử dụng để kiểm tra xem có bất kỳ TextBox nào đang ở trong tâm điểm hay không.
- Khi người chơi hoàn thành nhập văn bản, sự kiện FocusLost xảy ra, cho thấy nếu người dùng đã nhấn Enter để gửi văn bản cùng với InputObject gây mất tập trung.Khi sử dụng bàn phím trên màn hình trên di động và bảng điều khiển, ReturnPressedFromOnScreenKeyboard cũng có thể bắn.
- Nếu một số vấn đề quan trọng hơn xuất hiện trong lúc chơi trải nghiệm trò chơi, bạn có thể ReleaseFocus của TextBox để đảm bảo rằng lượt nhập của bàn phím của một người chơi trở lại 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ể phát hiện khi một lựa chọn thay đổi.Ngoài ra, người chơi có thể sao chép và dán văn bản vào một TextBox, bật khả năng hỗ trợ chuyển nhượng cơ bản.
Thông báo lọc văn bản Trò chơi dễ dàng giao tiếp người chơi với người chơi bằng văn bản, chẳng hạn như trò chuyện tùy chỉnh hoặc thẻ tên, phải lọc văn bản đó một cách thích hợp bằng TextService:FilterStringAsync() hoặc Chat:FilterStringAsync() .Nếu điều này không được thực hiện đúng cách, trò chơi của bạn có thể nhận được hành động kiểm duyệt.
Mẫu mã
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)
Tóm Tắt
Thuộc Tính
Xác định xem nhấp vào TextBox có xóa bỏ tính chất TextBox.Text của nó hay không.
Xác định offset của con trỏ văn bản bằng byte hoặc -1 nếu không có con trỏ.
Xác định phông chữ được sử dụng để render văn bản.
Xác định phông chữ được sử dụng để render văn bản.
Tăng khoảng cách giữa các dòng văn bản trong TextBox .
Số tối đa các grapheme mà TextBox có thể hiển trình diễn.
Khi được đặt thành true, văn bản bên trong TextBox có thể di chuyển sang nhiều dòng. Điều này cũng cho phép người chơi sử dụng phím enter để di chuyển sang một dòng mới.
Đặt màu văn bản được sử dụng khi chưa có văn bản 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 xem TextBox có hiển thị chuỗi TextBox.Text bằng cách sử dụng định dạng dữ liệu giàu hay không.
Xác định vị trí bắt đầu 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 lựa chọn.
Nếu được đặt thành true, nhập bản địa vào nền tảng được sử dụng thay vì bàn phím mặc định của Roblox.
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 của một thành phần UI trong khấu trừ.
Xác định màu của văn bản được hiển thị.
Xác định xem người dùng có thể thay đổi Text hay không.
Xem có phù hợp với các hạn chế của TextBox không.
Thay đổi xem liệu văn bản có được thay đổi kích cỡ để phù hợp với đối tượng GUI hiển thị nó.
Xác định chiều cao dòng của văn bản trong khấu trừ.
Xác định màu của đường viền văn bản (đường viền).
Xác định độ trong suốt của đường viền văn bản (đường viền).
Xác định độ trong suốt của văn bản được hiển thị.
Kiểm soát việc rút ngắn văn bản được hiển thị trong TextBox này.
Xác định xem văn bản cuộn vào nhiều dòng trong không gian thành phần GuiObject, cắt bỏ văn bản dư thừa.
Xác định sự xếp hàng ngang của văn bản được hiển thị.
Xác định độ dọc của văn bản được hiển thị.
Xác định xem yếu tố UI này có chìm nhập hay không.
Xác định điểm nguồn của một GuiObject , so với kích thước tuyệt đối của nó.
Xác định xem có thay đổi kích thước xảy ra dựa trên nội dung con không.
Xác định màu nền GuiObject .
Xác định độ trong suốt của nền và biên giới GuiObject .
Xác định màu của biên giới GuiObject .
Xác định theo cách nào biên giới GuiObject được xếp theo kích thước của nó.
Xác định chiều rộng pixel của biên giới GuiObject .
Xác định xem con cháu GuiObjects bên ngoài giới hạn của một yếu tố GUI cha có nên hiển thị hay không.
Xác định xem chuột của người chơi đang được nhấn chủ động trên GuiObject hay không.
Xác định liệu GuiButton có thể tương tác với nó hay không, hoặc nếu GuiState của GuiObject đang thay đổi hay không.
Kiểm soát thứ tự sắp xếp của GuiObject khi sử dụng với UIGridStyleLayout .
Bộ GuiObject được chọn khi công tắc gamepad được di chuyển xuống dưới.
Bộ GuiObject được chọn khi chọn gamepad bị di chuyển sang bên trái.
Bộ GuiObject được chọn khi chọn gamepad bị di chuyển sang bên phải.
Bộ GuiObject được chọn khi công tắc gamepad được di chuyển lên trên.
Xác định vị trí pixel và vectơ của GuiObject .
Xác định số độ mà GuiObject được xoay.
Xác định xem liệu GuiObject có thể được chọn bởi gamepad hay không.
Thay thế trang trí lựa chọn mặc định được sử dụng cho gamepad.
Thứ tự của GuiObjects được chọn bởi lựa chọn UI gamepad.
Xác định kích thước pixel và phương trình của GuiObject .
Đặt các trục Size mà GuiObject sẽ dựa trên, so với kích thước của cha của nó.
Một tính chất hỗn hợp của BackgroundTransparency và TextTransparency .
Xác định xem GuiObject và con cháu của nó sẽ được hiển thị hay không.
Xác định thứ tự mà một GuiObject render so với những người khác.
Mô tả vị trí màn hình thực của một thành phần GuiBase2d , trong điểm ảnh.
Mô tả sự xoay màn hình thực sự của một thành phần GuiBase2d , trong độ.
Mô tả kích thước màn hình thực của một thành phần GuiBase2d , bằng像素.
Khi được đặt thành true , bản địa hóa sẽ được áp dụng cho GuiBase2d và con cháu của nó.
Một tham chiếu đến một LocalizationTable để được sử dụng để áp dụng lok hóa tự động cho GuiBase2d và con cháu của nó.
Tùy chỉnh hành vi lựa chọn gamepad theo chiều xuống.
Tùy chỉnh hành vi lựa chọn gamepad theo hướng bên trái.
Tùy chỉnh hành vi lựa chọn gamepad theo hướng bên 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 lựa chọn gamepad.
Phương Pháp
Buộc khách hàng tập trung vào TextBox.
Trả về true nếu hộp văn bản được tập trung, hoặc false nếu không.
Buộc khách hàng loại bỏ TextBox.
- TweenPosition(endPosition : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : boolean,callback : function):boolean
Di chuyển một GUI mượt mà sang một mới 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
Di chuyển một GUI mượt mà sang một kích cỡ và vị trí mới.
Sự Kiện
Bắt lửa khi khách hàng cho phép tập trung của họ rời khỏi TextBox .
Bắt lửa khi TextBox nhận được sự tập trung.
Bị sa thải khi người dùng bắt đầu tương tác thông qua thiết bị Giao diện Con người - Máy tính ( nút chuột xuống, chạm bắt đầu, nút bàn phím xuống, v.v.).
Bị sa thải khi người dùng thay đổi cách họ tương tác thông qua thiết bị Giao diện Con người - Máy tính ( nút chuột xuống, chạm bắt đầu, nút bàn phím xuống, v.v.).
Bị sa thả khi người dùng ngừng tương tác thông qua thiết bị Giao diện Con người - Máy tính ( nút chuột xuống, chạm bắt đầu, nút bàn phím xuống, v.v.).
Bắt lửa khi người dùng di chuyển con trỏ vào một thành phần GUI.
Bắt lửa khi người dùng di chuyển con trỏ ra khỏi một thành phần GUI.
Bắt lửa mỗi khi người dùng di chuyển con trỏ trong khi nó nằm bên trong thành phần GUI.
Bắt lửa khi người dùng cuộn bánh xe chuột trở lại khi chuột ở trên một thành phần GUI.
Bắt lửa khi một người dùng cuộn bánh xoay chuột của họ về phía trước khi chuột ở trên một thành phần GUI.
Bị sa thả khi GuiObject được tập trung vào với lựa chọn Gamepad.
Bị sa thả khi lựa chọn Gamepad ngừng tập trung vào GuiObject.
Bắt lửa khi người chơi bắt đầu, tiếp tục và dừng việc giữ lâu UI.
- TouchPan(touchPositions : Array,totalTranslation : Vector2,velocity : Vector2,state : Enum.UserInputState):RBXScriptSignal
Bắt lửa khi người chơi di chuyển ngón tay 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 cử chỉ kéo hoặc kéo bằ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 lửa khi người chơi thực hiện cử chỉ xoay bằng hai ngón tay trên thành phần UI.
Bắt lửa khi người chơi thực hiện cử chỉ vuốt trên thành phần UI.
Bắt lửa khi người chơi thực hiện một cử chỉ vuốt trên thành phần UI.
- SelectionChanged(amISelected : boolean,previousSelection : GuiObject,newSelection : GuiObject):RBXScriptSignal
Bắt lửa khi lựa chọn gamepad di chuyển đến, rời hoặc thay đổi trong khu vực kết nối GuiBase2d hoặc bất kỳ con trai nào GuiObjects .
Thuộc Tính
ContentText
CursorPosition
Thuộc tính này xác định offset của con trỏ văn bản bằng byte hoặc -1 nếu TextBox hiện không đang được chỉnh sửa.Một giá trị của 1 đại diện cho vị trí trước khi có chữ nhật đầu tiên trong tính năng Text .Khi được sử dụng kết hợp với thuộc tính SelectionStart , bạn có thể cả lấy và đặt văn bản được chọn trong TextBox .
Lưu ý rằng các đơn vị của thuộc tính này là bytes và rất nhiều ký tự Unicode như emoji dài hơn 1 byte.Ví ví dụ / trường hợp, nếu một người chơi nhập "Hello👋" ("Hello" ngay lập tức theo sau bởi dấu hiệu tay chào), vị trí con trỏ sẽ là 10 , không phải 7 , vì emoji sử dụng 4 bayt.
Mẫu mã
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
Thuộc tính Phông chữ chọn một trong một số pre-defined fonts với đó UI sẽ hiển thị văn bản của nó.Một số phông chữ có in đậm, in đậm và/hoặc phiên bản nhẹ (vì không có tính năng trọng lượng phông chữ hoặc kiểu phông chữ).
Ngoại trừ phông chữ "Legacy", mỗi phông chữ sẽ hiển thị văn bản với độ cao dòng bằng với thuộc tính TextBox.TextSize .Phông chữ "Mã" là phông chữ duy nhất có một không gian.Nó có chức năng độc đáo mà mỗi nhân vật có tỷ lệ chiều rộng và chiều cao tương tự chính xác là 1:2.Chiều rộng của mỗi nhân vật là khoảng một nửa property TextBox.TextSize .
Thuộc tính này được giữ nhịp với thuộc tính TextBox.FontFace . Khi đặt Phông chữ, Phông chữ sẽ được đặt thành Font.fromEnum(value) .
Mẫu mã
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
Tính chất FontFace tương tự như tính chất Font, nhưng cho phép cài đặt phông chữ không tồn tại trong Enum Phông chữ.
Thuộc tính này được giữ đồng bộ với thuộc tính TextBox.Font .Khi đặt FontFace, phông chữ được đặt vào giá trị enum tương ứng, hoặc vào Enum.Font.Unknown nếu không có trùng lặp.
LineHeight
Kiểm soát chiều cao của các dòng, như một nhân của kích thước khung chữ của phông, bằng cách thay đổi khoảng cách giữa các dòng văn bản trong TextBox .Các giá trị hợp lệ dao động từ 1.0 đến 3.0, mặc định là 1.0.
MaxVisibleGraphemes
Thuộc tính này kiểm soát số tối đa của các grapheme (hoặc đơn vị văn bản) được hiển thị trên TextBox, bất kể nó có hiển thị TextBox.PlaceholderText hoặc TextBox.Text hay không.
Thay đổi thuộc tính không thay đổi vị trí hoặc kích thước của các grapheme có thể nhìn thấy - bố trí sẽ được tính toán như thể tất cả các grapheme đều có thể nhìn thấy.
Đặt thuộc tính thành -1 vô hiệu hóa giới hạn và hiển thị toàn bộ của TextBox.Text .
MultiLine
Khi được đặt thành true, văn bản bên trong TextBox có thể di chuyển sang nhiều dòng. Điều này cũng cho phép người chơi sử dụng phím enter để di chuyển sang một dòng mới.
OpenTypeFeatures
OpenTypeFeaturesError
RichText
Tính chất này xác định xem TextBox có hiển thị chuỗi TextBox.Text bằng cách sử dụng định dạng dữ liệu giàu hay không.Văn bản giàu sử dụng các thẻ đánh dấu đơn giản để định dạng các phần chuỗi bằng in đậm, in đậm, màu cụ thể và nhiều hơn nữa.
Để sử dụng văn bản giàu, chỉ cần bao gồm các thẻ định dạng trong chuỗi TextBox.Text.
Lưu ý rằng khi TextBox có chức năng này bật 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 XML hoàn chỉnh, bao gồm tất cả các thẻ định dạng.Khi tập trung bị mất, văn bản sẽ tự động phân tích và hiển thị các thẻ như văn bản giàu.
SelectionStart
Xác định vị trí bắt đầu của một lựa chọn văn bản, hoặc -1 nếu TextBox không có phạm vi văn bản được chọn.Nếu giá trị là -1 hoặc tương đương với CursorPosition, không có phạm vi văn bản được chọn.Tính chất này sử dụng cùng một logic vị trí như CursorPosition.SelectionStart sẽ lớn hơn CursorPosition nếu con trỏ ở đầu của một lựa chọn, và nhỏ hơn CursorPosition nếu con trỏ ở kết thúc.
Mẫu mã
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
Nếu được đặt thành true, nhập bản địa vào nền tảng được sử dụng thay vì bàn phím mặc định của Roblox.
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 hình ảnh của chuỗi được hiển thị trên màn hình được xác định bởi TextBox.TextColor3 , TextBox.TextTransparency , TextBox.TextSize , TextBox.Font , TextBox.TextScaled , TextBox.TextWrapped , TextBox.TextXAlignment và TextBox.TextYAlignment.
Việc hiển thị các biểu tượng cảm xúc (ví dụ, 😃) và các biểu tượng khác là có thể.Các biểu tượng đặc biệt này không bị ảnh hưởng bởi thuộc tính TextBox.TextColor3 .Chúng có thể được dán vào Script và LocalScript đối tượng, cũng như lĩnh vực bên trong cửa sổ Thuộc tính.
Tính chất này có thể chứa các ký tự dòng mới, tuy nhiên, không thể gõ các ký tự dòng mới trong cửa sổ Thuộc tính.Tương tự, thuộc tính này có thể chứa một nhân vật tab, nhưng nó sẽ hiển thị như một không gian thay vào đó.
Mẫu mã
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
Thuộc tính đọc chỉ TextBounds phản ánh kích thước tuyệt đối của văn bản được hiển thị trong khoảng cách.Nói cách khác, nếu bạn cố gắng để phù hợp văn bản vào một hình chữ nhật, tính chất này sẽ phản ánh kích thước tối thiểu của hình chữ nhật bạn cần để phù hợp với văn bản.
Sử dụng TextService:GetTextSize() , bạn có thể dự đoán TextBounds sẽ là gì 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ã
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
Tính chất này xác định màu của tất cả văn bản được hiển thị bởi một thành phần GuiObject .Tính chất này cùng với TextBox.Font , TextBox.TextSize và TextBox.TextTransparency sẽ xác định các thuộc tính hình ảnh của văn bản.Văn bản được hiển thị sau khi nét vẽ văn bản ( TextBox.TextStrokeColor3 ).
Quan trọng là văn bản dễ đọc 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, xám hoặc đen.Hãy chắc chắn rằng màu của văn bản của bạn được tương phản bởi TextBox.BackgroundColor3 của thành phần UI.Nếu yếu tố có nền trong suốt, hãy thử áp dụng một nền đen TextBox.TextStrokeColor3 để giúp tăng độ tương phản của văn bản với thế giới 3D phía sau nó.
Mẫu mã
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
TextEditable xác định xem người dùng có thể thay đổi Text thông qua nhập hay không.Khuyến nghị vô hiệu hóa ClearTextOnFocus khi tính năng này bị vô hiệu hóa, nếu không, Văn bản có thể được xóa khi tập trung.Tính năng này hữu ích để tạo TextBox chỉ đọc mà nội dung có thể được sao chép trong trò chơi.
TextScaled
Thay vì sử dụng TextScaled, chúng tôi khuyên bạn xem xét sử dụng AutomaticSize, một phương pháp mới để thay đổi kích thước UI theo thời gian thực mà sẽ mang lại cho bạn kết quả hình ảnh tốt nhất có thể.
Thuộc tính TextScaled xác định xem có nên mở rộng văn bản để lấp đầy toàn bộ không gian của thành phần UI không.Khi điều này được bật, TextBox.TextSize bị bỏ qua và TextBox.TextWrapped được bật tự động.Tính năng này hữu ích cho các thành phần UI hiển thị văn bản trong BillboardGuis .
Khi thuộc tính này được sử dụng cho giao diện người dùng không gian màn hình, có thể muốn sử dụng một UITextSizeConstraint để hạn chế phạm vi các kích thước văn bản có thể có.
TextScaled và AutomaticSize
Khuyến nghị các nhà phát triển tránh sử dụng TextScaled và điều chỉnh giao diện người dùng để tận dụng tính năng AutomaticSize thay thế.Dưới đây là sự khác biệt chính giữa hai thuộc tính:
- TextScaled tăng quy mô nội dung (văn bản) để phù hợp với giao diện người dùng. Nếu không xem xét cẩn thận, một số văn bản có thể trở nên khó đọc nếu thu nhỏ quá mức.
- Kích thước tự động thay đổi giao diện người dùng để chứa nội dung.
Với AutomaticSize, bạn có thể điều chỉnh giao diện người dùng của mình để thích ứng với nội dung (văn bản) trong khi duy trì một kích cỡ phông chữ nhất quán.Để biết thêm thông tin về cách sử dụng kích thước tự động, xem bài viết Kích thước tự động của UI.
Chúng tôi đề nghị rằng 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 thuộc tính:
- Kích thước tự động xác định số lượng tối đa không gian có sẵn mà một GuiObject có thể sử dụng (trong trường hợp này, văn bản)
- TextScaled sử dụng không gian có sẵn được xác định bởi AutomaticSize, để thay đổi kích thước phông chữ để phù hợp với không gian có sẵn, mà sẽ mở rộng lên đến kích thước phông chữ tối đa (100), nếu không có giới hạn kích thước
- Kết quả cuối cùng sẽ là: văn bản đi đến kích thước phông 100 và đối tượng UI sẽ mở rộng để phù hợp với văn bản đó
Sử dụng cả AutomaticSize và TextScaled cùng một lúc có thể dẫn đến sự khác biệt quy mô đáng kể hơn so với khi AutomaticSize bị tắt.
Mẫu mã
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
Thuộc tính TextSize xác định chiều cao trong khấu trừ của một dòng văn bản được hiển thị.Các đơn vị ở trong khấu trừ, không phải điểm (được sử dụng trong hầu hết các chương trình chỉnh sửa tài liệu).Phông chữ "Legacy" không có chứa thuộc tính này.
Mẫu mã
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
Thuộc tính TextStrokeColor3 đặt màu của đường viền, hoặc khung của văn bản được hiển thị.Tính chất này và TextBox.TextStrokeTransparency xác định các thuộc tính hình ảnh của đường viền văn bản.
Đường viền văn bản được hiển thị trước văn bản bình thường và chỉ đơn giản là 4 bản hiển thị cùng một văn bản trong +/- 1 pixel chênh lệch theo mỗi hướng.Việc hiển thị đường nét văn bản hoạt động độc lập và tương tự với TextBox.TextColor3 và TextBox.TextTransparency .
Mẫu mã
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
Thuộc tính TextStrokeTransparency đặt độ trong suốt của đường viền, hoặc khung của văn bản được hiển thị.Tính chất này và TextBox.TextStrokeColor3 xác định các thuộc tính hình ảnh của đường viền văn bản.
Đường viền văn bản được hiển thị trước văn bản bình thường và chỉ đơn giản là 4 bản hiển thị cùng một văn bản trong +/- 1 pixel chênh lệch theo mỗi hướng.Việc hiển thị đường nét văn bản hoạt động độc lập và tương tự với TextBox.TextColor3 và TextBox.TextTransparency .Vì đường viền văn bản chỉ là nhiều bản hiển thị khác nhau của cùng một độ trong suốt, tính chất này về cơ bản là nhân lên bốn lần (ví dụ:một TextStrokeTransparency của 0.5 xuất hiện tương tự như TextTransparency của 0.0625, hoặc 0.5^4).Do đó, được khuyến nghị đặt TextStrokeTransparency thành một giá trị trong phạm vi từ 0.75 đến 1 để có được hiệu ứng tinh tế hơn.
Mẫu mã
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
Thuộc tính TextColor3 xác định độ trong suốt của tất cả các văn bản được hiển thị bởi một thành phần UI.Tính chất này cùng với TextBox.Font , TextBox.TextSize và TextBox.TextColor3 sẽ xác định các thuộc tính hình ảnh của văn bản.Văn bản được hiển thị sau khi nét vẽ văn bản ( TextBox.TextStrokeTransparency ).
Việc mờ dần văn bản trong sử dụng vòng lặp số 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ã
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
Khi bật, thuộc tính này sẽ hiển thị văn bản trên nhiều dòng trong không gian của thành phần TextBox nên TextBox.TextBounds sẽ không bao giờ vượt quá GuiBase2d.AbsoluteSize của thành phần GUI.
Điều này được thực hiện bằng cách phá vỡ các dòng văn bản dài thành nhiều dòng.Các dòng phá vỡ sẽ ưu tiên không gian trống; nếu một từ dài không bị phá vỡ vượt quá chiều rộng của thành phần, từ đó sẽ bị phá vỡ thành nhiều dòng.
Nếu việc phá vỡ thêm dòng sẽ gây ra chiều cao ngang của văn bản (thành phần Y của TextBox.TextBounds) vượt quá chiều cao ngang của thành phần (thành phần Y của GuiBase2d.AbsoluteSize) thì dòng đó sẽ không được hiển thị.
Mẫu mã
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 xác định sự cân bằng ngang (trục X) của văn bản được hiển thị trong không gian của thành phần UI.Nó hoạt động tương tự như tính chất text-align của CSS, với các giá trị bên trái, bên phải và trung tâm (không có tùy chọn cân bằng).Đối với Trái và Phải, văn bản được hiển thị một cách khiến cho giới hạn văn bản bên trái/phải chỉ chạm vào mép của khối chữ nạp UI.Đối với Trung tâm, mỗi dòng văn bản được xoay theo trung tâm của UI element hình chữ nhật.
Tính năng này được sử dụng kết hợp với TextBox.TextYAlignment để xác định hoàn toàn vị trí dòng chữ trên cả hai trục.Tính chất này sẽ không ảnh hưởng đến các tính chất chỉ đọc TextBox.TextBounds và TextBox.TextFits .
Mẫu mã
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 xác định sự căn chỉnh dọc (trục Y) của văn bản được hiển thị trong không gian của thành phần UI.Đối với Trên và Dưới, văn bản được hiển thị sao cho giới hạn trên/dưới chỉ chạm vào mép của UI element hình chữ nhật.Đối với Trung tâm, văn bản được hiển thị sao cho có một khoảng trống bằng nhau từ giới hạn trên của văn bản đến đỉnh của thành phần và giới hạn dưới của văn bản đến đáy của thành phần.
Tính năng này được sử dụng kết hợp với TextBox.TextXAlignment để xác định hoàn toàn vị trí dòng chữ trên cả hai trục.Tính chất này sẽ không ảnh hưởng đến các tính chất chỉ đọc TextBox.TextBounds và TextBox.TextFits .
Mẫu mã
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
Phương Pháp
CaptureFocus
Buộc khách hàng tập trung vào TextBox.
Lợi Nhuận
Mẫu mã
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)
ReleaseFocus
Bắt buộc khách hàng loại bỏ TextBox. Tham số submitted cho phép bạn có thể vượt qua tham số enterPressed trong sự kiện TextBox.FocusLost.
Vật phẩm 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ị dưới đây sẽ buộc khách hàng loại bỏ việc tập trung vào 'TextBox' 5 giây sau khi nó được chọn:
local TextBox = script.Parent
TextBox.Focused:Connect(function()
wait(5)
TextBox:ReleaseFocus()
end)
Xin hãy lưu ý rằng ví dụ trên cho thấy nó nằm trong một LocalScript, là con của một TextBox.
Tham Số
Lợi Nhuận
Mẫu mã
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)
Sự Kiện
FocusLost
Bắt lửa khi khách hàng cho phép tập trung của họ rời khỏi TextBox - thường là khi khách hàng nhấp/nhấn bên ngoài TextBox.Điều này cũng bắn 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.Focused để theo dõi khi một TextBox nhận được và mất tập trung.
Xem thêm các chức năng tương tự dựa trên dịch vụ UserInputService UserInputService.TextBoxFocused và UserInputService.TextBoxFocusReleased để có các chức năng tương tự dựa trên dịch vụ UserInputService.
Sự kiện này chỉ bắt lửa khi được sử dụng trong một LocalScript .
Tham Số
Một boolean chỉ ra liệu khách hàng đã nhấn Enter để mất tập trung ( true ) hay không ( false ).
Một ví dụ InputObject cho thấy loại đầu vào gây mất tập trung của TextBox.
Mẫu mã
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
Bắt lửa khi TextBox nhận được sự tập trung - thường là khi một khách hàng nhấp vào một TextBox để bắt đầu nhập chữ.Điều này cũng bắn 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 nhận được và mất tập trung.
Xem thêm các chức năng tương tự dựa trên dịch vụ UserInputService UserInputService.TextBoxFocused và UserInputService.TextBoxFocusReleased để có các chức năng tương tự dựa trên dịch vụ UserInputService.
Sự kiện này chỉ bắt lửa khi được sử dụng trong một LocalScript .
Mẫu mã
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)