TextBox

显示已弃用

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

一个 文本框 允许玩家提供文本输入。它与一个 TextButton 的行为相同,除了单个文本框可以通过单击、点击或游戏手柄选择放入焦点之外。 在焦点中,玩家可以使用键盘来更改 Text 属性。

  • 如果没有文本,PlaceholderText 将会显示。这是有助于提示玩家输入数据类型或格式的提示。
  • 默认情况下,ClearTextOnFocus 属性已启用,确保在 TextBox 聚焦时不会有任何文本。这可能不是玩家应该编辑的文本。
  • Class.Toolbar.MultiLine|MultiLine 属性允许玩家输入多个行文本,并且在行文本中使用新行角角 ( \n )。

Class.ContextActionService 尊重 TextBox 键binds 并且会自动防止 key press 事件被传到与 ContextActionService:BindAction() 绑定的动作。UserInputService.InputBegan 和相关事件仍然会在 TextBox 处于焦点时发生。

集中状态

您可以检测到并更改 TextBox 的焦点状态:

  • 当对话框出现时,您可以使用 CaptureFocus 来确保玩家不会在可用时单击 TextBox ;您可以使用 ContextActionService:BindAction() 来将特定键绑定到使用此功能的 TextBox 上。当 TextBox 处于焦点时, Focused
  • 您可以使用 IsFocused 来检查是否有某个 TextBox 在焦点上。或使用 UserInputService:GetFocusedTextBox() 来检查是否有任何 TextBox 在焦点上。
  • 当玩家输入完成后,FocusLost 事件触发,表示是否按下用户按下“输入”以提交文本并且使用屏幕键盘上的移动和控制台键盘上的InputObject 导致焦点丢失。 当使用在移动和控
  • 如果在游戏过程中出现更重要的事件,您可以 ReleaseFocus 的 TextBox 以便返回玩家的键盘输入到您的游戏。

文本编辑

一个 TextBox 支持通过其 CursorPositionSelectionStart 属性来选择文本。使用 GetPropertyChangedSignal ,您可以检测到当选择发生变更时。另外,您可以在 TextBox 中复制并粘贴文本,启用基本剪贴板协助持

文本过滤通知 使用文本进行玩家间通信的游戏必须使用 TextService:FilterStringAsync()Chat:FilterStringAsync() 来过滤此文本。如果这未能正确过滤,你的游戏可能会受到审核动作。

代码示例

TextBox Secret Word

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

概要

属性

继承自GuiObject属性继承自GuiBase2d属性

方法

  • 强制客户端专注在 TextBox 上。

  • 返回 true 如果文本框是聚焦的,或 false 如果不是。

  • ReleaseFocus(submitted : bool):void

    强制客户端将 TextBox 从焦点移除。

继承自GuiObject方法

活动

继承自GuiObject活动继承自GuiBase2d活动

属性

ClearTextOnFocus

读取并联

确定是否单击TextBox会清除其TextBox.Text属性

ContentText

只读
未复制
读取并联

CursorPosition

读取并联

CursorPosition 确定文本 cursor 在字节上的偏移,或 -1 如果 TextBox 当前未被编辑。一个值 1 代表开始位置,在 Text 属性上。当与 SelectionStart 属性结合使用时,可以在 TextBox 中同时获得和设置选定的文

需要注意的是,这个属性的单位是 字节 ,而且许多不能用于 Unicode 字符,例如表情符号,长度在 1 字节之上。例实例,如果玩家在 TextBox 中输入 “Hello👋” – “Hello” 即时跟随手势标志 – 曲сор位置将为 10,而不是 7,因为 emoji 使用 4 字节。

代码示例

TextBox Selections

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

字体属性选择一个或多个预设 fonts 以便 UI 元素将其文本渲染到。一些字体有大写、标号和/或灯光变体(因为没有字体重量或字体风格属性)。

除了“传承”字体之外,每个字体都会以等同的行高显示文本。 “代码”字体是唯一的单空格字体。它有一个独特的属性,每个角色都有完全相同的宽度和高度比例为 1:2。每个角色的宽度大约是 TextBox.TextSize 属性的一半。

