GuiObject

사용되지 않는 항목 표시

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

만들 수 없음
찾아볼 수 없음

GuiObject 는 2D 사용자 인터페이스 개체에 대한 모든 속성을 정의합니다( Class.

특정 방식으로 GUI 개체의 레이아웃을 조작하려면 목록/유연 개체 또는 그리드 와 같은 레이아웃 구조를 사용하거나 모양 모드터를 통해 코어 속성을 넘어 스타일할 수 있습니다.To manipulate the layout of GUI objects in special ways, you can use a layout structure such as list/flex or grid , and you can style them beyond their core properties through appearance modifiers .

Class.GuiObject.InputBegan|InputBegan 및 InputEnded 를 사용하여 모든 GUI 개체에서 마우스 버튼 이벤트를 감지하는 것이 가능하지만, ImageButton 및 1>Class

요약

속성

속성GuiBase2d에서 상속되었습니다

메서드

이벤트

이벤트GuiBase2d에서 상속되었습니다

속성

Active

병렬 읽기

이 속성은 이 GuiObject 가 기본 모델과 같이 입력을 3D 공간으로 싱크하는지 여부를 결정합니다. 여기에는 ClickDetector 클래스와 같은 활성 인터페이스 요소가 있습니다. 즉, 플레이어가 활성 인터페이스 요소

Class.GuiButton.Activated|Activated 개체(ImageButton 및 Class

코드 샘플

TextButton Active Debounce

-- Place this LocalScript within a TextButton (or ImageButton)
local textButton = script.Parent
textButton.Text = "Click me"
textButton.Active = true
local function onActivated()
-- This acts like a debounce
textButton.Active = false
-- Count backwards from 5
for i = 5, 1, -1 do
textButton.Text = "Time: " .. i
task.wait(1)
end
textButton.Text = "Click me"
textButton.Active = true
end
textButton.Activated:Connect(onActivated)

AnchorPoint

병렬 읽기

Class.GuiObject 개체의 원래 크기에 대해 GuiObject Class.GuiObject 개체의 원래 점이 결정됩니다. 원래 크기는 절대 크기입니다. 원래 점은 GuiObject.Position 을 통해 요소가 배치되는 곳과 함께 결정됩니다. 원래 크기는 렌

자세한 내용은 여기 참조하십시오.

코드 샘플

AnchorPoint Demo

local guiObject = script.Parent
while true do
-- Top-left
guiObject.AnchorPoint = Vector2.new(0, 0)
guiObject.Position = UDim2.new(0, 0, 0, 0)
task.wait(1)
-- Top
guiObject.AnchorPoint = Vector2.new(0.5, 0)
guiObject.Position = UDim2.new(0.5, 0, 0, 0)
task.wait(1)
-- Top-right
guiObject.AnchorPoint = Vector2.new(1, 0)
guiObject.Position = UDim2.new(1, 0, 0, 0)
task.wait(1)
-- Left
guiObject.AnchorPoint = Vector2.new(0, 0.5)
guiObject.Position = UDim2.new(0, 0, 0.5, 0)
task.wait(1)
-- Dead center
guiObject.AnchorPoint = Vector2.new(0.5, 0.5)
guiObject.Position = UDim2.new(0.5, 0, 0.5, 0)
task.wait(1)
-- Right
guiObject.AnchorPoint = Vector2.new(1, 0.5)
guiObject.Position = UDim2.new(1, 0, 0.5, 0)
task.wait(1)
-- Bottom-left
guiObject.AnchorPoint = Vector2.new(0, 1)
guiObject.Position = UDim2.new(0, 0, 1, 0)
task.wait(1)
-- Bottom
guiObject.AnchorPoint = Vector2.new(0.5, 1)
guiObject.Position = UDim2.new(0.5, 0, 1, 0)
task.wait(1)
-- Bottom-right
guiObject.AnchorPoint = Vector2.new(1, 1)
guiObject.Position = UDim2.new(1, 0, 1, 0)
task.wait(1)
end

AutomaticSize

병렬 읽기

이 속성은 자식의 크기에 따라 부모 UI 개체의 크기를 자동으로 조정하기 위해 사용됩니다. 이 속성을 사용하여 편집 또는 실행 시 부모 UI 개체에 텍스트 및 기타 콘텐츠를 동적으로 추가하고 크기가 콘텐츠에 맞게 조정되도록 합니다.

AutomaticSize 가 어떤 값으로 설정되었든 Enum.AutomaticSize 값에 대해 어떤 다른 값에 대해 크기를 조정할 수 있습니다. 이 UI 개체는 자식 콘텐츠에 따라 크기를 조정할 수 있습니다.

이 속성에 대한 자세한 내용은 여기 를 참조하십시오.

코드 샘플

LocalScript in a ScreenGui

-- Array of text labels/fonts/sizes to output
local labelArray = {
{ text = "Lorem", font = Enum.Font.Creepster, size = 50 },
{ text = "ipsum", font = Enum.Font.IndieFlower, size = 35 },
{ text = "dolor", font = Enum.Font.Antique, size = 55 },
{ text = "sit", font = Enum.Font.SpecialElite, size = 65 },
{ text = "amet", font = Enum.Font.FredokaOne, size = 40 },
}
-- Create an automatically-sized parent frame
local parentFrame = Instance.new("Frame")
parentFrame.AutomaticSize = Enum.AutomaticSize.XY
parentFrame.BackgroundColor3 = Color3.fromRGB(90, 90, 90)
parentFrame.Size = UDim2.fromOffset(25, 100)
parentFrame.Position = UDim2.fromScale(0.1, 0.1)
parentFrame.Parent = script.Parent
-- Add a list layout
local listLayout = Instance.new("UIListLayout")
listLayout.Padding = UDim.new(0, 5)
listLayout.Parent = parentFrame
-- Set rounded corners and padding for visual aesthetics
local roundedCornerParent = Instance.new("UICorner")
roundedCornerParent.Parent = parentFrame
local uiPaddingParent = Instance.new("UIPadding")
uiPaddingParent.PaddingTop = UDim.new(0, 5)
uiPaddingParent.PaddingLeft = UDim.new(0, 5)
uiPaddingParent.PaddingRight = UDim.new(0, 5)
uiPaddingParent.PaddingBottom = UDim.new(0, 5)
uiPaddingParent.Parent = parentFrame
for i = 1, #labelArray do
-- Create an automatically-sized text label from array
local childLabel = Instance.new("TextLabel")
childLabel.AutomaticSize = Enum.AutomaticSize.XY
childLabel.Size = UDim2.fromOffset(75, 15)
childLabel.Text = labelArray[i]["text"]
childLabel.Font = labelArray[i]["font"]
childLabel.TextSize = labelArray[i]["size"]
childLabel.TextColor3 = Color3.new(1, 1, 1)
childLabel.Parent = parentFrame
-- Visual aesthetics
local roundedCorner = Instance.new("UICorner")
roundedCorner.Parent = childLabel
local uiPadding = Instance.new("UIPadding")
uiPadding.PaddingTop = UDim.new(0, 5)
uiPadding.PaddingLeft = UDim.new(0, 5)
uiPadding.PaddingRight = UDim.new(0, 5)
uiPadding.PaddingBottom = UDim.new(0, 5)
uiPadding.Parent = childLabel
task.wait(2)
end

BackgroundColor3

병렬 읽기

이 속성은 GuiObject 배경 색 (채우기 색)를 결정합니다. 요소에 텍스트가 있는 경우, TextBox , TextButton 또는 1> Class.TextLabel1> 와 같은 텍스트의 색과 배경의 색이 일치하는지 확인하십시오.

배경의 시각적 속성을 결정하는 또 다른 속성은 GuiObject.BackgroundTransparency 입니다. 이 속성이 1로 설정되면 배경도 보이지 않고 경계도 보이지 않습니다.

또한 보세요 BorderColor3.

코드 샘플

Rainbow Frame

-- Put this code in a LocalScript in a Frame
local frame = script.Parent
while true do
for hue = 0, 255, 4 do
-- HSV = hue, saturation, value
-- If we loop from 0 to 1 repeatedly, we get a rainbow!
frame.BorderColor3 = Color3.fromHSV(hue / 256, 1, 1)
frame.BackgroundColor3 = Color3.fromHSV(hue / 256, 0.5, 0.8)
task.wait()
end
end

BackgroundTransparency

병렬 읽기

이 속성은 GuiObject 배경 및 경계를 투명하게 결정합니다. 그러나 텍스트가 GUI인 경우 TextBox, 또는 Class.TextLabel

이 속성이 1 로 설정되면 배경도 그리고 경계도 렌더링되지 않으며 GUI 배경도 완전히 투명합니다.

BorderColor3

병렬 읽기

Class.GuiObject 직사각형 경계의 색을 결정합니다(또한 색상 색상이라고도 함). 이 속성은 개체의 GuiObject.BackgroundColor3 에서 볼 수 없습니다. 개체의 경계가 GuiObject.BorderSizePixel 로 설정되어 있으면 개체의 경

Class.UIStroke 구성 요소는 더 고급적인 경계 효과를 지원합니다.

코드 샘플

Button Highlight

-- Put me inside some GuiObject, preferrably an ImageButton/TextButton
local button = script.Parent
local function onEnter()
button.BorderSizePixel = 2
button.BorderColor3 = Color3.new(1, 1, 0) -- Yellow
end
local function onLeave()
button.BorderSizePixel = 1
button.BorderColor3 = Color3.new(0, 0, 0) -- Black
end
-- Connect events
button.MouseEnter:Connect(onEnter)
button.MouseLeave:Connect(onLeave)
-- Our default state is "not hovered"
onLeave()

BorderMode

병렬 읽기

이 속성은 같은 이름의 열거형을 사용하여 크기에 대해 GuiObject 경계를 정의합니다.

Class.UIStroke 는 이 속성을 재정의하여 더 복잡한 경계 효과를 사용할 수 있습니다.

BorderSizePixel

병렬 읽기

이 속성은 GuiObject 범위 내의 경계 렌더링을 픽셀 단위로 결정합니다. 이 값을 0으로 설정하면 경계가 완전히 비활성화됩니다.

Class.UIStroke 는 이 속성을 재정의하여 더 복잡한 경계 효과를 사용할 수 있습니다.

코드 샘플

Button Highlight

-- Put me inside some GuiObject, preferrably an ImageButton/TextButton
local button = script.Parent
local function onEnter()
button.BorderSizePixel = 2
button.BorderColor3 = Color3.new(1, 1, 0) -- Yellow
end
local function onLeave()
button.BorderSizePixel = 1
button.BorderColor3 = Color3.new(0, 0, 0) -- Black
end
-- Connect events
button.MouseEnter:Connect(onEnter)
button.MouseLeave:Connect(onLeave)
-- Our default state is "not hovered"
onLeave()

ClipsDescendants

병렬 읽기

이 속성은 GuiObject가 손님 섬유 요소의 내부를 숨기는지 여부를 결정합니다. 그렇지 않으면 손님 섬유 요소의 내부가 직사각형의 경계 밖으로 표시됩니다.

이 속성에서 지원되지 않는 GuiObject.Rotation 은 이 속성에 포함된 하위 속성 Class.GuiObject.Rotation 이 지원되지 않습니다. 이 속성이나 상위 속성에 있는 하위 속성 GuiObject.Rotation 이 지원되지 않으면 이 속성의 하위 요소인 다른 하위 요소

읽기 전용
복제되지 않음
병렬 읽기

플레이어의 손가락이 클래스 GuiObject 에 닿고 클래스 Class.GuiObject.GuiState|Gui

Interactable

병렬 읽기

Class.GuiButton 이 인터랙션 가능한지 여부를 결정하고, GuiStateGuiObject 가 변경되었는지 여부를 결정합니다.

On a GuiButton :

  • Class.GuiButton 에 설정된 GuiButtonfalse 로 설정되었으므로 1>Class.GuiButton1> 을 더 이상 누르거나 클릭할 수 없으며 4>
  • Class.GuiButton 에 설정된 GuiButtontrue 로 설정되었으며, 1>Class.GuiButton1> 는 정상적으로 동작하고 4>Class.GuiObject.GuiState|GuiState4> 는 정상적으로 동작합니다.

On a GuiObject :

  • Class.GuiButton 에 설정된 GuiButton 설정이 false 로 설정되면 1>Class.GuiObject.GuiState|GuiState1> 는 항상 4>Ennum.GuiState.NonInteractable|NonInteractable4> 로 설정됩니다.
  • Class.GuiButton 에 설정된 GuiButton 설정이 true로 설정되면 1>Class.GuiObject.GuiState|GuiState1> 는 정상적으로 다시 작동합니다.

LayoutOrder

병렬 읽기

이 속성은 클래스 GuiObject 의 정렬 순서를 제어합니다. UIGridStyleLayout (예: UIListLayout 또는 1>Class.UIPageLayout1> )에 4>

GuiObjects 는 하위 값이 높은 값보다 우선적으로 정렬되어 있습니다. 같은 값을 가진 개체는 추가된 순서대로 다시 순위가 매겨집니다.

미래에 두 개의 기존 요소 사이에 요소를 추가해야 할지 확실하지 않은 경우 다음과 같은 모범 사례를 사용하여 100 ( 0 , 100 , 1> 2001> 등의 레이아웃

또한 ZIndex 를 참조하십시오, 이는 순서가 아닌 순서로 개체의 렌더링 순서를 결정합니다.

NextSelectionDown

병렬 읽기

이 속성은 사용자가 게임 패드 선택기를 아래로 이동할 때 GuiObject 선택을 설정합니다. 이 속성이 비어 있으면 게임 패드를 아래로 이동하면 선택한 GUI가 변경되지 않습니다.

게임 패드 선택기를 아래로 이동하면 GuiService.SelectedObject 이 개체를 이 개체로 설정하지 않습니다. GUI가 선택 가능하지 않은 경우 이 속성을 GUI 요소에 설정할 수도 있지만, 이 속성이 기본적으로 설정된 경우

또한 참조하십시오 NextSelectionUp , NextSelectionLeftNextSelectionRight .

코드 샘플

Creating a Gamepad Selection Grid

-- Setup the Gamepad selection grid using the code below
local container = script.Parent:FindFirstChild("Container")
local grid = container:GetChildren()
local rowSize = container:FindFirstChild("UIGridLayout").FillDirectionMaxCells
for _, gui in pairs(grid) do
if gui:IsA("GuiObject") then
local pos = gui.Name
-- Left edge
gui.NextSelectionLeft = container:FindFirstChild(pos - 1)
-- Right edge
gui.NextSelectionRight = container:FindFirstChild(pos + 1)
-- Above
gui.NextSelectionUp = container:FindFirstChild(pos - rowSize)
-- Below
gui.NextSelectionDown = container:FindFirstChild(pos + rowSize)
end
end
-- Test the Gamepad selection grid using the code below
local GuiService = game:GetService("GuiService")
local UserInputService = game:GetService("UserInputService")
GuiService.SelectedObject = container:FindFirstChild("1")
function updateSelection(input)
if input.UserInputType == Enum.UserInputType.Keyboard then
local key = input.KeyCode
local selectedObject = GuiService.SelectedObject
if not selectedObject then
return
end
if key == Enum.KeyCode.Up then
if not selectedObject.NextSelectionUp then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Down then
if not selectedObject.NextSelectionDown then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Left then
if not selectedObject.NextSelectionLeft then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Right then
if not selectedObject.NextSelectionRight then
GuiService.SelectedObject = selectedObject
end
end
end
end
UserInputService.InputBegan:Connect(updateSelection)

NextSelectionLeft

병렬 읽기

이 속성은 사용자가 게임 패드 선택기를 왼쪽으로 이동할 때 GuiObject 선택을 설정합니다. 이 속성이 비어 있으면 게임 패드를 왼쪽으로 이동하면 선택한 GUI가 변경되지 않습니다.

게임 패드 선택기를 왼쪽으로 이동하면 GuiService.SelectedObject 이 개체를 이 개체에 설정하지 않습니다. 이 속성을 설정하면 대부분의 GUI 요소가 선택 가능하지 않거나 선택 가능하지 않음을 나타냅니다.

또한 NextSelectionUp, NextSelectionDown, NextSelectionRight 를 참조하십시오.

코드 샘플

Creating a Gamepad Selection Grid

-- Setup the Gamepad selection grid using the code below
local container = script.Parent:FindFirstChild("Container")
local grid = container:GetChildren()
local rowSize = container:FindFirstChild("UIGridLayout").FillDirectionMaxCells
for _, gui in pairs(grid) do
if gui:IsA("GuiObject") then
local pos = gui.Name
-- Left edge
gui.NextSelectionLeft = container:FindFirstChild(pos - 1)
-- Right edge
gui.NextSelectionRight = container:FindFirstChild(pos + 1)
-- Above
gui.NextSelectionUp = container:FindFirstChild(pos - rowSize)
-- Below
gui.NextSelectionDown = container:FindFirstChild(pos + rowSize)
end
end
-- Test the Gamepad selection grid using the code below
local GuiService = game:GetService("GuiService")
local UserInputService = game:GetService("UserInputService")
GuiService.SelectedObject = container:FindFirstChild("1")
function updateSelection(input)
if input.UserInputType == Enum.UserInputType.Keyboard then
local key = input.KeyCode
local selectedObject = GuiService.SelectedObject
if not selectedObject then
return
end
if key == Enum.KeyCode.Up then
if not selectedObject.NextSelectionUp then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Down then
if not selectedObject.NextSelectionDown then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Left then
if not selectedObject.NextSelectionLeft then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Right then
if not selectedObject.NextSelectionRight then
GuiService.SelectedObject = selectedObject
end
end
end
end
UserInputService.InputBegan:Connect(updateSelection)

NextSelectionRight

병렬 읽기

이 속성은 사용자가 게임 패드 선택기를 오른쪽으로 이동할 때 GuiObject 선택을 설정합니다. 이 속성이 비어 있으면 게임 패드를 오른쪽으로 이동하면 선택한 GUI가 변경되지 않습니다.

게임 패드 선택기를 오른쪽으로 이동하면 GuiService.SelectedObject 이 개체를 이 개체에 설정하지 않습니다. 이 속성을 설정하면 이 개체에 대해 게임 GUI가 선택할 수 있지 않습니다. 이 속성을 설정하면 이 개체

또한 참조하십시오 NextSelectionUp, NextSelectionDownNextSelectionLeft.

코드 샘플

Creating a Gamepad Selection Grid

-- Setup the Gamepad selection grid using the code below
local container = script.Parent:FindFirstChild("Container")
local grid = container:GetChildren()
local rowSize = container:FindFirstChild("UIGridLayout").FillDirectionMaxCells
for _, gui in pairs(grid) do
if gui:IsA("GuiObject") then
local pos = gui.Name
-- Left edge
gui.NextSelectionLeft = container:FindFirstChild(pos - 1)
-- Right edge
gui.NextSelectionRight = container:FindFirstChild(pos + 1)
-- Above
gui.NextSelectionUp = container:FindFirstChild(pos - rowSize)
-- Below
gui.NextSelectionDown = container:FindFirstChild(pos + rowSize)
end
end
-- Test the Gamepad selection grid using the code below
local GuiService = game:GetService("GuiService")
local UserInputService = game:GetService("UserInputService")
GuiService.SelectedObject = container:FindFirstChild("1")
function updateSelection(input)
if input.UserInputType == Enum.UserInputType.Keyboard then
local key = input.KeyCode
local selectedObject = GuiService.SelectedObject
if not selectedObject then
return
end
if key == Enum.KeyCode.Up then
if not selectedObject.NextSelectionUp then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Down then
if not selectedObject.NextSelectionDown then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Left then
if not selectedObject.NextSelectionLeft then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Right then
if not selectedObject.NextSelectionRight then
GuiService.SelectedObject = selectedObject
end
end
end
end
UserInputService.InputBegan:Connect(updateSelection)

NextSelectionUp

병렬 읽기

이 속성은 사용자가 게임 패드 선택기를 위로 이동할 때 GuiObject 선택을 설정합니다. 이 속성이 비어 있으면 게임 패드를 위로 이동하면 선택한 GUI가 변경되지 않습니다.

게임 패드 선택기를 위로 이동하면 GuiService.SelectedObject 이 개체를 이 개체에 설정하지 않습니다. GUI가 선택 가능하지 않은 경우 이 속성을 설정하면 예상 행동을 얻을 수 있습니다. 이 속성을 설정하면 게임

또한 NextSelectionDown , NextSelectionLeft , NextSelectionRight 을 참조하십시오.

코드 샘플

Creating a Gamepad Selection Grid

-- Setup the Gamepad selection grid using the code below
local container = script.Parent:FindFirstChild("Container")
local grid = container:GetChildren()
local rowSize = container:FindFirstChild("UIGridLayout").FillDirectionMaxCells
for _, gui in pairs(grid) do
if gui:IsA("GuiObject") then
local pos = gui.Name
-- Left edge
gui.NextSelectionLeft = container:FindFirstChild(pos - 1)
-- Right edge
gui.NextSelectionRight = container:FindFirstChild(pos + 1)
-- Above
gui.NextSelectionUp = container:FindFirstChild(pos - rowSize)
-- Below
gui.NextSelectionDown = container:FindFirstChild(pos + rowSize)
end
end
-- Test the Gamepad selection grid using the code below
local GuiService = game:GetService("GuiService")
local UserInputService = game:GetService("UserInputService")
GuiService.SelectedObject = container:FindFirstChild("1")
function updateSelection(input)
if input.UserInputType == Enum.UserInputType.Keyboard then
local key = input.KeyCode
local selectedObject = GuiService.SelectedObject
if not selectedObject then
return
end
if key == Enum.KeyCode.Up then
if not selectedObject.NextSelectionUp then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Down then
if not selectedObject.NextSelectionDown then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Left then
if not selectedObject.NextSelectionLeft then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Right then
if not selectedObject.NextSelectionRight then
GuiService.SelectedObject = selectedObject
end
end
end
end
UserInputService.InputBegan:Connect(updateSelection)

Position

병렬 읽기

이 속성은 GuiObject 픽셀 및 스칼러 위치를 사용하여 위치를 결정합니다. 위치는 개체의 UDim2 주위에 중심이 있습니다.

직사각형 위치는 부모 GUI 요소의 크기와 상대적입니다.

Datatype.UDim2 값의 픽셀 부분은 모든 부모 GUI 크기에 동일합니다. 값은 개체의 위치를 픽셀로 나타냅니다. 개체의 실제 픽셀 위치는 GuiBase2d.AbsolutePosition 속성에서 읽을 수 있습니다.

Rotation

병렬 읽기

이 속성은 개체가 회전하는 정도를 결정합니다. 회전은 개체의 중심에 대한 것이며, GuiObjectClass.GuiObject.AnchorPoint|AnchorPoint 가 아니라는 것을 의미합니다. 또한 이 속성은

Selectable

병렬 읽기

이 속성은 게임 패드를 사용하여 GUI를 탐색할 때 GuiObject 를 선택할 수 있는지 여부를 결정합니다.

이 속성이 트루인 경우, GUI를 선택할 수 있습니다. GUI를 선택하면 GuiService.SelectedObject 속성도 해당 개체에 설정됩니다.

이 경우 GUI를 선택할 수 없습니다. 그러나 GUI를 선택하면 이 속성을 설정하면 선택한 GUI를 선택하지 않으며 GuiService.SelectedObject 속성의 값을 변경하지 않습니다.

Class.GuiObject.SelectionGained 및 GuiObject.SelectionLost 는 요소에 대해 발생하지 않습니다. 을 선택하면 GuiService.SelectedObject 속성을 변경해야 합니다.

이 속성은 다음과 같은 속성을 통해 여러 GUI에 연결된 GUI를 여러 개의 GUI에 연결하는 경우에 유용합니다. GuiObject.NextSelectionUp, Class

코드 샘플

Limiting TextBox Selection

local GuiService = game:GetService("GuiService")
local textBox = script.Parent
local function gainFocus()
textBox.Selectable = true
GuiService.SelectedObject = textBox
end
local function loseFocus(_enterPressed, _inputObject)
GuiService.SelectedObject = nil
textBox.Selectable = false
end
-- The FocusLost and FocusGained event will fire because the textBox
-- is of type TextBox
textBox.Focused:Connect(gainFocus)
textBox.FocusLost:Connect(loseFocus)

SelectionImageObject

병렬 읽기

이 속성은 게임 패드에 사용되는 기본 선택 장식을 재정의합니다.

선택한 SelectionImageObject 는 이미지의 GuiObjectSize 로 덮어씁니다. 최상의 결과를 위해, 사용자 정의 1> SelectionImageObject1> 를 크기를 조정하기 위해 크

Class.GuiObject 요소에 대한 선택 항목을 변경하면 해당 요소에만 영향을 줍니다. 사용자의 모든 GUI 요소에 영향을 미치려면 Class.PlayerGui.SelectionImageObject 속성을 설정하십시오.

사용자가 어떤 GUI 요소를 선택하는지 결정하거나 설정하려면 GuiService.SelectedObject 속성을 사용할 수 있습니다. 플레이어는 게임 패드를 사용하여 다

SelectionOrder

병렬 읽기

선택 순서가 낮은 GuiObjects는 게임 패드 선택을 시작하거나 GuiService:Select()를 부모에게 호출할 때 선택됩니다. 이 속성은 방향 탐색에 영향을 주지 않습니다. 기본값은 0입니다.

Size

병렬 읽기

이 속성은 GuiObject 스칼러 및 픽셀 크기를 결정하는 데 사용됩니다. UDim2 .

길이는 부모 GUI 요소의 크기와 상대적입니다.

Datatype.UDim2 값의 픽셀 부분은 모든 부모 GUI 크기에 동일합니다. 값은 개체의 픽셀 크기를 나타냅니다. 개체의 실제 픽셀 크기는 GuiBase2d.AbsoluteSize 속성에서 읽을 수 있습니다.

Class.GuiObject 가 부모가 있으면 각 축에 따라 크기가 영향을 받습니다. 부모의 SizeConstraint 는 부모의 크기에 영향을 줍니다.

코드 샘플

Health Bar

local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- Paste script into a LocalScript that is
-- parented to a Frame within a Frame
local frame = script.Parent
local container = frame.Parent
container.BackgroundColor3 = Color3.new(0, 0, 0) -- black
-- This function is called when the humanoid's health changes
local function onHealthChanged()
local human = player.Character.Humanoid
local percent = human.Health / human.MaxHealth
-- Change the size of the inner bar
frame.Size = UDim2.new(percent, 0, 1, 0)
-- Change the color of the health bar
if percent < 0.1 then
frame.BackgroundColor3 = Color3.new(1, 0, 0) -- black
elseif percent < 0.4 then
frame.BackgroundColor3 = Color3.new(1, 1, 0) -- yellow
else
frame.BackgroundColor3 = Color3.new(0, 1, 0) -- green
end
end
-- This function runs is called the player spawns in
local function onCharacterAdded(character)
local human = character:WaitForChild("Humanoid")
-- Pattern: update once now, then any time the health changes
human.HealthChanged:Connect(onHealthChanged)
onHealthChanged()
end
-- Connect our spawn listener; call it if already spawned
player.CharacterAdded:Connect(onCharacterAdded)
if player.Character then
onCharacterAdded(player.Character)
end

SizeConstraint

병렬 읽기

이 속성은 Size 자식이 부모의 크기와 관련하여 기반을 둔 GuiObject의 크기를 설정합니다.

이 속성은 부모 개체의 너비 또는 높이 크기 조정을 위한 GUI 개체를 만드는 데 유용합니다. 효과적으로 개체의 모양 비율을 유지하면서 부모 개체의 높이를 조정하는 경우와 같이 말이 됩니다.

Transparency

숨김
복제되지 않음
병렬 읽기

Class.GuiObject.BackgroundTransparency|BackgroundTransparency 및 TextTransparency의 혼합 속성.

Visible

병렬 읽기

이 속성은 GuiObject 및 그 후손이 렌더링됩니다.

Class.GuiObject 의 개별 구성 요소는 투명도 속성을 통해 개별적으로 제어될 수 있습니다. GuiObject.BackgroundTransparency, TextLabel.TextTransparency 및 1>Class.ImageLabel.ImageTransparency1> 을 통해 더 자세한 정보를 참조하세요.

이 속성이 false인 경우 GuiObject , UIListLayout 및 1> Class.UITableLayout1>와 같은 레이아웃 구조에서 요소가 무시됩니다. 즉, 요소가 다른 요소에 대해 사용자 공간을 차

코드 샘플

UI Window

local gui = script.Parent
local window = gui:WaitForChild("Window")
local toggleButton = gui:WaitForChild("ToggleWindow")
local closeButton = window:WaitForChild("Close")
local function toggleWindowVisbility()
-- Flip a boolean using the `not` keyword
window.Visible = not window.Visible
end
toggleButton.Activated:Connect(toggleWindowVisbility)
closeButton.Activated:Connect(toggleWindowVisbility)

ZIndex

병렬 읽기

이 속성은 GuiObject 가 다른 요소와 얼마나 순위를 매기는지 결정합니다.

기본적으로, GuiObjects 는 다음과 같은 우선 순위 순서로 렌더링됩니다, 여기에서 값이 가장 높은 ZIndex 값은 가장 낮은 값을 가진 사람

미래에 두 개의 기존 요소 사이에 요소를 추가해야 할지 확실하지 않은 경우 다음과 같은 모범 사례를 사용하여 100 ( 0 , 100 , 1> 2001> ,등을 포

또한 LayoutOrder 를 참조하십시오. 이는 레이아웃 구조와 함께 사용되는 Class.GuiObject 의 정렬 순서를 제어합니다. 이 구조는 레이아웃 구조와 함께 사용되는 GuiObject 또는 2>Class.UIGridLayout</

메서드

TweenPosition

지정된 시간에 지정된 새 위치로 간편하게 GUI를 이동합니다. UDim2Enum.EasingDirection 를 사용하여 지정된 위치에 간편하게 이동합니다.

이 함수는 트위닝이 플레이할지 여부를 반환합니다. 다른 트위닝이 GuiObject에 대해 작동하고 대체 매개 변수가 참이 아닌 경우 트위닝을 플레이하지 않습니다.

또한 참조하십시오.

매개 변수

endPosition: UDim2

GUI가 이동해야 하는 곳.

easingDirection: Enum.EasingDirection

GUI를 끝 위치로 쉽게 조정하는 방향입니다.

기본값: "Out"
easingStyle: Enum.EasingStyle

GUI를 끝 위치로 쉽게 조정하는 스타일.

기본값: "Quad"
time: number

트위넌 완료에 걸리는 시간(초).

기본값: 1
override: bool

트위넌이 진행 중인 트위넌을 덮어씁니다.

기본값: false
callback: function

트윈이 완료되면 호출하는 콜백 함수입니다.

기본값: "nil"

반환

트위닝이 플레이할지 여부.

코드 샘플

Tween a GUI's Position

local START_POSITION = UDim2.new(0, 0, 0, 0)
local GOAL_POSITION = UDim2.new(1, 0, 1, 0)
local guiObject = script.Parent
local function callback(state)
if state == Enum.TweenStatus.Completed then
print("The tween completed uninterrupted")
elseif state == Enum.TweenStatus.Canceled then
print("Another tween cancelled this one")
end
end
-- Initialize the GuiObject position, then start the tween:
guiObject.Position = START_POSITION
local willPlay = guiObject:TweenPosition(
GOAL_POSITION, -- Final position the tween should reach
Enum.EasingDirection.In, -- Direction of the easing
Enum.EasingStyle.Sine, -- Kind of easing to apply
2, -- Duration of the tween in seconds
true, -- Whether in-progress tweens are interrupted
callback -- Function to be callled when on completion/cancelation
)
if willPlay then
print("The tween will play")
else
print("The tween will not play")
end

TweenSize

지정된 시간에 지정된 새 UDim2Enum.EasingDirection 를 사용하여 새로운 Enum.EasingStyle를 원활하게 조정합니다.

이 함수는 트위닝이 플레이여부를 반환합니다. 일반적으로 이것은 항상 true를 반환하지만, 다른 트위닝이 활성화되어 있고 재생을 비활성으로 설정하면 false를 반환합니다.

또한 참조하십시오.

매개 변수

endSize: UDim2

GUI 크기를 조정해야 합니다.

easingDirection: Enum.EasingDirection

GUI를 끝 크기로 쉽게 조정하는 방향입니다.

기본값: "Out"
easingStyle: Enum.EasingStyle

GUI를 끝 크기로 쉽게 조정하는 스타일.

기본값: "Quad"
time: number

트위넌 완료에 걸리는 시간(초).

기본값: 1
override: bool

트위넌이 진행 중인 트위넌을 덮어씁니다.

기본값: false
callback: function

트윈이 완료되면 호출하는 콜백 함수입니다.

기본값: "nil"

반환

트위닝이 플레이할지 여부.

코드 샘플

Tween a GuiObject's Size

local guiObject = script.Parent
local function callback(didComplete)
if didComplete then
print("The tween completed successfully")
else
print("The tween was cancelled")
end
end
local willTween = guiObject:TweenSize(
UDim2.new(0.5, 0, 0.5, 0), -- endSize (required)
Enum.EasingDirection.In, -- easingDirection (default Out)
Enum.EasingStyle.Sine, -- easingStyle (default Quad)
2, -- time (default: 1)
true, -- should this tween override ones in-progress? (default: false)
callback -- a function to call when the tween completes (default: nil)
)
if willTween then
print("The GuiObject will tween")
else
print("The GuiObject will not tween")
end

TweenSizeAndPosition

Smoothly resizes and moves a GUI to a new UDim2 size and position in the specified time using the specified Enum.EasingDirection and Enum.EasingStyle .

이 함수는 트위닝이 플레이여부를 반환합니다. 일반적으로 이것은 항상 true를 반환하지만, 다른 트위닝이 활성화되어 있고 재생을 비활성으로 설정하면 false를 반환합니다.

또한 참조하십시오.

매개 변수

endSize: UDim2

GUI 크기를 조정해야 합니다.

endPosition: UDim2

GUI가 이동해야 하는 곳.

easingDirection: Enum.EasingDirection

GUI를 끝 크기로 및 끝 위치로 쉽게 조정하는 방향.

기본값: "Out"
easingStyle: Enum.EasingStyle

endSize 및 endPosition으로 GUI를 쉽게 조정하는 스타일.

기본값: "Quad"
time: number

트위넌 완료에 걸리는 시간(초).

기본값: 1
override: bool

트위넌이 진행 중인 트위넌을 덮어씁니다.

기본값: false
callback: function

트윈이 완료되면 호출하는 콜백 함수입니다.

기본값: "nil"

반환

트위닝이 플레이할지 여부.

코드 샘플

Tween a GUI's Size and Position

local frame = script.Parent.Frame
frame:TweenSizeAndPosition(UDim2.new(0, 0, 0, 0), UDim2.new(0, 0, 0, 0))

이벤트

InputBegan

이 이벤트는 사용자가 인간-컴퓨터 인터페이스 장치(마우스 버튼 다운, 터치 시작, 키보드 버튼 다운 등)를 통해 <Class.GuiObject>와 상호 작용하기 시작하면 발생합니다.

Class.UserInputService에는 특정 UI 요소에 제한되지 않은 이벤트가 있습니다: UserInputService.InputBegan.

이 이벤트는 게임 상태에 관계없이 항상 발생합니다.

또한 참조하십시오.

매개 변수

Class.InputObject, 사용자 입력의 유용한 데이터를 포함하여 사용자 입력의 쿼리에 유용한 데이터를 포함합니다. type of input , state of input 및 1>Class.InputObj.Position|screen coordinates1> .


코드 샘플

Tracking the Beginning of Input on a GuiObject

-- In order to use the InputBegan event, you must specify the GuiObject
local gui = script.Parent
-- A sample function providing multiple usage cases for various types of user input
local function inputBegan(input)
if input.UserInputType == Enum.UserInputType.Keyboard then
print("A key is being pushed down! Key:", input.KeyCode)
elseif input.UserInputType == Enum.UserInputType.MouseButton1 then
print("The left mouse button has been pressed down at", input.Position)
elseif input.UserInputType == Enum.UserInputType.MouseButton2 then
print("The right mouse button has been pressed down at", input.Position)
elseif input.UserInputType == Enum.UserInputType.Touch then
print("A touchscreen input has started at", input.Position)
elseif input.UserInputType == Enum.UserInputType.Gamepad1 then
print("A button is being pressed on a gamepad! Button:", input.KeyCode)
end
end
gui.InputBegan:Connect(inputBegan)

InputChanged

이 이벤트는 사용자가 인간-컴퓨터 인터페이스 장치(마우스 버튼 다운, 터치 시작, 키보드 버튼 다운 등)를 통해 상호 작용하는 방식을 변경할 때 발생합니다.

Class.UserInputService에는 특정 UI 요소에 제한되지 않은 이벤트가 있습니다. UserInputService.InputChanged .

이 이벤트는 게임 상태에 관계없이 항상 발생합니다.

또한 참조하십시오.

매개 변수

Class.InputObject, 사용자 입력의 유용한 데이터를 포함하여 사용자 입력의 쿼리에 유용한 데이터를 포함합니다. type of input , state of input 및 1>Class.InputObj.Position|screen coordinates1> .


코드 샘플

GuiObject InputChanged Demo

local UserInputService = game:GetService("UserInputService")
local gui = script.Parent
local function printMovement(input)
print("Position:", input.Position)
print("Movement Delta:", input.Delta)
end
local function inputChanged(input)
if input.UserInputType == Enum.UserInputType.MouseMovement then
print("The mouse has been moved!")
printMovement(input)
elseif input.UserInputType == Enum.UserInputType.MouseWheel then
print("The mouse wheel has been scrolled!")
print("Wheel Movement:", input.Position.Z)
elseif input.UserInputType == Enum.UserInputType.Gamepad1 then
if input.KeyCode == Enum.KeyCode.Thumbstick1 then
print("The left thumbstick has been moved!")
printMovement(input)
elseif input.KeyCode == Enum.KeyCode.Thumbstick2 then
print("The right thumbstick has been moved!")
printMovement(input)
elseif input.KeyCode == Enum.KeyCode.ButtonL2 then
print("The pressure being applied to the left trigger has changed!")
print("Pressure:", input.Position.Z)
elseif input.KeyCode == Enum.KeyCode.ButtonR2 then
print("The pressure being applied to the right trigger has changed!")
print("Pressure:", input.Position.Z)
end
elseif input.UserInputType == Enum.UserInputType.Touch then
print("The user's finger is moving on the screen!")
printMovement(input)
elseif input.UserInputType == Enum.UserInputType.Gyro then
local _rotInput, rotCFrame = UserInputService:GetDeviceRotation()
local rotX, rotY, rotZ = rotCFrame:toEulerAnglesXYZ()
local rot = Vector3.new(math.deg(rotX), math.deg(rotY), math.deg(rotZ))
print("The rotation of the user's mobile device has been changed!")
print("Position", rotCFrame.p)
print("Rotation:", rot)
elseif input.UserInputType == Enum.UserInputType.Accelerometer then
print("The acceleration of the user's mobile device has been changed!")
printMovement(input)
end
end
gui.InputChanged:Connect(inputChanged)

InputEnded

사용자가 인간-컴퓨터 인터페이스 장치(마우스 버튼 다운, 터치 시작, 키보드 버튼 다운 등)를 통해 상호 작용을 중지할 때 입력 완료 이벤트가 발생합니다.The InputEnded event fires when a user stops interacting via a Human-Computer Interface device (Mouse button down, touch begin, keyboard button down, etc).

Class.UserInputService에는 특정 UI 요소에 제한되지 않은 이벤트가 있습니다. UserInputService.InputEnded .

이 이벤트는 게임 상태에 관계없이 항상 발생합니다.

또한 참조하십시오.

매개 변수

Class.InputObject, 사용자 입력의 유용한 데이터를 포함하여 사용자 입력의 쿼리에 유용한 데이터를 포함합니다. type of input , state of input 및 1>Class.InputObj.Position|screen coordinates1> .


코드 샘플

Tracking the End of Input on a GuiObject

-- In order to use the InputChanged event, you must specify a GuiObject
local gui = script.Parent
-- A sample function providing multiple usage cases for various types of user input
local function inputEnded(input)
if input.UserInputType == Enum.UserInputType.Keyboard then
print("A key has been released! Key:", input.KeyCode)
elseif input.UserInputType == Enum.UserInputType.MouseButton1 then
print("The left mouse button has been released at", input.Position)
elseif input.UserInputType == Enum.UserInputType.MouseButton2 then
print("The right mouse button has been released at", input.Position)
elseif input.UserInputType == Enum.UserInputType.Touch then
print("A touchscreen input has been released at", input.Position)
elseif input.UserInputType == Enum.UserInputType.Gamepad1 then
print("A button has been released on a gamepad! Button:", input.KeyCode)
end
end
gui.InputEnded:Connect(inputEnded)

MouseEnter

MouseEnter 이벤트는 사용자가 마우스를 GUI 요소에 이동할 때 발생합니다.

이 이벤트의 xy 인수가 사기성 방식으로 사용자의 마우스가 어디에 있는지 결정하는 데 사용된 것으로 간주되지 마십시오. 이 좌표는 마우스가 단위를 입력하는 위치를 나타내기 때문에 마우스가

이 이벤트는 다른 요소 아래에 있는 GUI 요소가 렌더링할 때에도 발생합니다.

사용자의 마우스가 GUI 요소를 떠날 때 추적하려면 GuiObject.MouseLeave 이벤트를 사용할 수 있습니다.

또한 참조하십시오.

매개 변수

마우스왼쪽 상단 모서리에 대해 x축 코ор디네이트, 상단 왼쪽 모서리에 대해 상대적인 코르디네이트입니다.

화면의 왼쪽 상단 모서리에 대해 마우스의 y 화면 좌표입니다.


코드 샘플

Printing where a Mouse Enters a GuiObject

local guiObject = script.Parent
guiObject.MouseEnter:Connect(function(x, y)
print("The user's mouse cursor has entered the GuiObject at position", x, ",", y)
end)

MouseLeave

마우스 떠나기 이벤트는 사용자가 마우스를 GUI 요소 밖으로 이동할 때 발생합니다.

이 이벤트의 xy 인수가 사기성 방식으로 사용자의 마우스 위치를 결정하는 데 사용된 것으로 알려져 있습니다. 이 좌표는 마우스가 GUI를 떠나는 위치를 결정하는 데 사용되는 것과 같은 경

이 이벤트는 다른 요소 아래에 있는 GUI 요소가 렌더링할 때에도 발생합니다.

또한 참조하십시오.

매개 변수

마우스왼쪽 상단 모서리에 대해 x축 코ор디네이트, 상단 왼쪽 모서리에 대해 상대적인 코르디네이트입니다.

화면의 왼쪽 상단 모서리에 대해 마우스의 y 화면 좌표입니다.


MouseMoved

사용자가 GUI 요소 내에 있는 동안 마우스를 이동하면 발생합니다. 이 기능은 Mouse.Move 와 유사합니다.

참고, 이 이벤트는 마우스 위치가 업데이트되면 발생하므로 이동 중에 반복해서 발생합니다.

x 및 y 인수는 사용자 마우스의 픽셀 기준 화면 좌표를 나타냅니다. 이 인수는 마우스의 이전 위치를 추적하는 경우 전역 변수에 대한 마우스의 위치를 결정하는 데 유용할 수 있습니다.

아래 코드는 사용자의 마우스 대비 GUI 요소의 마이크로 오프셋을 결정하는 방법을 보여줍니다.The code below demonstrates how to determine the Vector2 offset of the user's mouse relative to a GUI element:


local CustomScrollingFrame = script.Parent
local SubFrame = CustomScrollingFrame:FindFirstChild("SubFrame")
local mouse = game.Players.LocalPlayer:GetMouse()
function getPosition(X, Y)
local gui_X = CustomScrollingFrame.AbsolutePosition.X
local gui_Y = CustomScrollingFrame.AbsolutePosition.Y
local pos = Vector2.new(math.abs(X - gui_X), math.abs(Y - gui_Y - 36))
print(pos)
end
CustomScrollingFrame.MouseMoved:Connect(getPosition)

사용자의 마우스가 GUI 요소에 들어가거나 나가면 이 이벤트가 정확하게 발생하지 않습니다. 따라서 xy 인수가 구석의 좌표와 일치하지 않을 수 있습니다.

또한 참조하십시오.

매개 변수

마우스왼쪽 상단 모서리에 대해 x축 코ор디네이트, 상단 왼쪽 모서리에 대해 상대적인 코르디네이트입니다.

화면의 왼쪽 상단 모서리에 대해 마우스의 y 화면 좌표입니다.


MouseWheelBackward

사용자가 마우스 휠을 마우스 요소 위에 올릴 때 휠백 이벤트가 발생합니다. 이 이벤트는 마우스 휠을 마우스 요소 위에 올릴 때 발생합니다. 이 이벤트는 마우스 휠을 마우스 요소 위에 올릴 때 발생합니다. 이 이벤트는 마우스 휠을 마우스 요소 위

이 이벤트는 바퀴의 뒤로 이동하는 단순한 표시자 역할을 합니다. 이는 x 및 y 마우스 좌표 인수가 이 이벤트의 결과로 변경되지 않음을 의미합니다. 이 좌표는 마우스가 이동할 때만 변경되며, 이 이벤트는 GuiObject.MouseMoved 이벤트를 통해 추적할 수 있는 트랙에 대한 변

또한 참조하십시오.

매개 변수

마우스왼쪽 상단 모서리에 대해 x축 코ор디네이트, 상단 왼쪽 모서리에 대해 상대적인 코르디네이트입니다.

화면의 왼쪽 상단 모서리에 대해 마우스의 y 화면 좌표입니다.


MouseWheelForward

사용자가 마우스 휠을 마우스 위에 있는 GUI 요소 위로 스크롤하면 휠 포워드 이벤트가 발생합니다. 이 이벤트는 마우스 휠이 있는 경우에도 마찬가지입니다. Mouse.WheelForward, 마우스 휠이 있는 경우에도 마찬가지입니다.

이 이벤트는 바퀴의 앞쪽 이동을 나타내는 단순한 표시자로 발생합니다. 이를 통해 x 및 y 마우스 좌표 인수가 이 이벤트의 결과로 변경되지 않습니다. 이 좌표는 마우스가 이동할 때만 변경되며, 이는 GuiObject.MouseMoved 이벤트를 통해 추적할 수 있는 마우스 이동만 해당됩니다.

또한 참조하십시오.

매개 변수

마우스왼쪽 상단 모서리에 대해 x축 코ор디네이트, 상단 왼쪽 모서리에 대해 상대적인 코르디네이트입니다.

사용자의 마우스의 y 좌표.


SelectionGained

이 이벤트는 Gamepad 선택기가 GuiObject 에 집중하기 시작할 때 발생합니다.

게임 패드에서 확인하려면 게이UI 요소에 집중하지 않고 GuiObject.SelectionLost 이벤트를 사용할 수 있습니다.

GUI가 선택 포커스를 얻을 때, SelectedObject 속성의 값도 선택 포커스에 변경됩니다. 어떤 GUI가 선택을 얻었는지 결정하려면 이 속성의 값을 확인하십시오.


코드 샘플

Handling GUI Selection Gained

local guiObject = script.Parent
local function selectionGained()
print("The user has selected this button with a gamepad.")
end
guiObject.SelectionGained:Connect(selectionGained)

SelectionLost

이 이벤트는 Gamepad 선택기가 GUI 에 집중하지 않을 때 발생합니다.

게임 패드에서 확인하려면 시작을 GuiObject.SelectionGained 이벤트로 선택하십시오.

Class.GuiService.SelectionObject|SelectionObject 속성의 값이 선택 포커스를 잃게 되면 선택 포커스를 얻은 GUI 요소의 값이 일반적으로 0으로 변경되거나 GUI 요소에 선택 포커스를 얻는 경우 일반적으로 0으로 변경됩니다. 선택 포커스를 얻은 경우 또는 선택 포커스를 얻지 않은 경우 이 속


코드 샘플

Handling GUI Selection Lost

local guiObject = script.Parent
local function selectionLost()
print("The user no longer has this selected with their gamepad.")
end
guiObject.SelectionLost:Connect(selectionLost)

TouchLongPress

TouchLongPress 이벤트는 플레이어가 터치 기기사용하여 손가락을 화면에 올리는 순간부터 발생합니다.

이 이벤트는 단지 하나의 손가락을 필요로 하기 때문에 Studio에서 에뮬레이터와 마우스를 사용하여 시뮬레이션할 수 있습니다.

매개 변수

touchPositions: Array

손가락이 제스처에 관련된 위치를 설명하는 Vector2 배열.

Enum.UserInputState 는 제스처의 상태를 설명합니다.

  • 시작 시 화살표 표시(브리프 지연 후)
  • 플레이어가 손가락을 내려 앉히면 화재를 변경합니다.
  • 손가락을 내놓을 때 끝에 한 번 더 화재를 일으킵니다.

코드 샘플

Move UI Element with TouchLongPress

local frame = script.Parent
frame.Active = true
local dragging = false
local basePosition
local startTouchPosition
local borderColor3
local backgroundColor3
local function onTouchLongPress(touchPositions, state)
if state == Enum.UserInputState.Begin and not dragging then
-- Start a drag
dragging = true
basePosition = frame.Position
startTouchPosition = touchPositions[1]
-- Color the frame to indicate the drag is happening
borderColor3 = frame.BorderColor3
backgroundColor3 = frame.BackgroundColor3
frame.BorderColor3 = Color3.new(1, 1, 1) -- White
frame.BackgroundColor3 = Color3.new(0, 0, 1) -- Blue
elseif state == Enum.UserInputState.Change then
local touchPosition = touchPositions[1]
local deltaPosition = UDim2.new(
0,
touchPosition.X - startTouchPosition.X,
0,
touchPosition.Y - startTouchPosition.Y
)
frame.Position = basePosition + deltaPosition
elseif state == Enum.UserInputState.End and dragging then
-- Stop the drag
dragging = false
frame.BorderColor3 = borderColor3
frame.BackgroundColor3 = backgroundColor3
end
end
frame.TouchLongPress:Connect(onTouchLongPress)

TouchPan

플레이어가 터치 기기사용하여 UI 요소에 손가락을 이동할 때 TouchPan 이벤트가 발생합니다. GuiObject.TouchSwipe 가 발생하기 전에 잠깐 전에 발생하지 않으며 GuiObject.TouchTap 와 함께 사용하면 더

이 이벤트는 손가 움직임에 관련된 썸네트 화면 위치를 설명하는 Vector2 테이블로 발생합니다. 또한, 이 이벤트는 여러 번 발생합니다: Enum.UserInputState.Begin 후 잠깐 지연된

이 이벤트는 에뮬레이터와 마우스를 사용하여 Studio에서 시뮬레이션할 수 없습니다. 실제 터치 기능이 활성화된 장치가 있어야 합니다.

매개 변수

touchPositions: Array

모든 손가 움직임에 대해 위치를 나타내는 Vector2 개체의 Lua 배열.

totalTranslation: Vector2

시작 시점에서 팬 제스처가 얼마나 멀리 이동했는지 나타냅니다.

velocity: Vector2

각 차원에서 얼마나 빠르게 징후가 수행되는지 나타냅니다.

제스처의 Enum.UserInputState를 나타냅니다.


코드 샘플

Panning UI Element

local innerFrame = script.Parent
local outerFrame = innerFrame.Parent
outerFrame.BackgroundTransparency = 0.75
outerFrame.Active = true
outerFrame.Size = UDim2.new(1, 0, 1, 0)
outerFrame.Position = UDim2.new(0, 0, 0, 0)
outerFrame.AnchorPoint = Vector2.new(0, 0)
outerFrame.ClipsDescendants = true
local dragging = false
local basePosition
local function onTouchPan(_touchPositions, totalTranslation, _velocity, state)
if state == Enum.UserInputState.Begin and not dragging then
dragging = true
basePosition = innerFrame.Position
outerFrame.BackgroundTransparency = 0.25
elseif state == Enum.UserInputState.Change then
innerFrame.Position = basePosition + UDim2.new(0, totalTranslation.X, 0, totalTranslation.Y)
elseif state == Enum.UserInputState.End and dragging then
dragging = false
outerFrame.BackgroundTransparency = 0.75
end
end
outerFrame.TouchPan:Connect(onTouchPan)

TouchPinch

TouchPinch 이벤트는 플레이어가 두 개의 손가락을 사용하여 UI 기기핀치 또는 끌기 동작을 수행하는 경우 발생합니다.TouchPinch 이벤트는 두 개 이

이 이벤트는 손가락이 이 제스처에 관련된 상대 화면 위치를 설명하는 Vector2 테이블로 시작합니다. 또한, 이 이벤트는 잠깐 지연 후에

이 이벤트는 적어도 두 개의 손가락이 필요하기 때문에 Studio에서 에뮬레이터와 마우스를 사용하여 시뮬레이션할 수 없습니다. 실제 터치 기기필요해야 합니다.

매개 변수

touchPositions: Array

Datatype.Vector2 개체로 구성된 Lua 배열, 각각 핀치 제스처에 참여하는 모든 손가 위치를 나타냅니다.

scale: number

핀치 제스처의 시작 부분에서 차이를 나타내는 플롯.

velocity: number

핀치 스트레스가 얼마나 빠르게 발생하는지 나타내는 부동 소수점.

제스처의 Enum.UserInputState를 나타냅니다.


코드 샘플

Pinch/Pull Scaling

local innerFrame = script.Parent
local outerFrame = innerFrame.Parent
outerFrame.BackgroundTransparency = 0.75
outerFrame.Active = true
outerFrame.Size = UDim2.new(1, 0, 1, 0)
outerFrame.Position = UDim2.new(0, 0, 0, 0)
outerFrame.AnchorPoint = Vector2.new(0, 0)
outerFrame.ClipsDescendants = true
local dragging = false
local uiScale = Instance.new("UIScale")
uiScale.Parent = innerFrame
local baseScale
local function onTouchPinch(_touchPositions, scale, _velocity, state)
if state == Enum.UserInputState.Begin and not dragging then
dragging = true
baseScale = uiScale.Scale
outerFrame.BackgroundTransparency = 0.25
elseif state == Enum.UserInputState.Change then
uiScale.Scale = baseScale * scale -- Notice the multiplication here
elseif state == Enum.UserInputState.End and dragging then
dragging = false
outerFrame.BackgroundTransparency = 0.75
end
end
outerFrame.TouchPinch:Connect(onTouchPinch)

TouchRotate

플레이어가 두 손가락을 사용하여 피치하거나 끌기 동작을 UI 기기수행할 때 TouchRotate 이벤트가 발생합니다. 회전은 두 손가락 사이의 각도가 변경될 때 발생합니다. 이 이벤트는 GuiObject.TouchPan 와 함께

이 이벤트는 손가 움직임에 관련된 썸네트 화면 위치를 설명하는 Vector2 테이블로 발생합니다. 또한, 이 이벤트는 여러 번 발생합니다: Enum.UserInputState.Begin 후 잠깐 지연된

이 이벤트는 적어도 두 개의 손가락이 필요하기 때문에 Studio에서 에뮬레이터와 마우스를 사용하여 시뮬레이션할 수 없습니다. 실제 터치 기기필요해야 합니다.

매개 변수

touchPositions: Array

모든 손가 움직임에 대해 위치를 나타내는 Vector2 개체의 Lua 배열.

rotation: number

회전이 시작된 지점부터 얼마나 이동했는지 나타내는 부동 소수점입니다.

velocity: number

스냅 속도를 나타내는 부동 소수점입니다.

제스처의 Enum.UserInputState를 나타냅니다.


코드 샘플

Touch Rotation

local innerFrame = script.Parent
local outerFrame = innerFrame.Parent
outerFrame.BackgroundTransparency = 0.75
outerFrame.Active = true
outerFrame.Size = UDim2.new(1, 0, 1, 0)
outerFrame.Position = UDim2.new(0, 0, 0, 0)
outerFrame.AnchorPoint = Vector2.new(0, 0)
outerFrame.ClipsDescendants = true
local dragging = false
local baseRotation = innerFrame.Rotation
local function onTouchRotate(_touchPositions, rotation, _velocity, state)
if state == Enum.UserInputState.Begin and not dragging then
dragging = true
baseRotation = innerFrame.Rotation
outerFrame.BackgroundTransparency = 0.25
elseif state == Enum.UserInputState.Change then
innerFrame.Rotation = baseRotation + rotation
elseif state == Enum.UserInputState.End and dragging then
dragging = false
outerFrame.BackgroundTransparency = 0.75
end
end
outerFrame.TouchRotate:Connect(onTouchRotate)

TouchSwipe

터치 스와이프 이벤트는 터치 기기사용하여 UI 요소에 대한 스와이프 절차를 수행할 때 발생합니다. 스와이프 절차의 방향(위, 아래, 왼쪽 또는 오른쪽)과 관련된 터치 포인트 수를 변경합니다. 터치 스와이프는 일반적으로 모바일 UIs의 탭을 변경하는 데 사용됩니다.

이 이벤트는 단지 하나의 손가락을 필요로 하므로 Studio에서 에뮬레이터와 마우스를 사용하여 시뮬레이션할 수 있습니다.

매개 변수

swipeDirection: Enum.SwipeDirection

Direction 스와이프 동작의 방향을 나타내는 SwipeDirection 입니다. (위, 아래, 왼쪽 또는 오른쪽).

numberOfTouches: number

이 동작에 사용된 터치 포인트 수(일반적으로 1).


코드 샘플

Bouncing Color Picker

local frame = script.Parent
frame.Active = true
-- How far the frame should bounce on a successful swipe
local BOUNCE_DISTANCE = 50
-- Current state of the frame
local basePosition = frame.Position
local hue = 0
local saturation = 128
local function updateColor()
frame.BackgroundColor3 = Color3.fromHSV(hue / 256, saturation / 256, 1)
end
local function onTouchSwipe(swipeDir, _touchCount)
-- Change the BackgroundColor3 based on the swipe direction
local deltaPos
if swipeDir == Enum.SwipeDirection.Right then
deltaPos = UDim2.new(0, BOUNCE_DISTANCE, 0, 0)
hue = (hue + 16) % 255
elseif swipeDir == Enum.SwipeDirection.Left then
deltaPos = UDim2.new(0, -BOUNCE_DISTANCE, 0, 0)
hue = (hue - 16) % 255
elseif swipeDir == Enum.SwipeDirection.Up then
deltaPos = UDim2.new(0, 0, 0, -BOUNCE_DISTANCE)
saturation = (saturation + 16) % 255
elseif swipeDir == Enum.SwipeDirection.Down then
deltaPos = UDim2.new(0, 0, 0, BOUNCE_DISTANCE)
saturation = (saturation - 16) % 255
else
deltaPos = UDim2.new()
end
-- Update the color and bounce the frame a little
updateColor()
frame.Position = basePosition + deltaPos
frame:TweenPosition(basePosition, Enum.EasingDirection.Out, Enum.EasingStyle.Bounce, 0.7, true)
end
frame.TouchSwipe:Connect(onTouchSwipe)
updateColor()

TouchTap

터치 이벤트는 플레이어가 터치 기기사용하여 UI 요소에 대한 탭 동작을 수행할 때 발생합니다. 탭은 이동 관련 작업이 없는 간단한 하나의 빠른 하나의

이 이벤트는 단지 하나의 손가락을 필요로 하므로 Studio에서 에뮬레이터와 마우스를 사용하여 시뮬레이션할 수 있습니다.

매개 변수

touchPositions: Array

손가락이 제스처에 관련된 위치를 설명하는 Vector2 배열.


코드 샘플

Tap Transparency Toggle

local frame = script.Parent
frame.Active = true
local function onTouchTap()
-- Toggle background transparency
if frame.BackgroundTransparency > 0 then
frame.BackgroundTransparency = 0
else
frame.BackgroundTransparency = 0.75
end
end
frame.TouchTap:Connect(onTouchTap)