一个 TextLabel 会生成一个长方形,例如 Frame ,具有造型的文本。长方形可用于定义文本边界、文本缩放 ( TextLabel.TextScaled ) 和包装 ( TextLabel.TextWrapped 、 1> Class.TextLabel.TextYAlignment1> 和
此类包含控制文本显示的属性,例如 TextLabel.Font 和 TextLabel.TextColor3 。 所有通过单个文本标签渲染的文本都会有相同的视觉属性;多个文本标签对象必须使用在多个文本样式的渲染。要显示仅文本并隐藏右边,请将 Class.
TextService:GetTextSize() 可用于获取在 TextLabel 中给予字体大小、字体、框架大小的文本的大小(边界)。
一个 UITextSizeConstraint 对象可以用来限制文本的大小,并且有 TextLabel.TextScaled 启用。 建议文本的大小不小于 9,否则它可能无法对大多数用户可见。
代码示例
-- 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)
概要
属性
一个含有 TextLabel.Text 的副本,其中包含 TextLabel 正在渲染的内容。
确定使用的字体。
确定使用的字体。
在 TextLabel 中,纵向文本之间的间隔。
设置是否要将 TextLabel 设置为 GuiBase2d.Localize 或不是。
Class.TextLabel 最多可以显示的图形符号。
确定是否使用 Rich 文本格式对 TextLabel.Text 字符串进行渲染。
确定 UI 元素的渲染字符串。
在偏移中,UI 元素的文本的大小。
这个属性决定着渲染文本的颜色。
在渲染时,文本内容不能满足UI元素的空间。
确定是否要将文本在 UI 元素中缩放,以填充 UI 元素。
在偏移量下确定文本的行高。
确定文本渊的颜色。
确定文本渊(轮廓)的透明度。
确定渲染文本的透明度。
控制显示在此 TextLabel 中的文本的切分。
在 GUI 元素空间内确定是否包含多个行内的文本包围,并且切断多余的文本。
确定渲染文本的横向对齐。
确定渲染文本的垂直对齐。
确定是否同时输入。
对 GuiObject 的起始位置,相对于其绝对大小。
决定是否按照子内容进行调整。
确定 GuiObject 背景颜色。
确定 GuiObject 背景和边框的透明度。
确定 GuiObject 边框的颜色。
确定GuiObject边界的方式是与其尺寸相对于其他方式。
确定 GuiObject 边框的像素宽度。
决定是否在父 GUI 元素外的子元素 GuiObjects 会渲染。
确定玩家是否在 GuiObject 上主动按着。
确定 GuiButton 是否可以与或不可以与之交互,或 GuiState 的 GuiObject 是否正在变更或不变更。
控制使用 GuiObject 与 UIGridStyleLayout 时的排序顺序。
设置 GuiObject 将在游戏手柄选择器向下移动时选择。
设置 GuiObject 将在游戏手柄选择器移动到左侧时选择。
设置 GuiObject ,该选项卡将在游戏手柄选择器移动到右侧时被选中。
设置 GuiObject ,该选项卡将在游戏手柄选择器上移动时选择。
确定 GuiObject 的像素和向量位置。
确定GuiObject的旋转角度。
确定游戏手柄是否可以选择GUI。
覆盖游戏手柄的默认装饰。
游戏手柄选择 GuiObjects 的顺序。
确定 GuiObject 的像素和浮点大小。
设置 Size 轴,其父元素对象的大小将对应于其大小。
Class.GuiObject.BackgroundTransparency|BackgroundTransparency 和 TextTransparency 的混合属性。
确定 GuiObject 和它的子代是否会被渲染。
确定GuiObject 在其他人的相对位置上渲染的顺序。
描述 UI 元素的实际屏幕位置,以像素计。
描述 UI 元素的实际屏幕旋转度。
描述 UI 元素的实际屏幕大小,以像素计。
设置为“真”时,本地化将被应用到此 GuiBase2d 和它的子代。
一个引用 LocalizationTable 用于应用自动本地化到此 GuiBase2d 和它的子代。
在下向方向中自定义游戏手柄选择行为。
在左向向选择游戏手柄的行为进行自定义。
自定义游戏手柄选择行为在正确的方向。
在上向方向中自定义游戏手柄选择行为。
允许自定义游戏手柄选择移动。
方法
继承自GuiObject的方法- TweenPosition(endPosition : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : bool,callback : function):bool
顺滑地将一个 GUI 移到一个新的 UDim2 。
- TweenSize(endSize : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : bool,callback : function):bool
无缝地将 GUI 重新 UDim2 。
- TweenSizeAndPosition(endSize : UDim2,endPosition : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : bool,callback : function):bool
无缝地将 GUI 移到新的大小和位置。
活动
继承自GuiObject的活动发生在用户开始通过人类-计算机界面设备(鼠标按钮,触摸开始,键盘按钮,等等)进行交互时。
发生在用户改变通过人类-计算机界面设备(鼠标按钮向下,触摸开始,键盘按钮向下等)的交互方式时。
发生在用户停止通过人类-计算机界面设备(鼠标按钮向下,触摸开始,键盘按钮向下等)的交互。
当用户将鼠标移动到 GUI 元素时,它会发生。
当用户移动鼠标时,发生。
在用户移动鼠标时,每当它在 GUI 元素内时,它就会发生。
当用户回到鼠标轮时,火焰会在鼠标上方的 GUI 元素上燃烧。
当鼠标位于 GUI 元素上时,用户会滚动鼠标轮。
当 Gamepad 选择器对 GuiObject 时,发生了焦点错误。
当游戏手柄选择器停止对 GuiObject 的焦点时发生。
在玩家开始时,持续并停止长按 UI 元素。
- TouchPan(touchPositions : Array,totalTranslation : Vector2,velocity : Vector2,state : Enum.UserInputState):RBXScriptSignal
当玩家移动其手指时,触发 UI 元素。
- TouchPinch(touchPositions : Array,scale : number,velocity : number,state : Enum.UserInputState):RBXScriptSignal
在玩家使用两个手指在 UI 元素上执行叠捏或拉动动作时触发。
- TouchRotate(touchPositions : Array,rotation : number,velocity : number,state : Enum.UserInputState):RBXScriptSignal
在玩家使用两个手指在 UI 元素上执行旋转动作时触发。
在玩家在 UI 元素上执行滑动手势时触发。
当玩家在 UI 元素上执行点击手势时触发。
- SelectionChanged(amISelected : bool,previousSelection : GuiObject,newSelection : GuiObject):RBXScriptSignal
在游戏手柄选择移动到,离开或更改连接的 GuiBase2d 或任何子对象。
属性
ContentText
这个属性提供一个复制的 TextLabel.Text ,其中包含 TextLabel 正在渲染的内容。 这对于使用 Rich 文本的风格标签而言很有用。
例子
当 TextLabel.RichText 已启用时,TextLabel.ContentText 属性显示玩家所看到的文本。
<tbody><tr><td>否</td><td>\<b>你好,\<br/> 世界!\</b></td><td>\<b>你好,\<br/> 世界!\</b></td></tr><tr><td>真的</td><td>\<b>你好,\<br/> 世界!\</b></td><td>你好,世界!</td></tr></tbody>
丰富的文本 | 文本 | 内容文字 |
---|
Font
字体属性选择一个或多个预设字体,用户界面元素将使用它们来渲染其文本。一些字体有大写、标号和/或浅色变体(因为没有字体重量或字体风格属性)。
除了“传承”字体之外,每个字体都会以等同于 TextLabel.TextSize 属性的行高显示文本。 “代码”字体是唯一的单空格字体。它有一个独特的属性,每个角色都有完全相同的宽度和高度比例为 1:2。每个角色的宽度大约为 TextLabel.TextSize 属性。
此属性与 TextLabel.FontFace 属性保持同步。当设置字体时,字体面会设置为 Font.fromEnum(value)。
代码示例
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
FontFace 属性与字体属性类似,但允许设置不存在在字体列表中的字体。
此属性与 TextLabel.Font 属性保持同步。当设置字体时,字体将设置到相应的枚列值,或者在 Enum.Font.Unknown 如果没有匹配。
MaxVisibleGraphemes
这个属性控制显示在 TextLabel 上的最大图形数量(或文本单位)。它主要提供为“打字机效果”,在该角色一次显示。
改变属性不会改变可见的图形的位置或大小 - 布局将以所有图形都可见的假设计计算。
将属性设置为 -1 会禁用限制,并且显示整个 TextLabel.Text 。
代码示例
local TweenService = game:GetService("TweenService")
local textObject = script.Parent
local tweenInfo = TweenInfo.new(
4, -- it takes 4 seconds for the effect to complete
Enum.EasingStyle.Sine, -- typing starts fast and slows near the end
Enum.EasingDirection.Out
)
local tween = TweenService:Create(textObject, tweenInfo, {
-- Final value should be the total grapheme count
MaxVisibleGraphemes = utf8.len(textObject.ContentText),
})
tween:Play()
tween.Completed:Wait()
-- Reset the value so it can be tweened again
textObject.MaxVisibleGraphemes = -1
OpenTypeFeatures
OpenTypeFeaturesError
RichText
这个属性决定 whether the TextLabel 使用丰富的文本格式渲染 TextLabel.Text 字符。 丰富的文本使用 simple markup 标签来式定义字符的段落在 bold, italics, 指定颜色等方面。
要使用丰富的文本,请在 TextLabel.Text 字符串中包含格式标签。
Text
文本属性确定UI元素的内容。 视觉属性由 TextLabel.TextColor3 、 TextLabel.TextTransparency 、
您可以渲染表情符号(例如, 😃) 和其他符号. 这些特殊符号不受 TextLabel.TextColor3 属性的影响. 它们可以被粘贴到 Script 和 LocalScript 对象, 以及在属性窗口中的田.
这个属性可能包含新行字符,但它不能在属性窗口中输入新行字符。同样,这个属性可能包含一个Tab字符,但它将以空格而不是作为输入表示。
代码示例
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
只读属性 TextBounds 将在 Offsets 中反射所需的最小文本尺寸。 在其他 words 中,如果您尝试将文本放在长方形中,这个属性将反射您需要在长方形中才能正确处理文本的最小尺寸。
使用 TextService:GetTextSize() ,您可以预测 TextBounds 将在指定的 TextLabe字符串 上, TextLabel.Font , TextLabel.TextSize 和框架大小。
代码示例
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 元素渲染的文本的颜色。 此属性与 TextLabel.Font 、 TextLabel.TextSize 和 1> Class.TextLabel.Transparency1> 一起决定文本的视觉属性。 文本在
重要的是,文本必须易于阅读!请确保选择颜色具有小到无饱和度,例如白色、灰色或黑色。确保文本的颜色与 GUI 元素的背景颜色 TextLabel.BackgroundColor3 有一致。如果元素有透明背景,请尝试应用黑色 Class.TextLabel.TextStrokeColor3</
代码示例
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
TextFits
TextFits 是一个只读的属性,其值为 false 如果 TextLabel.Text 内容不能在 GuiBase2d.AbsoluteSize 中渲染时,当 Class.TextLabel.TextWrapped</
代码示例
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
TextScaled
而不是使用 TextScaled,我们建议您考虑使用 AutomaticSize,这是一个新的方法,可以动态为您提供最佳视觉效果。
TextScaled 属性确定是否将文本缩放到填满整个 UI 元素空间。 当这个启用时, TextLabel.TextSize 会被忽略, TextLabel.TextWrapped 会自动启用。 此属性对于文本在 BillboardGuis 中渲染 UI 元素有用。
当此属性用于屏幕空间用户界面时,可能需要使用 UITextSizeConstraint 来限制可能的文本大小范围。
文字放大和自动放大
建议开发者避免使用 TextScaled 并调整 UI 来利用自动大小属性。 这两个属性之间的核心差异如下:
- TextScaled 将内容(文本)缩放到容纳 UI 的大小。 无视绩效,如果缩放过小,一些文本可能会变得不可读取。
- 自动大小将内容扩展到 UI 上。
使用自动大小调整您的 UI 以满足内容(文本)的同时保持一致的字体大小。有关自动大小的更多信息,请参阅“UI 自动大小”文章。
我们建议您不要在同一个 UI 对象上应用 both TextScaled 和 AutomaticSize。 如果您应用了两个属性:
- 自动大小确定一个 GuiObject 在此可用的最大空间(在此例中,文本)
- TextScaled 使用自动大小确定的可用空间来缩放字体大小,以满足可用空间,这将扩展到最大字体大小(100),如果没有大小限制
- 最终结果将是:文本将进入 100 字体大小,UI 对象将扩展以容纳该文本
使用 both AutomaticSize 和 TextScaled 在同一时间使用可能会导致较大的缩放差异,而不会在自动大小关闭时。
代码示例
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,而不是点(在大多数文档编辑程序中使用)。 值得注意的是,“传承”字体的行高度会以不同的方式显示,并且不会完全匹配此属性。
这个属性和 TextLabel.TextColor3 , TextLabel.TextTransparency , TextLabel.TextStrokeColor3 和 1> Class.TextLabel.TextStrokeTransparency1> 都影响文本的渲染方式。
此属性超过 TextLabel.FontSize 因为它是一个数字而不是一个枚列。 在内部,Roblox 使用多个预处理角色图像为每个字体大小提供服务。 它选择最接近的大小为 TextSize,然后将该字体大小缩放到渲染文本。 在引入此属性之前,您只能从预处理大小
代码示例
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的颜色。 此属性和 TextLabel.TextStrokeTransparency 确定文本stroke的视觉属性。
文本渊是在正常文本之前渲染,它是通过+/-1像素 Offset在每个方向上的4个文本渊渲染。 文本渊渲染独立和相同的文本在+/-1像素 Offset在每个方向上。
代码示例
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的透明度。 此属性和 TextLabel.TextStrokeColor3 确定文本stroke的视觉属性。
文本渍是在正常文本之前渲染,它是通过在+/-1像素 Offset在每个方向上的4次渲染相同的文本在同一透明度的
代码示例
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属性的决定。 此属性以及 TextLabel.Font 、 TextLabel.TextSize 和 TextLabel.TextColor3 的组合决定了文本的视觉属性。 文本在文本stroke ( 1> Class.TextLabel.TextStrokeTransparency
使用数字 for-Loop 来显示屏幕上的文本是一个很棒的方法来吸引玩家的注意。
-- Count backwards from 1 to 0, decrementing by 0.1for i = 1, 0, -0.1 dotextLabel.TextTransparency = itask.wait(0.1)end
代码示例
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
启用时,该属性将在多个行中在 GUI 元素的空间中渲染文本,以便 TextLabel.TextBounds 不会超过 UI 元素的 GuiBase2d.AbsoluteSize。
这可以通过将长段的文本分为多个行来实现。 行间跳过会优先考虑空格;如果长段文本超出元素宽度,该文字将被分为多个行。
如果进一步的行空格会导致文本的垂直高度超过元素的垂直高度(TextLabel.TextBounds 的 Y 组成部分),那么该行将不会被渲染。
代码示例
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 元素矩形的中心。 对于中心,每个文本行都会在中心元素的角落。
这个属性与 TextLabel.TextYAlignment 一起使用,用于完全确定在两个轴上的文本对齐。此属性不会影响 read-only 属性 TextLabel.TextBounds 和 TextLabel.TextFits 。
代码示例
-- 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 元素的边缘。 对于中心,文本会在顶部边缘的文本边缘与元素的底部边缘之间形成平等空间。
这个属性与 TextLabel.TextXAlignment 一起使用,确定在两个轴上的文本对齐。 此属性不会影响 read-only 属性 TextLabel.TextBounds 和 TextLabel.TextFits 。
代码示例
-- 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