此属性与 TextBox.FontFace 属性保持同步。当设置字体时,字体面会设置为 Font.fromEnum(value)

代码示例

Cycle Font

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

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

FontFace

读取并联

FontFace 属性与字体属性类似,但允许设置不存在在字体列表中的字体。

此属性与 TextBox.Font 属性保持同步。当设置字体时,字体将设置到相应的枚列值,或者在 Enum.Font.Unknown 如果没有匹配。

LineHeight

读取并联

通过在 TextBox 中调整文字字体的大小来控制行高,作为多个字体的字体大小的倍数。允许值为 1.0 到 3.0,默认为 1.0。

MaxVisibleGraphemes

读取并联

此属性控制 TextBox 上显示的最大图形数量(或文本单位),无论是显示 TextBox.PlaceholderTextTextBox.Text

改变属性不会改变可见的图形的位置或大小 - 布局将以所有图形都可见的假设计计算。

将属性设置为 -1 会禁用限制,并且显示整个 TextBox.Text

MultiLine

读取并联

设置为“真”时,文本在 TextBox 内可以移动到多个行。这也可以让玩家使用 Enter 键来移动到新行。

OpenTypeFeatures

读取并联

OpenTypeFeaturesError

只读
未复制
读取并联

PlaceholderColor3

读取并联

设置当没有输入文本到 TextBox 时使用的文本颜色。

PlaceholderText

读取并联

设置当没有输入任何文字到 TextBox 时显示的文本。

RichText

读取并联

此属性决定 whether the TextBox 使用丰富的文本格式渲染 TextBox.Text 字符。 丰富的文本使用 simple markup 标签来式定义字符的段落在 bold、italic、指定颜色等方面。

要使用丰富的文本,请在 TextBox.Text 字符串中包含格式标签。

注意,当 TextBox 有此属性启用,且箱子获得焦点,用户将能够编辑并与完整的 XML 字符串,包括所有的格式标签,焦点会自动解析并渲染标签为 Rich 文本。当焦点丢失时,文本会自动解析并渲染标签为 Rich 文本。

SelectionStart

读取并联

确定文本选择的起始位置或-1,如果TextBox没有选择文本范围。 如果值是-1或相当于 CursorPosition ,那么文本选择的范围将为空。 此属性使用与鼠标位置相同的位置逻辑。 选择开始会大于鼠标位置,如果鼠标位置在选择开始的开结束,或鼠标位置

代码示例

TextBox Selections

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

ShowNativeInput

读取并联

如果设置为 true,输入 native 到平台是使用 Roblox 的内置键盘而不是 Roblox 的预置键盘。

Text

读取并联

文本属性确定 UI 元素的内容。 视觉属性由 TextBox.TextColor3TextBox.TextTransparency 、 Class.Toolbar.TextSize

您可以渲染表情符号(例如,😃)和其他符号。 这些特殊符号不受 TextBox.TextColor3 属性的影响。 它们可以被粘贴到 ScriptLocalScript 对象,以及在属性窗口中的字段。

这个属性可能包含新行字符,但它不能在属性窗口中输入新行字符。同样,这个属性可能包含一个Tab字符,但它将以空格而不是作为输入表示。

代码示例

Fading Banner

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

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

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

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

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

TextBounds

只读
未复制
读取并联

只读属性 TextBounds 将在 Offsets 中反射所需的最小文本尺寸。 在其他 words 中,如果您尝试将文本放在长方形中,这个属性将反射您需要在长方形中才能正确处理文本的最小尺寸。

使用 TextService:GetTextSize() , 您可以预测 TextBounds 将在指定的 TextLabel 上, TextBox.FontTextBox.TextSize 和框架大小。

代码示例

Dynamic TextBox Size

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

TextColor3

读取并联

这个属性确定了所有由 GUI 元素渲染的文本的颜色。 此属性以及 TextBox.FontTextBox.TextSize 和 1> Class.Toolbar.TextTransparency1> 将决定文本的视觉属性。 文本是在文本stroke

重要的是,文本容易被玩家阅读!请确保选择少于或无法饱和度的颜色,例如白色、灰色或黑色。确保文本的颜色与 UI 元素的背景 TextBox.BackgroundColor3 有一致。如果元素有透明背景,请尝试使用黑色 TextBox.TextStrokeColor3 来帮助与之

