TextBox

顯示已棄用項目

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

一個 文字框 允許玩家提供文字輸入。它與 TextButton 相同,除了單個文字框可以通過點擊、點擊或遊戲手柄選擇放置在焦點外。在焦點中,玩家可以使用鍵盤來變更 Text 屬性。

  • 如果沒有文字,PlaceholderText 將會顯示。這是一種提示玩家輸入資料的種類或格式的好方法。
  • 預設值下,ClearTextOnFocus 屬性啟用,確保沒有任何文字在 TextBox 專注時存在。這可能不是玩家所編輯的文字。
  • Class.Toolbar.MultiLine|MultiLine 屬性允許玩家輸入多個行文本,並且使用新行標角色( \n )來輸入新行。

Class.ContextActionService 榮譽 ContextActionService:BindAction() 的文字輸入鍵綁,並且會自動防止按鍵綁定的鍵綁事件傳送至 UserInputService.InputBegan 。 1>Class.UserInputService.InputBegan1> 和相關事件將在 TextBox 專注時發生。

專注狀態

可以偵測並變更文字框的焦點狀態:

  • 當對話框出現時,您可以使用 CaptureFocus 來讓玩家不用點擊 TextBox 當它變成可用時;您可以使用 ContextActionService:BindAction() 來將特定鍵綁定到使用此功能的 TextBox ;當 TextBox 來焦點時, Class.ContextAction
  • 您可以使用 IsFocused 來檢查是否有某個 TextBox 在焦點上。或者, UserInputService:GetFocusedTextBox() 可以用來檢查任何 TextBox 是否在焦點上。
  • 玩家輸入文字完成後, FocusLost 事件會發生,表示是否按下 Enter 以提交文字以及與瞄準模式 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.Text 屬性

ContentText

唯讀
未複製
平行讀取

CursorPosition

平行讀取

CursorPosition 決定了文字指针在字節上的偏移,或 -1 如果 TextBox 目前沒有編輯。一個值的 1 代表開始位置,位於第一個字節前的位置。當與 Text 屬性結合時,可以以兩個方式獲得和設置文字在文字框

請注意,這個屬性的單位是 位元 ,而且很多的矮號字符,例如表情符號,都是 超過 1 位 。例個體、實例,如果玩家在 TextBox 中輸入「Hello👋」 – 「Hello」即刻跟隨手勢標誌 – 曲標位置將會是 10,而不是 7,因為矮號使用 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元素會渲染其文字的字體。一些字體有強烈的、標籤和/或淺色變體 (因為沒有字體重量或字體風格屬性).

除了 "Legacy" 字體之外,每個字體都會以 TextBox.TextSize 屬性的線距等於。 "Code" 字體是唯一的單行距字體。它有每個角色都有完全相同的寬度和高度比率的 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

平行讀取

設定為"真"時,文字內的文字框能夠移動至多個行。這也讓玩家可以使用" Enter "鍵來移動至新行。

OpenTypeFeatures

平行讀取

OpenTypeFeaturesError

唯讀
未複製
平行讀取

PlaceholderColor3

平行讀取

設定沒有輸入任何文字到 TextBox 時使用的文字顏色。

PlaceholderText

平行讀取

設定沒有輸入任何文字到 TextBox 時顯示的文字。

RichText

平行讀取

此屬性決定 TextBox 是否使用強力文字格式渲染 TextBox.Text 字串。 Class.Toolbar.Text 使用簡單的標記標籤來格式化字串的標籤。

要使用豐富的文字,您只需要在 TextBox.Text 字串中包含格式標籤。

注意,當 TextBox 有此屬性啟用,且盒子獲得專注時,用戶將能夠編輯並與完整的XML字串交互,包括所有的格式標籤。當專注失去時,文字將自動解析並渲染標籤為重文字。

SelectionStart

平行讀取

確定文字選擇的起始位置,或者 -1 如果 TextBox 沒有選擇範圍。如果值是 -1 或相當於 CursorPosition ,沒有選擇範圍。此屬性使用相同的位置論理,如 CursorPosition。選擇開始會比 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

平行讀取

如果設為真,輸入原生到平台是使用 Roblox 的預設鍵盤而不是 Roblox 的預設鍵盤。

Text

平行讀取

文字屬性決定內容由UI元素渲染。視覺屬性由 TextBox.TextColor3TextBox.TextTransparency

您可以渲染表情符號 (例如,😃) 和其他符號。這些特殊符號不受 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 反射畫面上的文字大小。 用其他話來說,如果您嘗試將文字寫進矩形,這個屬性將反射您需要才能寫入文字的最小尺寸。

使用 TextService:GetTextSize() ,您可以預測文字框將在指定的文字標字串上, 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> 會決定文字的視����

重要的是,文字一定要讓玩家容易讀取!請確保選擇滋飽度小於或等於 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 將自動啟用。 此屬性對於文字-渲染 UI 元素內的 BillboardGuis 很有用。

當此屬性用於屏幕空間 UI 時,可能會有需要使用 UITextSizeConstraint 來限制可能的文字大小範圍。

