텍스트 상자는 플레이어가 텍스트 입력을 제공하는 경우 Class.TextButton 과 동일합니다. 단일 텍스트 상자를 클릭하거나 탭하거나 게임 패드 선택을 클릭하여 집중할 수 있습니다. 집중 상태에서 플레이어는 키보드를 사용하여 Class.TextButton.
- 텍스트가 없으면 PlaceholderText 가 표시됩니다. 이것은 플레이어가 입력해야 하는 데이터의 유형 또는 형식에 대한 유용한 메시지입니다.
- 기본적으로 ClearTextOnFocus 속성이 활성화되어 있으며 텍스트 상자가 포커스 되었을 때 텍스트가 없음을 확인합니다. 이 속성은 플레이어가 편집할 수 있는 텍스트가 없음을 확인하기 위한 것이 아니므로 원하지 않을 수 있습니다.
- Class.Toolbar.MultiLine|MultiLine 속성을 사용하면 플레이어가 새 줄 문자(\n)를 사용하여 여러 줄의 텍스트를 입력할 수 있습니다.
Class.ContextActionService 는 텍스트 상자 키 바인딩을 존중하고 키 누르기 이벤트가 ContextActionService:BindAction() 에 바인딩된 동작으로 자동으로 전달되지 않도록 방지합니다. UserInputService.InputBegan 및 관련 이벤트는 텍스트 상자가 포커스 상태일 때 키
집중 상태
텍스트 상자의 초점 상태를 감지하고 변경할 수 있습니다.
- 대화 상자가 나타나면 CaptureFocus 을 사용하여 플레이어가 텍스트 상자를 클릭하지 않고 사용 가능하게 할 수 있습니다. ContextActionService:BindAction() 를 사용하여 이 함수를 사용하여 특정 키를
- Class.Toolbar:IsFocused()|IsFocused 를 사용하여 특정 텍스트 상자가 포커스 상태인지 여부를 감지할 수 있습니다. 또는 UserInputService:GetFocusedTextBox() 를 사용하여 특정 텍스트 상자가 포커스 상태인지 여부를 확인할 수 있습니다.
- 플레이어가 텍스트를 입력하면 FocusLost 이벤트가 발생하여 사용자가 Enter를 눌러 텍스트와 함께 컨센트를 떠나게 했을 때 잃어버린 컨센트를
- 게임 플레이 중에 더 중요한 문제가 발생하면 텍스트 상자에서 ReleaseFocus 으로 플레이어의 키보드 입력을 게임으로 다시 전송하여 플레이어의 키보드 입력을 게임으로 다시 전송할 수 있습니다.
텍스트 편집
텍스트 상자는 자신의 CursorPosition 및 SelectionStart 속성을 통해 텍스트 선택을 지원합니다. 텍스트 상자를 사용하여 클립보드 지원을 활성화하려면 GetPropertyChangedSignal
텍스트 필터링 알림 플레이어 간 텍스트 통신을 사용하는 게임, 예를 들어 사용자 지정 채팅 또는 이름 표시, 은 올바르게 TextService:FilterStringAsync() 또는 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.Text 을 지우는지 여부를 결정합니다.
텍스트 커서의 오프셋을 바이트 단위로 결정하거나 -1 없는 경우 커서를 사용하지 않습니다.
텍스트를 렌더링하는 글꼴을 결정합니다.
텍스트를 렌더링하는 글꼴을 결정합니다.
Class.Toolbar 의 텍스트 줄 간의 공간을 조정합니다.
Class.Toolbar가 표시할 수 있는 최대 그래픸 보다.
설정을 참으로 설정하면 TextBox 내의 텍스트가 여러 줄로 이동할 수 있습니다. 이렇게 하면 플레이어가 입력 키를 사용하여 새 줄로 이동할 수 있습니다.
텍스트 상자에 텍스트가 입력되지 않은 경우 사용할 텍스트 색상을 설정합니다.
텍스트 상자에 아직 텍스트가 입력되지 않은 경우 표시되는 텍스트를 설정합니다.Sets the text that gets displayed when no text has been entered into the TextBox yet.
풍부한 텍스트 서식을 사용하여 TextBox가 문자열을 렌더링하는지 여부를 결정합니다.
텍스트 선택의 시작 위치를 결정하거나 -1 텍스트가 선택되지 않은 경우.
설정을 트루로 설정하면 플랫폼에 대한 입력이 Roblox의 내장 키보드가 아닌 네이티브 키보드를 사용하게 됩니다.
UI 요소에서 표시되는 문자열을 결정합니다.
오프셋의 UI 요소 텍스트 크기.
렌더링된 텍스트의 색을 결정합니다.
사용자가 Text 를 변경할 수 있는지 여부를 결정합니다.
텍스트가 텍스트 상자의 제약 사항에 부합하는지 여부입니다.
텍스트를 렌더링하는 GUI 개체에 맞게 크기를 조정합니다.
오프셋의 텍스트 높이를 결정합니다.
텍스트 범례의 색을 결정합니다.
텍스트 범례의 투명도를 결정합니다(윤곽선).
렌더링된 텍스트의 투명도를 결정합니다.
이 텍스트 상자에 표시되는 텍스트의 잘림을 제어합니다.
텍스트 래핑을 GUI 요소 공간에 여러 줄로 결정하고 과도한 텍스트를 잘라냅니다.
렌더링된 텍스트의 가로 정렬을 결정합니다.
렌더링된 텍스트의 가로 정렬을 결정합니다.
이 UI 요소가 입력을 싱크하는지 여부를 결정합니다.
절대 크기에 대해 GuiObject 의 원래 크기를 결정합니다.
자식 콘텐츠에 따라 크기 조정이 발생하는지 여부를 결정합니다.
Class.GuiObject 배경 색상을 결정합니다.
Class.GuiObject 배경과 경계의 투명도를 결정합니다.
Class.GuiObject 경계의 색을 결정합니다.
크기 축소에 따라 GuiObject 범위의 경계가 어떻게 설정되는지 결정합니다.
Class.GuiObject 범위의 픽셀 너비를 결정합니다.
부모 GUI 요소의 범위 내에서 내려지는 경우 GuiObjects 을 렌더링할지 여부를 결정합니다.
플레이어의 마우스가 GuiObject에 활성적으로 누르고 있는지 여부를 결정합니다.
Class.GuiButton 이 인터랙션 가능한지 여부를 결정하고, GuiState 의 GuiObject 가 변경되었는지 여부를 결정합니다.
Class.UIGridStyleLayout 와 함께 사용할 때 UIGridStyleLayout 의 정렬 순서를 제어합니다.
게임 패드 선택기가 내려지면 선택할 GuiObject 를 설정합니다.
왼쪽 게임 패드 선택기에 배치될 때 GuiObject 를 설정합니다.
오른쪽 게임 패드 선택기에 배치될 GuiObject 를 설정합니다.
게임 패드 선택기가 위로 이동할 때 선택할 GuiObject 설정합니다.
Class.GuiObject의 픽셀 및 스칼라 위치를 결정합니다.
Class.GuiObject가 회전하는 데 사용되는 도 수를 결정합니다.
게임 패드에서 GUI 를 선택할 수 있는지 여부를 결정하십시오.
게임 패드에 사용되는 기본 선택 장식을 재정의합니다.
게임 패드 선택에 의해 선택된 <Class.GuiObject|GuiObjects>의 순서입니다.
Class.GuiObject의 픽셀 및 스칼라 크기를 결정합니다.
Class.GuiObject.Size|Size 축을 설정하면 GuiObject의 부모 크기에 대해 기반을 둔다.
Class.GuiObject.BackgroundTransparency|BackgroundTransparency 및 TextTransparency의 혼합 속성.
Class.GuiObject 및 그 후손이 렌더링될지 여부를 결정합니다.
다른 요소와 비슷한 순서로 GuiObject 렌더링을 결정합니다.
UI 요소의 실제 화면 위치를 픽셀로 설명합니다.
UI 요소의 실제 화면 회전을 정도로 설명합니다.
UI 요소의 실제 화면 크기를 픽셀로 설명합니다.
설정을 사용하면 이 GuiBase2d와 그 후손에 대해 현지화가 적용됩니다.
이 GuiBase2d와 그 후손에 자동화 로컬화를 적용하기 위한 LocalizationTable 참조.
아래로 향하는 게임 패드 선택 동작을 사용자 정의합니다.
왼쪽 방향에서 게임 패드 선택 동작을 사용자 정의합니다.
오른쪽 방향으로 게임 패드 선택 동작을 사용자 정의합니다.
게임 패드 선택 동작을 위쪽으로 사용자 정의합니다.
게임 패드 선택 이동을 사용자 정의할 수 있습니다.
메서드
클라이언트가 TextBox에 집중하도록 합니다.
텍스트 상자가 집중되면 참이고, 그렇지 않으면 거짓입니다.
클라이언트가 TextBox를 포커스 해제하도록 강제합니다.
- TweenPosition(endPosition : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : bool,callback : function):bool
새로운 Datatype.UDim2로 GUI를 부드럽게 이동합니다.
- TweenSize(endSize : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : bool,callback : function):bool
새로운 Datatype.UDim2로 GUI를 원활하게 조정합니다.
- 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 요소에 대해 썰매거나 끌기 동작을 수행할 때 화면에 나타납니다.
- TouchRotate(touchPositions : Array,rotation : number,velocity : number,state : Enum.UserInputState):RBXScriptSignal
두 개의 손가락을 사용하여 UI 요소를 회전하는 플레이어를 발생시킵니다.
플레이어가 UI 요소에서 스와이프 동작을 수행할 때 화면에 나타납니다.
플레이어가 UI 요소에 탭 동작을 수행할 때 발생합니다.
- SelectionChanged(amISelected : bool,previousSelection : GuiObject,newSelection : GuiObject):RBXScriptSignal
게임 패드 선택이 이동하거나 떠나거나 연결된 GuiBase2d 또는 모든 하위 GuiObjects 내에서 변경되면 화면에 표시됩니다.
속성
ContentText
CursorPosition
cursorPosition 텍스트 커서의 바이트 오프셋을 결정합니다. 텍스트 상자가 현재 편집되지 않은 경우 -1을 나타냅니다. 1을 나타내는 속성 Text 과 함께 사용하면 텍스트 상자
이 속성의 단위는 바이트 이며, 많은 유니코드 문자는 1바이트 이상입니다. 예를 인스턴스, 플레이어가 텍스트 상자에 입력하면 "Hello👋" – "Hello" – 움직이는 손 기호 후에 즉시 커서 위치가 10이 아닌 7이므로 커서
코드 샘플
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
글꼴 속성은 글꼴 요소에 텍스트를 렌더링할 다음 중 하나를 선택합니다. 일부 글꼴에는 베이직, 이탈리아어 및/또는 라이트 변형이 있습니다(글꼴 무게 및 글꼴 스타일 속성이 없음).
텍스트 높이가 줄 높이와 같은 방식으로 표시되지만 모든 폰트는 TextBox.TextSize 속성과 같은 텍스트를 렌더링합니다. 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 속성은 글꼴 열거형에 없는 글꼴을 설정하는 데 유용하지만, 글꼴이 없는 글꼴을 설정하는 데는 글꼴 속성과 비슷합니다.
이 속성은 TextBox.Font 속성과 동기화됩니다. 폰트를 설정할 때 폰트는 해당 열거형 값에 설정되거나 Enum.Font.Unknown 이 경우 매치가 없는 경우 설정됩니다.
LineHeight
글꼴의 정사각형 크기와 글꼴 간의 간격을 조정하여 라인의 높이를 제어합니다. TextBox 에 있는 텍스트 줄 간의 스페이스를 조정하여 값 범위를 1.0에서 3.0로 설정합니다.
MaxVisibleGraphemes
이 속성은 TextBox 에 표시되는 모든 그래픽 개체(또는 텍스트 단위)의 최대 수를 제어합니다. 그것이 TextBox.PlaceholderText 또는 TextBox.Text를 표시하는지 여부에 관계없이.
속성을 변경하면 표시 가능한 그래픽의 위치나 크기가 변경되지 않습니다. 레이아웃은 모든 그래픽이 표시되는 것처럼 계산됩니다.
속성을 -1로 설정하면 제한이 해제되고 TextBox.Text의 전체가 표시됩니다.
MultiLine
설정을 참으로 설정하면 TextBox 내의 텍스트가 여러 줄로 이동할 수 있습니다. 이렇게 하면 플레이어가 입력 키를 사용하여 새 줄로 이동할 수 있습니다.
OpenTypeFeatures
OpenTypeFeaturesError
PlaceholderText
텍스트 상자에 아직 텍스트가 입력되지 않은 경우 표시되는 텍스트를 설정합니다.Sets the text that gets displayed when no text has been entered into the TextBox yet.
RichText
이 속성은 TextBox가 리치 텍스트 서식을 사용하여 문자열을 렌더링하는지 여부를 결정합니다. 리치 텍스트는 간단한 마크업 태그를 사용하여 문자열의 서식을 강조, 범례, 특정 색 등을 지정합니다.
풍부한 텍스트를 사용하려면 단순히 TextBox.Text 문자열에 서식 태그를 포함하십시오.
Class.Toolbar 에 이 속성이 활성화되고 상자가 포커스를 얻을 때 사용자는 모든 서식 문자열포함한 완전한 텍스트를 편집하고 상호 작용할 수 있습니다. 포커스가 잃어지면 텍스트가 자동으로 처리하고 렌더링하여 텍스트를 풍부한 텍스트로 표시합니다.
SelectionStart
텍스트 선택의 시작 위치를 결정하거나 -1이 텍스트 상자에 선택한 텍스트가 없는 경우에는 텍스트 상자의 범위가 선택한 텍스트의 범위와 동일합니다. 값이 -1 또는 'Class.Toolbar.CursorPosition|CursorPosition' 와 같으면 ��
코드 샘플
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 속성에 영향을 받지 않습니다. 이 기호는 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
읽기 전용 속성 TextBounds는 오프셋에 따라 렌더링된 텍스트의 실제 크기를 반영합니다. 즉, 텍스트를 직사각형에 맞추려고 시도하면 이 속성이 렌더링된 텍스트의 최소 크기를 반영합니다.
Class.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 및 1>Class.Toolbar.TextTransparency1> 와 함��
플레이어가 쉽게 읽을 수 있도록 텍스트를 선택하십시오! 흰색, 회색 또는 검은과 같은 적은 채우기 없는 색을 선택하십시오. TextBox.BackgroundColor3 의 UI 요소의 색과 텍스트의 대비를 얻으려면
코드 샘플
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 요소의 공간을 채우도록 확대되는지 여부를 결정합니다. 이 속성이 활성화되면 TextBox.TextSize 가 무시되고 TextBox.TextWrapped 가 자동으로 활성화됩니다. 이 속성은 텍스트 �
이 속성이 화면 공간 사용자 인터페이스에 사용되면 UITextSizeConstraint 를 사용하여 가능한 텍스트 크기의 범위를 제한하는 것이 좋습니다.
텍스트 크기 조정 및 자동 크기 조정
텍스트 크기 조정 기능을 사용하지 마십시오 대신 개발자는 자동 크기 조정 속성을 활용할 수 있습니다. 다음은 두 속성 간의 주요 차이입니다.
- TextScaled 콘텐츠(텍스트)를 확장하여 UI에 적응합니다. 신중하게 고려하지 않으면 콘텐츠가 너무 작게 확장되면 읽기 어려울 수 있습니다.
- AutomaticSize는 콘텐츠를 수용하기 위해 UI를 자동으로 조정합니다.
AutomaticSize를 사용하면 글꼴 크기를 유지하면서 콘텐츠(텍스트)를 수용할 수 있는 UI를 조정할 수 있습니다. 자세한 내용은 글꼴 자동 크기 조정 기능 사용 을 참조하십시오.
텍스트 크기 조정 및 자동 크기 조정을 모두 동일한 UI 개체에 적용하지 마십시오. 두 속성을 모두 적용하면:
- 자동 크기는 GuiObject 가 사용할 수 있는 최대 공간 크기를 결정합니다(이 경우 텍스트)
- TextScaled은 자동 크기 조정으로 결정된 사용 가능한 공간을 사용하여 글꼴 크기를 자동 크기에 맞게 조정하므로 글꼴 크기 제한이 없는 경우 최대 글꼴 크기(100)에 맞게 글꼴 크기를 조정합니다.
- 결과는 다음과 같습니다. 텍스트는 100 글꼴 크기로 확대되고 인터페이스 개체는 텍스트에 맞게 확장됩니다.The end result will be: text goes to 100 font size and the UI object will expand to fit that text
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
텍스트 크기 속성은 렌더링된 텍스트의 한 줄의 높이를 결정합니다. 단위는 오프셋이며 포인트가 아닙니다(대부분의 문서 편집 프로그램에서 사용됩니다). "전통" 글꼴은 이 속성을 지원하지 않습니다.
코드 샘플
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 는 텍스트 윤곽의 시각적 속성을 결정합니다.
텍스트 스트로크는 일반 텍스트 렌더링보다 4번 렌더링되는 텍스트의 일반적인 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 구성 요소)가 요소의 垂直 높이( Class.GuiBase2d.AbsoluteSize)를 초과하면 해당 줄은 표시되지 않습니다.
코드 샘플
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
텍스트 정렬은 텍스트 렌더링 요소의 공간에 대한 가로 정렬(X축)을 결정합니다. 이 속성은 왼쪽, 오른쪽 및 센터 값(정렬 옵션 없음)에 대해 동일하게 작동합니다. 왼쪽 및 오른쪽의 경우 텍스트가 UI 요소 직사각형의
이 속성은 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축)을 결정합니다. 위와 아래의 경우 텍스트 경계가 단지 텍스트 요소 영역의 가장자리에 도달하도록 합니다. 센터의 경우 위/아래 텍스트 경계가 모두 텍스트 요소 영
이 속성은 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
클라이언트가 TextBox를 잠깐 떠나게 합니다. submitted 이벤트에서 enterPressed 매개 변수를 오버라이드하면 TextBox.FocusLost 이벤트에서 2>TextBox2> 매개 변수를 오버라이드할 수 있습니다.
이 항목은 온라인 모드에서 작동하려면 LocalScript 와 함께 사용해야 합니다.
아래에 표시된 코드는 클라이언트가 선택한 후 5초 동안 'Texture'를 포커스 해제하지 않도록 강제합니다.
local TextBox = script.Parent
TextBox.Focused:Connect(function()
wait(5)
TextBox:ReleaseFocus()
end)
위의 예시는 텍스트 상자의 자식으로 로컬 스크립트에 있다는 점을 고려하십시오.
매개 변수
반환
코드 샘플
local textBox = script.Parent
local function onFocused()
task.wait(5)
textBox:ReleaseFocus()
end
textBox.Focused:Connect(onFocused)
이벤트
FocusLost
클라이언트가 텍스트 상자를 떠나게 할 때 발생합니다. 일반적으로 클라이언트가 텍스트 상자 밖으로 클릭하거나 탭할 때 발생합니다. 이 경우 텍스트 상자가 사용자에게 집중하도록 하는 경우에도 발생합니다.
텍스트 상자가 포커스를 얻고 잃을 때를 추적하는 데 TextBox.Focused 와 함께 사용할 수 있습니다.
또한 UserInputService.TextBoxFocused 및 UserInputService.TextBoxFocusReleased를 참조하십시오. UserInputService 서비스에 의존하는 유사한 기능에 대해.
이 이벤트는 LocalScript에서만 발생합니다.
매개 변수
클라이언트가 초점을 잃도록 엔터를 누른 경우(진실), 아니도록 누른 경우(거짓).
텍스트 상자가 초점을 잃게 한 입력의 유형을 나타내는 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
클라이언트가 텍스트 입력을 시작하려고 텍스트 상자를 클릭/탭하면 <Class.Toolbar> 가 초점을 얻을 때 발생합니다. 이 경우 텍스트 입력을 시작하는 경우 텍스트 상자에 포커스를 두는 경우에도 발생합니다.
텍스트 상자의 초점을 잃고 다시 얻을 때 TextBox.FocusLost 와 함께 사용할 수 있습니다.
또한 UserInputService.TextBoxFocused 및 UserInputService.TextBoxFocusReleased를 참조하십시오. UserInputService 서비스에 의존하는 유사한 기능에 대해.
이 이벤트는 LocalScript에서만 발생합니다.
코드 샘플
local textBox = script.Parent
local function onFocused()
print("Focused")
end
textBox.Focused:Connect(onFocused)