代码示例

Vowel Detector

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

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

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

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

TextDirection

读取并联

TextEditable

读取并联

TextEditable 决定用户是否可以通过输入 Text 来改变。 建议禁用 ClearTextOnFocus ,以便在此属性禁用时,文本 可以在焦点上清除。 此属性有用于在游戏中复制从中复制的文本。

TextFits

只读
未复制
读取并联

文本是否能够满足 TextBox 的限制。

TextScaled

读取并联

而不是使用 TextScaled,我们建议您考虑使用 AutomaticSize,这是一个新的方法,可以动态为您提供最佳视觉效果。

TextScaled 属性确定是否将文本缩放到填满整个 UI 元素空间。 当这个启用时,TextBox.TextSize 会被忽略,TextBox.TextWrapped 会自动启用。 此属性对于在 BillboardGuis 中 rend染文本元素有用。

当此属性用于屏幕空间用户界面时,可能需要使用 UITextSizeConstraint 来限制可能的文本大小范围。

文字放大和自动放大

建议开发者避免使用 TextScaled 并调整 UI 来利用自动大小属性。 这两个属性之间的核心差异如下:

  • TextScaled 将内容(文本)缩放到容纳 UI 的大小。 无视绩效,如果缩放过小,一些文本可能会变得不可读取。
  • 自动大小将内容扩展到 UI 上。

使用自动大小调整您的 UI 以满足内容(文本)的同时保持一致的字体大小。有关自动大小的更多信息,请参阅“UI 自动大小”文章。

我们建议您不要在同一个 UI 对象上应用 both TextScaled 和 AutomaticSize。 如果您应用了两个属性:

  • 自动大小确定一个 GuiObject 在此可用的最大空间(在此例中,文本)
  • TextScaled 使用自动大小确定的可用空间来缩放字体大小,以满足可用空间,这将扩展到最大字体大小(100),如果没有大小限制
  • 最终结果将是:文本将进入 100 字体大小,UI 对象将扩展以容纳该文本

使用 both AutomaticSize 和 TextScaled 在同一时间使用可能会导致较大的缩放差异,而不会在自动大小关闭时。

代码示例

Long Text Wrapping

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

TextSize

读取并联

TextSize 属性确定一个渲染文本的一行高度在 Offset 中。单位是 Offset,而不是点(在大多数文件编辑程序中使用)。“遗产”字体不持有此属性。

代码示例

"Kaboom!" Text

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

TextStrokeColor3

读取并联

TextStrokeColor3 属性设置绘制的文本的stroke或outline的颜色。 此属性和 TextBox.TextStrokeTransparency 确定视觉属性的文本stroke。

文本渊是在正常文本之前渲染,它是在+/-1像素偏移在每个方向上的4个文本渊渲染。 文本渊渲染独立和相同的文本在+/-1像素偏移在每个方向上。

代码示例

Text Highlight Oscillation

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

TextStrokeTransparency

读取并联

TextStrokeTransparency 属性设置绘制的文本的stroke或outline的透明度。 此属性和 TextBox.TextStrokeColor3 确定视觉属性的文本stroke。

文本渍是在正常文本之前渲染,它是通过在+/-1像素 Offset在每个方向上独立和相同的文本的四次渲染来显示的。

代码示例

Text Highlight Oscillation

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

TextTransparency

读取并联

在UI元素中渲染的所有文字的透明度都受到TextColor3属性的决定。 此属性与 TextBox.FontTextBox.TextSizeTextBox.TextColor3 的协作决定了文本的视觉属性。 文本在文字stroke ( 2>Class.Toolbar.TextStrokeTransparency2> ) 后会渲染。

使用数字 for-Loop 来显示屏幕上的文本是一个很棒的方法来吸引玩家的注意。


-- Count backwards from 1 to 0, decrementing by 0.1
for i = 1, 0, -0.1 do
textLabel.TextTransparency = i
task.wait(0.1)
end

代码示例

Fading Banner

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

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

TextTruncate

读取并联

控制显示在此 TextBox 中的文本的切分。

TextWrapped

读取并联