文字大小和自動大小

建議開發人員避免使用 TextScaled 並調整 UI 以取得自動大小屬性的優勢。 這裡是兩個屬性之間的核心差別:

  • TextScaled 將內容 (text) 調整為容納 UI 的大小。 若不小心,一些文字可能會因為縮放而變得難以讀取。
  • 自動大小會將內容調整為 UI 。

使用自動大小即可調整您的 UI 來容納內容 (文字) ,並且保持一致的字體大小。有關自動大小的更多資訊,請參閱「UI 自動大小」文章。

我們建議您不要在同一個 UI 對物件上應用兩種文字大小和自動大小。如果您應用兩種屬性:

  • 自動大小將可用空間的最大值決定 (在此案例中,文字)
  • TextScaled 使用自動大小確定的可用空間來調整字體大小,以符合可用空間,這會在最大字體大小 (100) 如果沒有尺寸限制
  • 結果將是:文字將以 100 字體大小顯示,並且介面對象將會擴展以容納這些文字

使用自動大小和文字大小兩個自動減少器,可能會在自動大小關閉時發生較大的縮放差異。

範例程式碼

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 屬性決定一條渲染文字的高度。單位是在偏移量中,不是點 (在大多數文件編輯程式中使用)。「傳承」字體不持有此屬性。

範例程式碼

"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 屬性設定文本渲染時的輪廓或輪廓顏色。這個屬性和 TextBox.TextStrokeTransparency 決定文本輪廓的視覺屬性。

文字擊殺是在正常文字和前往 1 個方向的 4 個重新渲染之前渲染的,文字擊殺的渲染方式是獨立的並且與 TextBox.TextColor3TextBox.TextTransparency 相同。

範例程式碼

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 屬性設定結束時文字的層次透明度,或稱外部輪廓。這個屬性和 TextBox.TextStrokeColor3 決定文字外部輪廓的視覺屬性。

文字擊箭 是在正常文字和簡單的文字四個方向的 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

TextTransparency

平行讀取

TextColor3 屬性決定所有由 UI 元素渲染的文字的透明度。這個屬性以及 TextBox.FontTextBox.TextSizeTextBox.TextColor3 會決定文字的視覺特性。文字會在文字擊押後 rend染 ( 1> Class.Toolbar.TextSt

使用數字 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

平行讀取

控制此文字盒中顯示的文字的切換。

TextWrapped

平行讀取

啟用時,這個屬性會在 GUI 元素的空間中渲染文字,讓 TextBox.TextBounds 永遠不會超過 GUI 元素的 GuiBase2d.AbsoluteSize

這可以通過將長文字分為多個行來達到此目的。 行分頁會優先擁有空格;如果長文字沒有空格,文字會被分為多個行。

如果再次行間斷線將導致文字的垂直高度超過元素的垂直高度(TextBox.TextBounds 的 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

平行讀取

TextXAlignment 決定了文本在 UI 元素的空間中的水平正렬 (X 軸) 。它與 CSS 文字對齊屬性相同,左,右和中心值 (沒有左邊/右邊文本範圍)。對於左和右,文本會在文本元素的左邊/右邊範圍內正確對稱。對於中心,每個文字行都會在文本元素的中心值上正確對稱

此屬性與 TextBox.TextYAlignment 一起使用,以完全確定在兩個軸上的文字對齊。此屬性不會影響 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 軸的形式呈現,兩個上方/下方的文字範圍分別擁有文字元素的邊緣。對於中間,文字會以 Y 軸的形式呈現,兩個上方/下方的文字範圍分別為兩個元素的�

此屬性與 TextBox.TextXAlignment 一起使用,以完全確定在兩個軸上的文字對齊。此屬性不會影響 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 卸下。submitted 參數可以在 enterPressed 事件中綜合過 TextBox.FocusLost 參數。

此項目應該與 LocalScript 使用,以便在線上模式中正常運行。

下面顯示的代碼將強制客戶端在選擇 'Texture' 後的 5 秒內退出:


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

請注意,上述範例假設它是在本地指令碼中,作為 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 以獲得與 Class.UserInputService 服務相關的功能。

此事件只會在 LocalScript 中發生。

參數

enterPressed: bool

一個Boolean指示是否按Enter以失去焦點()。

inputThatCausedFocusLoss: InputObject

一個 InputObject 實例,表示導致文字框遺失專注的輸入類型。


範例程式碼

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 獲得專注時發射 - 通常是客戶端點擊/點擊開始輸入文字時。這也會發射如果 Class.Toolbar 強制專注在用戶上。

它可以與 TextBox.FocusLost 一起使用來跟蹤當 TextBox 獲得和失去專注度。

也參閱 UserInputService.TextBoxFocusedUserInputService.TextBoxFocusReleased 以獲得與 Class.UserInputService 服務相關的功能。

此事件只會在 LocalScript 中發生。


範例程式碼

Focus

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

ReturnPressedFromOnScreenKeyboard