TextBox
*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。
テキストボックス は、プレイヤーがテキスト入力を提供できるようにします。 Class.TextButton と同様に、単一のテキストボックスをクリック、タップ、またはゲームパッドの選択でフォーカスに入れることができます。フォーカス中、プレイヤーはキーボードを使用して Class.Toolbar.Text|Text
- テキストがありませんの場合、PlaceholderText が表示されます。これは、プレイヤーが入力するデータの種類または形式についてのユーザーの誘導を有用に行います。
- デフォルトでは、ClearTextOnFocus プロパティが有効になり、ClearTextOnFocus がフォーカスされているときにテキストが存在しないことを確認します。これはプレイヤーによって編集可能なテキストではない場合があります。
- プロパティ MultiLine は、新しい行のキャラクター ( \n ) で複数のテキストを入力できるようにします。
Class.UserInputService.InputBegan と関連するエベントが発生すると、ContextActionService:BindAction() はテキストボックスのキーバインドを尊重し、キープレスイベントが UserInputService.InputBegan にバインドされるのを自動的に防止します。1>Class.UserInputService.InputBegan1> と関連するエベントは
フォーカスステート
TextBox のフォーカスステートを検出し、変更することができます:
- ダイアログが表示されるときに CaptureFocus を使用して、プレイヤーがテキストボックスを利用可能にするためにクリックする必要がありません。 ContextActionService:BindAction() を使用して、この機能を使用する特定のキーにフ
- Class.Toolbar:IsFocused()|IsFocused を使用して、特定のテキストボックスがフォーカスされているかどうかを検出できます。あるいは、UserInputService:GetFocusedTextBox() を使用して、テキストボックスがフォーカスされているかどうかをチェックできます。
- プレイヤーがテキストを入力したとき、FocusLost イベントが発動し、ユーザーが Enter を押してテキストとInputObject を損失したことを示すようにします。モバイルとコンソー
- ゲームプレイ中に重要な問題が発生した場合は、ReleaseFocus の TextBox を返すことで、プレイヤーのキーボード入力があなたのゲームに戻ります。
テキストエディティング
テキストボックスは、CursorPosition および SelectionStart プロパティを通じて、テキストの選択をサポートします。使用する GetPropertyChangedSignal を使用すると、選択が変更されたことを2> 基本的なク
テキストフィルターに関する通知 ゲームは、カスタムチャットや名前タグなど、プレイヤー間通信をテキストで容易に行うゲームを含む、「 Class.TextService:FilterStringAsync() 」または「 Class.Chat:FilterStringAsync() 」を使用している必要があります。これが適切に行われないと、あなたのゲームはモデレーシ
コードサンプル
-- 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)
概要
プロパティ
TextBox をクリックすると、その TextBox.Text プロパティをクリアするかどうかを決定します。
テキストカーソルのオフセットをバイト単位で決めます。-1 がカーソルがありませんの場合。
テキストをレンダリングするフォントを決める。
テキストをレンダリングするフォントを決める。
Class.Toolbar のテキストの行間をスケールします。
Class.Toolbar が表示できる最大グラフェム数。
「真」を設定すると、テキストボックス内のテキストは複数の行に移動できます。これにより、プレイヤーは入力キーを使用して新しい行に移動できます。
入力していないテキストに使用されるテキストの色を設定します。
入力していないテキストが TextBox に表示されるテキストを設定します。
クラス型テキストボックスがリッチテキストフォーマットを使用して TextBox.Text 文字列をレンダリングするかどうかを決定します。
テキストの選択の開始位置を決定します。-1 でない場合は、テキストが選択されていません。
設定が「True」に設定されている場合、Roblox の内蔵キーボードではなく、プラットフォームのネイティブキーボードに入力されます。
UI 要素によって表示される文字列を決定します。
オフセットで UI 要素のテキストのサイズ。
レンダリングされたテキストの色を決める。
ユーザーが Text を変更できるかどうかを決定します。
テキストが TextBox の制限内にあるかどうか。
テキストをレンダリングするGUIオブジェクトにフィットするかどうかを変更します。
オフセットのテキストの行高を決める。
テキストストロークの色を決定します (アウトライン)。
テキストストロークの透明度を決めます (アウトライン)。
レンダリングされたテキストの透明度を決める。
この TextBox に表示されるテキストのトリミングを制御します。
テキストラップを GUI 要素のスペース内に複数の行にラップし、余分なテキストをカットします。
レンダリングされたテキストの横向きに決定します。
レンダリングされたテキストの垂直アラインメントを決定します。
この UI 要素が入力を沈めるかどうかを決定します。
Class.GuiObject のオリジンポイントを決定し、相対的なサイズに対して Class.GuiObject のオリジンポイントを決定します。
子コンテンツに基づいてサイズ変更が発生するかどうかを決定します。
Class.GuiObject の背景色を決定します。
Class.GuiObject の背景と境界を透明化する。
Class.GuiObject ボーダーの色を決定します。
Class.GuiObject ボーダーの位置相対を決定します。
Class.GuiObject ボーダーのピクセル幅を決定します。
親 GUI 要素の外にある子 GUI 要素がレンダリングするべきかどうかを決定します。
プレイヤーのマウスが GuiObject 上で積極的に押されているかどうかを決定します。
Class.GuiButton がインタラクト可能かどうかを決定します。GuiState の GuiObject が変更されているかどうか。
Class.UIGridStyleLayout と一緒に使用されると、UIGridStyleLayout のソートオーダーを制御します。
ゲームパッドのセレクターが下に移動すると、GuiObject が選択されます。
ゲームパッドのセレクターが左に移動したときに選択される GuiObject を設定します。
ゲームパッドのセレクターが右に移動したときに選択される GuiObject を設定します。
ゲームパッドセレクターが上に移動すると、GuiObject が選択されます。
Class.GuiObject のピクセルとスカラーポジションを決定します。
Class.GuiObject が回転する度数を決定します。
ゲームパッドで GUI を選択できるかどうかを決定します。
ゲームパッドのデフォルトの装飾をオーバーライドします。
ゲームパッド UI の選択によって選択された GuiObjects のオーダー。
Class.GuiObject のピクセルとスケーラーサイズを決定します。
Class.GuiObject.BackgroundTransparency|BackgroundTransparency と TextTransparency のミックスプロパティ。
Class.GuiObject とその子孫がレンダリングされるかどうかを決定します。
他の Class.GuiObject との相対位置で GuiObject がレンダリングされる順序を決定します。
UI 要素の実際の画面位置をピクセルで説明します。
UI 要素の実際のスクリーン回転を、度数で説明します。
UI 要素の実際の画面サイズをピクセル単位で説明します。
設定を「真」に設定すると、ローカライズはこの GuiBase2d とその子孫に適用されます。
この GuiBase2d とその後の子孫に自動的にローカライズを適用するために使用される LocalizationTable の参照。
下向きにゲームパッドの選択動作をカスタマイズします。
左側のゲームパッド選択動作をカスタマイズします。
右方向のゲームパッド選択動作をカスタマイズします。
ゲームパッドの選択動作を上向きにカスタマイズします。
ゲームパッドの選択動作をカスタマイズできます。
方法
クライアントにTextBox に集中するように強制します。
テキストボックスがフォーカスされている場合は、 true を返し、そうでない場合は false を返します。
クライアントにTextBox のフォーカスを解除するように強制します。
- 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 を新しいサイズと位置にスムーズに移動させます。
イベント
クライアントが TextBox から離れると、ファイアを起動します。
Class.Toolbar がフォーカスを獲得すると、ファイアが発動します。
ユーザーが人間コンピューターインターフェイスデバイス (マウスボタン、タッチボタン、キーボードボタンなど) を介してインタラクトし始めると、発動します。
ユーザーが人間コンピューターインターフェースデバイス (マウスボタン、タッチボタン、キーボードボタンなど) でどのようにインタラクトするかを変更すると、発動します。
ユーザーが人間コンピューターインターフェイスデバイス(マウスボタン、タッチボタン、キーボードボタンなど)を通じての交流を停止すると、発射されます。
ユーザーがマウスをGUIエレメントに移動すると、ファイアが発生します。
ユーザーが 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 エレメントの 2つの指を使用してピンチや引っ掛けを行うときに発動します。
- TouchRotate(touchPositions : Array,rotation : number,velocity : number,state : Enum.UserInputState):RBXScriptSignal
ユーザーが UI 要素に 2 つの指を使用して回転を実行すると、ファイアが発動します。
プレイヤーが UI 要素にスワイプを行うときに発動します。
プレイヤーが UI 要素にタップスタイルを実行すると、ファイアが発動します。
- SelectionChanged(amISelected : bool,previousSelection : GuiObject,newSelection : GuiObject):RBXScriptSignal
ゲームパッドの選択が移動すると、退出します。または、接続された GuiBase2d または任意の子 GuiObjects 内で変更されます。
プロパティ
ContentText
CursorPosition
CursorPosition は、テキストカーソルのオフセットをバイト単位で決定します。または、TextBox が現在編集されていない場合 -1 は、 Text プロパティの開始位置を表します。SelectionStart プロ
このプロパティのユニットは バイト であり、多くのユーンコード文字は 1バイト以上 になります。たとえば、「Hello👋」 – “Hello” に続いて、手を振った手のサイン – カーソルポジションが 10 ではなく 7 になります。これは、エモジが 4 バイト
コードサンプル
local textBox = script.Parent
local function showSelection()
if textBox.CursorPosition == -1 or textBox.SelectionStart == -1 then
print("No selection")
else
local selectedText = string.sub(
textBox.Text,
math.min(textBox.CursorPosition, textBox.SelectionStart),
math.max(textBox.CursorPosition, textBox.SelectionStart)
)
print('The selection is:"', selectedText, '"')
end
end
textBox:GetPropertyChangedSignal("CursorPosition"):Connect(showSelection)
textBox:GetPropertyChangedSignal("SelectionStart"):Connect(showSelection)
Font
フォントプロパティは、UI 要素がテキストをレンダリングするために使用できるいくつかのプリディファインド Font.Font|フォント の 1つを選択します。いくつかのフォントには、強調、イタリック、および/またはライトバリアントがあります (フォントの重量やスタイルのプロパティはありません)。
「レガシー」フォントを除き、各フォントは TextBox.TextSize プロパティのテキストをラインの高さが等しいようにレンダリングします。「コード」フォントは唯一のモノスペースフォントです。それは、各キャラクターが正確な幅と高さ比率を持つ 1:2 の幅の半分
このプロパティは、TextBox.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 プロパティは、Font プロパティと似ていますが、Font 枚数に存在しないフォントを設定できます。
このプロパティは、TextBox.Font プロパティと同期されています。FontFace を設定すると、Font は対応する枚数の値に設定されます。また、一致しない場合は Enum.Font.Unknown に設定されます。
LineHeight
クラスターのサイズは、フォントのサイズの複数である行の高さを制御します。スペース間を拡大/縮小することで、テキストの行間のサイズを変更します。デフォルトは 1.0 から 3.0 です。
MaxVisibleGraphemes
このプロパティは、TextBox に表示される最大グラフェム数 (またはテキストのユニット) を制御します。TextBox.PlaceholderText または TextBox.Text を表示しているかどうかにかかわらず。
プロパティを変更すると、表示可能なグラフェムの位置やサイズは変更されません - レイアウトは、すべてのグラフェムが表示されているときのように計算されます。
プロパティを -1 に設定すると、制限が無効になり、TextBox.Text の全体が表示されます。
OpenTypeFeatures
OpenTypeFeaturesError
RichText
このプロパティは、TextBox がリッチテキストフォーマットを使用して TextBox.Text 文字列をレンダリングするかどうかを決定します。リッチテキストは、シンプルなマークアップタグを使用して、文字列の下の強調、イタリック、特定の色などをスタイルに合わせて構成します。
リッチテキストを使用するには、TextBox.Text 文字列にフォーマットタグを含めます。
注意: Class.Toolbar にこのプロパティが有効になっていると、ボックスのフォーカスが合致すると、ユーザーは Class.Toolbar の完全なXML文字列を編集およびインタラクトできます。フォーカスが失われると、テキストは自動的にタグをリッチテキストで処理し、レンダリングします。
SelectionStart
テキスト選択の開始位置を決定します。または -1 です。TextBox にテキストの範囲がありませんので、値は -1 または CursorPosition と同じです。このプロパティは、Class.Toolbar.CursorPosition または Class.Toolbar.CursorPositio終了 の開
コードサンプル
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)
Text
テキストプロパティは、UIエレメントが表示するコンテンツを決定します。視覚プロパティは、 TextBox.TextColor3 、
絵文字 (たとえば、😃) や他のシンボルをレンダリングできます。これらの特殊なシンボルは TextBox.TextColor3 プロパティに影響されません。これらは Script および LocalScript オブジェクト、およびプロパティウィンドウ内のフィールドに貼り付
このプロパティには、新行文字が含まれる場合がありますが、プロパティウィンドウ内で新行文字を入力することはできません。同様に、このプロパティにはタブ文字が含まれる場合がありますが、代わりにスペースとして表示されます。
コードサンプル
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
[テキストの境界] プロパティは、オフセットの読み取りで実際のテキストのサイズを反映します。つまり、テキストをレンダリングしたオクジェクトにフィットするために、テキストを正方形に拡大/縮小する必要があります。
使用する TextService:GetTextSize() 、TextBox.Font、TextBox.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 要素によってレンダリングされるすべてのテキストの色を決定します。このプロパティと TextBox.Font、TextBox.TextSize および 2>Class.Toolbar.TextTransparency2> は、テ
プレイヤーに簡単に読み取れるテキストが重要です!迷彩を避けて、白、グレー、または黒など、少し-to-no saturationのある色を選択してください。UI 要素の背景には、TextBox.BackgroundColor3 を使用して、テキストと 3D 世界をコント
コードサンプル
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
TextEditable
TextEditable は、ユーザーが入力を通じて Text を変更できるかどうかを決定します。入力を無効にすることをお勧めします。このプロパティを無効にすると、ClearTextOnFocus を無効にすることができます。
TextScaled
TextScaled を使用する代わりに、AutomaticSize を使用することをお勧めします。これは、最高のビジュアル結果を可能にする新しいメソッドで、UI のサイズをダイナミックにサイズ変更できます。
TextScaled プロパティは、テキストが UI 要素の全体を満たすようにスケールされているかどうかを決定します。これを有効にすると、 TextBox.TextSize は無視され、 TextBox.TextWrapped が自動的に有効になります。このプロパティは、BillboardGuis
このプロパティを画面スペース UI に使用する場合、UITextSizeConstraint を使用して、可能なテキストサイズの範囲を制限することが望ましいかもしれません。
TextScaled と自動サイズ
テキストスケールを使用することを避け、代わりに UI を調整することを開発者は推奨されます。以下は 2つのプロパティ間の主要な違いです:
- TextScaled は、UI に対応するためにコンテンツ (テキスト) を拡大します。無駄な拡大により、一部のテキストが小さすぎて読み取りにくくなる可能性があります。
- AutoSize は、コンテンツに対応するために UI をサイズ変更します。
AutomaticSize を使用すると、UI を拡大/縮小してコンテンツを満たすために、フォントサイズを一貫して保つことができます。For more information on how to use automatic sizing, see the UI Automatic Size article.
TextScaled と AutomaticSize を同じ UI オブジェクトに適用しないことをお勧めします。両方のプロパティを適用すると、
- 自動サイズは、GuiObject が使用できる最大スペースの量を決定します (この場合、テキスト)
- TextScaled は、AutomaticSize によって決定された利用可能なスペースを使用して、フォントサイズを自動サイズに拡大し、最大フォントサイズ (100) に到達するためにフォントサイズを変更します。サイズ制限がない場合
- 結果は以下になります:テキストは 100 文字サイズに拡大され、UI オブジェクトはそのテキストに対応するように拡張されます
両方のオートサイズとテキストスケールを同時に使用すると、オートサイズがオフのときよりも大きなスケールオフの差が発生する可能性があります。
コードサンプル
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 プロパティは、1行のレンダリングテキストのオフセットの高さを決定します。ユニットはオフセットであり、ポイントではありません (これは、ほとんどのドキュメントエディタプログラムで使用されている)。「レガシー」フォントはこのプロパティを持っていません。
コードサンプル
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.TextColor3 およびTextBox.TextTransparency と同じように機能します。
コードサンプル
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ピクセルオフセットの +/- 1 方向の 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
テキストカラー3 プロパティは、UI 要素によってレンダリングされるすべてのテキストの透明度を決定します。このプロパティに加えて、 TextBox.Font 、 TextBox.TextSize および TextBox.TextColor3 は、テキストのビジュ
数値の for-ループを使用してテキストをフェイドすると、画面に表示されるテキストにプレイヤーの注意を引くことができます。
-- 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 要素のスペース内の複数の行にテキストをレンダリングし、TextBox.TextBounds は GUI 要素の GuiBase2d.AbsoluteSize を超えることはありません。
これは、長いテキストの行を複数の行に分割することで達成されます。行の分割は白紙を好むことがあります。長い未完成のワードがエレメントの幅を超えると、そのワードは複数の行に分割されます。
次の行の空白がテキストの垂直高度 (TextBox.TextBounds の Y コンポーネント) を元素の垂直高度 (GuiBase2d.AbsoluteSize の 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 テキストアルインコンプリートプロパティと同様に機能します (左、右、中央の値がありません)。For Left と Right の場合、テキストは左/右のテキスト境界に触れるようになります (センターではな
このプロパティは、TextBox.TextYAlignment と組み合わせて、両方の軸にテキストの配置を完全に決定するために使用されます。このプロパティは、TextBox.TextBounds および TextBox.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
テキストの配置 (Y 軸) は、UI 要素のスペース内のテキストのレンダリングを決定します。トップとボトムの場合、テキストは上/下のテキストの境界に触れるようにレンダリングされます。中央の場合、テキストは上/下のテキストの境界と同じスペースを持つようにレンダリングされます。
このプロパティは、TextBox.TextXAlignment と組み合わせて、両方の軸にテキストの配置を完全に決定するために使用されます。このプロパティは、TextBox.TextBounds および TextBox.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
方法
CaptureFocus
クライアントにTextBox に集中するように強制します。
戻り値
コードサンプル
local ContextActionService = game:GetService("ContextActionService")
local ACTION_NAME = "FocusTheTextBox"
local textBox = script.Parent
local function handleAction(actionName, inputState, _inputObject)
if actionName == ACTION_NAME and inputState == Enum.UserInputState.End then
textBox:CaptureFocus()
end
end
ContextActionService:BindAction(ACTION_NAME, handleAction, false, Enum.KeyCode.Q)
ReleaseFocus
クライアントにテキストボックスのフォーカスを解除するよう強制します。submitted パラメータを使用すると、enterPressed パラメータを上書きできます。TextBox.FocusLost イベントで。
このアイテムは、オンラインモードで機能するために LocalScript と使用する必要があります。
以下に示すコードは、選択後にクライアントが 'Texture' を 5 秒間フォーカス解除するように強制します:
local TextBox = script.Parent
TextBox.Focused:Connect(function()
wait(5)
TextBox:ReleaseFocus()
end)
上の例は、TextBox の子としてローカルスクリプトにあることを仮定しています。
パラメータ
戻り値
コードサンプル
local textBox = script.Parent
local function onFocused()
task.wait(5)
textBox:ReleaseFocus()
end
textBox.Focused:Connect(onFocused)
イベント
FocusLost
クライアントが TextBox から離れると、クライアントのフォーカスが TextBox に移動すると、ファイアが発生します - 通常、クライアントが TextBox の外にクリック/タップするときに発生します。これは、クライアントがユーザーにフォーカスを合わせるとも発生します。
Class.Toolbar.Focused と一緒に使用すると、テキストボックスのフォーカスを取得したり失ったりするときに追跡できます。
また、UserInputService.TextBoxFocused および UserInputService.TextBoxFocusReleased を参照して、ユーザー入力サービスのサービスに依拠する関連する機能についても参照してください。
このイベントは、LocalScript 内でのみ発動します。
パラメータ
クライアントがEnter を押してフォーカスを失うかどうかを示すブールーン ( true ) または not ( false ) を指します。
Class.InputObject インスタンスが、テキストボックスのフォーカスを失う タイプの入力を示しています。
コードサンプル
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)
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 がファイアをオンにします - 通常、クライアントがテキストボックスをクリック/タップしてテキストの入力を開始するときです。これは、Class.Toolbar がユーザーにフォーカスを合わせることでも発動します。
Class.Toolbar.FocusLost と一緒に使用すると、TextBox のフォーカスを取得したり失ったりするときに追跡できます。
また、UserInputService.TextBoxFocused および UserInputService.TextBoxFocusReleased を参照して、ユーザー入力サービスのサービスに依拠する関連する機能についても参照してください。
このイベントは、LocalScript 内でのみ発動します。
コードサンプル
local textBox = script.Parent
local function onFocused()
print("Focused")
end
textBox.Focused:Connect(onFocused)