启用时,该属性将在多个行中在 GUI 元素的空间中渲染文本,以便 TextBox.TextBounds 不会超过 GUI 元素的 GuiBase2d.AbsoluteSize

这可以通过将长段的文本分为多个行来实现。 行间跳过会优先考虑空格;如果长段文本超出元素宽度,该文字将被分为多个行。

如果进一步的行空格会导致文本的垂直高度超过元素的垂直高度(TextBox.TextBounds),那么该行就不会渲染,因为GuiBase2d.AbsoluteSize的 Y 部分不会显示。

代码示例

Long Text Wrapping

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

TextXAlignment

读取并联

文本对齐在 UI 元素的空间内确定横向对齐(X 轴)的文本渲染。它与 CSS 文本对齐属性相同,左、右和中心值(不存在就位选项)。 对于左和右,文本会在左/右文本边界触摸 UI 元素矩形的中心。 对于中心,每个文本行都会在中心元素的角落。

这个属性与 TextBox.TextYAlignment 一起使用,用于完全确定在两个轴上的文本对齐。此属性不会影响 read-only 属性 TextBox.TextBoundsTextBox.TextFits

代码示例

Text Alignment

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

TextYAlignment

读取并联

文本对齐在 UI 元素的空间中确定垂直对齐(Y 轴)的文本渲染。 对于顶部和底部,文本会在顶部/底部文本边缘触摸 UI 元素的边缘。 对于中心,文本会在顶部边缘的文本边缘与元素的底部边缘之间形成平等空间。

这个属性与 TextBox.TextXAlignment 一起使用,用于完全确定在两个轴上的文本对齐。此属性不会影响 read-only 属性 TextBox.TextBoundsTextBox.TextFits

代码示例

Text Alignment

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

方法

CaptureFocus

void

强制客户端专注在 TextBox 上。


返回

void

代码示例

TextBox:CaptureFocus

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

IsFocused

返回 true 如果文本框是聚焦的,或 false 如果不是。


返回

ReleaseFocus

void

强制客户端将 TextBox 从焦点移除。 The submitted 参数允许您在 enterPressed 事件中覆盖 TextBox.FocusLost 参数。

此项目应用于使用 LocalScript 以在线模式中正常运行。

下面的代码将强制客户端在选择“Tex” 后的 5 秒内将注意力从“Tex” 上移除:


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

请注意,上面的示例假设它是在 LocalScript 中,作为 TextBox 的子脚本。

参数

submitted: bool
默认值:false

返回

void

代码示例

TextBox:ReleaseFocus

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

活动

FocusLost

客户端放置焦点离开 TextBox - 通常是客户端点击/点击 TextBox 外部时。 这也会触发,如果 TextBox 强制焦点放置在用户上。

它可以与 TextBox.Focused 一起使用来跟踪当 TextBox 获得和失去焦点时。

还请参阅 UserInputService.TextBoxFocusedUserInputService.TextBoxFocusReleased 以获取类似的功能,这些功能都依赖于 UserInputService 服务。

此事件仅在 LocalScript 中发生。

参数

enterPressed: bool

一个Boolean指示是否按Enter键以失去焦点()或不是()。

inputThatCausedFocusLoss: InputObject

一个 InputObject 实例,表示导致 TextBox 失焦的输入类型。


代码示例

TextBox.FocusLost1

local gui = script.Parent
local textBox = gui.TextBox
local function focusLost(enterPressed)
if enterPressed then
print("Focus was lost because enter was pressed!")
else
print("Focus was lost without enter being pressed")
end
end
textBox.FocusLost:Connect(focusLost)
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

TextBox 获得焦点时,它会发射 - 通常是客户端单击/点击 TextBox 开始输入文本时。 这也会发射,如果 TextBox 强制聚焦在用户上。

它可以与 TextBox.FocusLost 一起使用,以跟踪当 TextBox 获得和失去焦点时。

还请参阅 UserInputService.TextBoxFocusedUserInputService.TextBoxFocusReleased 以获取类似的功能,这些功能都依赖于 UserInputService 服务。

此事件仅在 LocalScript 中发生。


代码示例

Focus

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

ReturnPressedFromOnScreenKeyboard