一個 TextButton 與 TextLabel 相同地處理在與 GuiButton 的額外行為相關的渲染。它定義了與 TextLabel 相同的文字渲染程式。
您可以設置 TextButton.TextTransparency 為 1 來禁用文字渲染。這將剩下一個空白的正方形,可以作為按鈕使用。
範例程式碼
-- Place this code in a LocalScript in a TextButton
local textButton = script.Parent
local counter = 0
textButton.Text = "Click me!"
local function onActivated()
counter = counter + 1
textButton.Text = "Clicks: " .. counter
end
textButton.Activated:Connect(onActivated)
概要
屬性
一個含有 TextButton.Text 的副本,其中包含 TextButton 正在渲染的內容。
決定要使用的字體。
決定要使用的字體。
在 TextButton 中,調整文字之間的空格。
設定是否要將 TextButton 變成 GuiBase2d.Localize 或不是。
Class.TextButton 可以顯示的最大圖形數量。
決定是否要使用強力的文字格式將 TextButton.Text 字串顯示為 rich 文字。
決定 UI 元素所 rend染的字串。
在偏移數中介面元素的文字大小。
決定顯示文字的顏色。
是否表示文字按鈕的文字是否能夠包含在其尺寸內。
變更文字按鈕內容的大小。
在偏移量中決定文字的行高。
確定文字擊畫的顏色。
決定文字筆記的透明度。
決定渲染文字的透明度。
控制此文字按鈕顯示的文字的切換。
決定是否將文字包含在 GUI 元素空間內的多個行內,並且將多餘的文字刪除。
決定渲染文字的水平對稱。
決定渲染文字的垂直齕列。
決定是否在滑鼠悠閒時自動變更按鈕的顏色。
如果 GUI 元素可見,否則鼠標將不會鎖定,除非右鍵已按下。
一個Boolean 屬性,表示對象是否已選擇。
設定按鈕按鈕的造型,以基於預設造型的列表。
決定這個輸入是否會沉沒在此 UI 元素。
對 GuiObject 的起始點,相對於其絕對大小。
決定是否會在基於兒童內容的重新縮放。
決定 GuiObject 背景顏色。
決定 GuiObject 背景和邊框的透明度。
決定 GuiObject 邊框的顏色。
決定GuiObject邊框的大小與邊框相對位置。
決定 GuiObject 邊框的像素寬度。
決定是否在超級父元素 GUI 元素外會成像子元素 GuiObjects。
決定玩家的滑鼠是否正在按在 GuiObject 上或不是。
決定 GuiButton 是否可以與或不與互動,或是否要檢查 GuiState 的 GuiObject 是否正在變更或不變更。
使用 GuiObject 時,控制 UIGridStyleLayout 的排序順序。
設定 GuiObject 將在遊戲控制器選擇器向下移動時選擇。
設定 GuiObject ,當遊戲控制器選擇器移動到左邊時會選擇。
設置 GuiObject 將在遊戲控制器選擇器移動到右邊時選擇。
設定 GuiObject 將在遊戲控制器選手柄上移動時選擇。
決定 GuiObject 的像素和矢量位置。
確定 GuiObject 旋轉的程度。
確認遊戲控制器可以選擇 GUI 嗎。
覆蓋遊戲手柄的預設裝飾。
遊戲控制器選擇 GuiObjects 的程序順序。
決定 GuiObject 的像素和浮點大小。
Class.GuiObject.BackgroundTransparency|BackgroundTransparency 和 TextTransparency 的混合屬性。
決定是否要渲染 GuiObject 和它的子孫。
決定 GuiObject 與其他人相對的排名。
描述介面元素的實際屏幕位置,以幣晃。
描述 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 移動到新的尺寸和位置。
活動
活動 繼承自 GuiButton按鈕啟用時會發生火焰。
發射時,鼠標完全離開時按一下 GUI 按鈕。
發射時,鼠標位於 GUI 對物件的左下狀態。
發射時,左鍵對象已釋放時,發射 GUI 對物件。
發射時,鼠標完全按下按鈕。
發射時,鼠標在 GUI 對物件上的右鍵狀態。
發射對象上的右鍵時。
發生時間發生時,使用者開始使用人機交互裝置 (滑鼠按鈕, 觸摸開始, 鍵盤按鈕等等)。
使用者改變人機交互裝置 (滑鼠按鈕、觸摸開始、鍵盤按鈕等) 時發生時間。
發生時間當使用者停止使用人類電腦介面裝置 (滑鼠按鈕關閉, 觸摸開始, 鍵盤按鈕下等) 時。
使用者移動滑鼠到 GUI 元素時會發生火焰。
發射一個使用者從 GUI 元素移動滑鼠時。
在使用者移動鼠標時,發射 GUI 元素內的任何時間。
發射時,使用者將鼠標輪向返回,當滑鼠位於一個 GUI 元素上。
發射時,使用者將鼠標輪向前移動,當滑鼠位於 GUI 元素上。
發射時 GuiObject 與遊戲控制器選擇器專注。
發射時Gamepad選擇器停止專注在GUI對象上。
玩家開始時、繼續和停止按長按 UI 元素。
- TouchPan(touchPositions : Array,totalTranslation : Vector2,velocity : Vector2,state : Enum.UserInputState):RBXScriptSignal
玩家移動指針時發射。
- TouchPinch(touchPositions : Array,scale : number,velocity : number,state : Enum.UserInputState):RBXScriptSignal
發射時玩家使用兩個手指在 UI 元素上執行點擊或拉動動作時。
- TouchRotate(touchPositions : Array,rotation : number,velocity : number,state : Enum.UserInputState):RBXScriptSignal
發生時玩家使用兩個手指在 UI 元素上執行旋轉動作時。
發射玩家在介面元素上執行擺動手勢時。
發射玩家在介面元素上執行點擊動作時。
- SelectionChanged(amISelected : bool,previousSelection : GuiObject,newSelection : GuiObject):RBXScriptSignal
發射在遊戲控制器選擇移動到,離開,或變更連接的 GuiBase2d 或任何子選項 GuiObjects。
屬性
ContentText
這個屬性提供一個複製TextButton.Text的副本,其中包含準確的內容,由TextButton所渲染。這很有用,因為它可以用於移除使用於豐富文字的樣式標籤。
範例
當 TextButton.RichText 啟用時, TextButton.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
字體屬性選擇幾個預設字體,與UI元素合成其文字。一些字體有強烈的義大利體、標籤和/或淺色變體 (因為沒有字體重量或字體風格屬性).
除了 "Legacy" 字體之外,每個字體都會以相同的線距等同於 TextButton.TextSize 屬性。 "Code" 字體是唯一的單行字體。它有獨特的屬性,每個角色都有完全相同的寬度和高度比率。每個角色的寬度大約是 TextButton.TextSize 的一
此屬性與 TextButton.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 屬性與字體屬性相似,但可以設定不存在於字體枚表中的字體。
此屬性與 TextButton.Font 屬性保持同步。設置字體時,字體將設置到相應的枚列值,或者在 Enum.Font.Unknown 如果沒有匹配。
MaxVisibleGraphemes
此屬性控制在 TextButton 上顯示的最大圖形數量 (或文字單位) 。它主要提供一個簡單的方法來創建 "輸入效果",在哪裡角色會一次出現。
變更屬性不會改變可見的圖形的位置或大小 - 結構將以可見的所有圖形為準確度計算。
將屬性設為 -1 會禁用限制,並且顯示整個 TextButton.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
此屬性決定 TextButton 是否以重新排列的方式渲染 TextButton.Text 字串。重新排列使用簡易標記標籤來格式範圍的字串在 bold、italic、指定顏色等方面進行風格化。
要使用豐富的文字,您只需要在 TextButton.Text 字串中包含格式標籤。
Text
文字屬性決定內容由UI元素渲染。視覺屬性由 TextButton.TextColor3、Class.TextButton.TextTrans
您可以渲染表情符號 (例如,😃) 和其他符號。這些特殊符號不受 TextButton.TextColor3 屬性的影響。這些內容可以被貼到 Script 和 LocalScript 對象,以及在 1> Properties 窗口中的字段。
此屬性可能包含新行字符,但它不是可以在屬性窗口中輸入新行字符。同樣,此屬性可能包含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 反射畫面上的文字大小。 用其他話來說,如果您嘗試將文字寫進矩形,這個屬性將反射您需要才能寫入文字的最小尺寸。
使用 TextService:GetTextSize() ,您可以預測文字框將在指定的文字標籤上, TextButton.Font , TextButton.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 元素所渲染的文字的顏色決定。這個屬性以及 TextButton.Font、TextButton.TextSize 和 1> Class.TextButton.Transparency1> 將決定文字的視
重要的是,玩家容易讀取文字!請確保選擇滋衍度小於或等於 TextButton.BackgroundColor3 的顏色,例如白色、灰色或黑色。請確保文字的顏色與介面元素的背景顏色相對應。如果元素有透明背景,請使用黑色 Class.TextButton
範例程式碼
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
TextScaled
而不是使用 TextScaled,我們建議您考慮使用 AutomaticSize ,這是一種新的方法來動態尺寸用戶界面,以獲得最佳視覺效果。
TextScaled 屬性決定是否要將文字縮放到整個 UI 元素的空間。 啟用此屬性時, TextButton.TextSize 會被忽略,而 TextButton.TextWrapped 則自動啟用。此屬性對於文字-渲染 UI 元素內的 BillboardGuis 有用。
當此屬性用於屏幕空間 UI 時,可能會有需要使用 UITextSizeConstraint 來限制可能的文字大小範圍。
文字大小和自動大小
建議開發人員避免使用 TextScaled 並調整 UI 以取得自動大小屬性的優勢。 這裡是兩個屬性之間的核心差別:
- TextScaled 將內容 (text) 調整為容納 UI 的大小。 若不小心,一些文字可能會因為縮放而變得難以讀取。
- 自動大小會將內容調整為 UI 。
使用自動大小即可調整您的 UI 來容納內容 (文字) ,並且保持一致的字體大小。有關自動大小的更多資訊,請參閱「UI 自動大小」文章。
我們建議您不要在同一個 UI 對物件上應用兩種文字大小和自動大小。如果您應用兩種屬性:
- 自動大小將可用空間的最大值決定 (在此案例中,文字)
- TextScaled 使用自動大小確定的可用空間來調整字體大小,以符合可用空間,這會在最大字體大小 (100) 如果沒有尺寸限制
- 結果將是:文字將以 100 字體大小顯示,並且介面對象將會擴展以容納這些文字
使用自動大小和文字大小兩個自動減少器,可能會在自動大小關閉時發生較大的縮放差異。
範例程式碼
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 屬性決定一條渲染文字的高度。單位是在偏移量中,不是點 (在大多數文件編輯程式中使用)。「傳承」字體不持有此屬性。
範例程式碼
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 屬性設定文本渲染時的輪廓或輪廓顏色。這個屬性和 TextButton.TextStrokeTransparency 決定文字輪廓的視覺屬性。
文字擊箭頭是在正常文字和前文本中渲染,並且只是在+/-1個Pixel衝擊擊箭頭的四個渲染在每個方向中作動。文字擊箭頭渲染是獨立並且相同的4個擊箭頭在+/-1個Pixel衝擊擊箭頭的四個渲染。
範例程式碼
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 屬性設定結束時文字的層級透明度,或稱外部色。這個屬性和 TextButton.TextStrokeColor3 決定文字外部色的視覺特性。
文字擊線在正常文字和簡單的文字擊線之前會渲染,並且在每個方向的 +/- 1 個 pixel 的距離
範例程式碼
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
TextColor3 屬性決定所有由 UI 元素渲染的文字的透明度。這個屬性以及 TextButton.Font 、 TextButton.TextSize 和 TextButton.TextColor3 會決定文字的視覺屬性。文字會在文字擊押後 ( 1>
使用數字 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 元素的空間中渲染文字,讓 TextButton.TextBounds 永遠不會超過 UI 元素的 GuiBase2d.AbsoluteSize。
這可以通過將長文字分為多個行來達到此目的。 行分頁會優先擁有空格;如果長文字沒有空格,文字會被分為多個行。
如果再次行斷會導致文本的垂直高度超過元素的垂直高度 (TextButton.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
TextXAlignment 決定了文本在 UI 元素的空間中的水平正렬 (X 軸) 。它與 CSS 文字對齊屬性相同,左,右和中心值 (沒有左邊/右邊文本範圍)。對於左和右,文本會在文本元素的左邊/右邊範圍內正確對稱。對於中心,每個文字行都會在文本元素的中心值上正確對稱
此屬性與 TextButton.TextYAlignment 一起使用,以完全確定在兩個軸上的文字對齊。此屬性不會影響閱取專用屬性 TextButton.TextBounds 和 TextButton.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 軸的形式呈現,兩個上方/下方的文字範圍分別擁有文字元素的邊緣。對於中間,文字會以 Y 軸的形式呈現,兩個上方/下方的文字範圍分別為兩個元素的�
此屬性與 TextButton.TextXAlignment 一起使用,以完全確定在兩個軸上的文字對齊。此屬性不會影響閱取專用屬性 TextButton.TextBounds 和 TextButton.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