플러그인 가이드는 다양한 Roblox Studio 위젯에서 GuiObjects 를 표시하는 GUI를 위한 개체 클래스입니다. 현재 플러그인 가이드 유형은 DockWidgetPluginGui 이지만, 나중에는 더 많이 제공할 수 있습니다!
요약
속성
Class.PluginGui 의 콘텐츠 위에 표시되는 타이틀.
이 LayerCollector 의 가시성을 전환합니다.
플레이어의 캐릭터가 재생성할 때마다 LayerCollector를 다시 클론하는지 여부를 결정합니다.
이 GuiObject.ZIndex 의 모든 후손에 대해 LayerCollector 가 어떻게 동작하는지 제어합니다.
UI 요소의 실제 화면 위치를 픽셀로 설명합니다.
UI 요소의 실제 화면 회전을 정도로 설명합니다.
UI 요소의 실제 화면 크기를 픽셀로 설명합니다.
설정을 사용하면 이 GuiBase2d와 그 후손에 대해 현지화가 적용됩니다.
이 GuiBase2d와 그 후손에 자동화 로컬화를 적용하기 위한 LocalizationTable 참조.
아래로 향하는 게임 패드 선택 동작을 사용자 정의합니다.
왼쪽 방향에서 게임 패드 선택 동작을 사용자 정의합니다.
오른쪽 방향으로 게임 패드 선택 동작을 사용자 정의합니다.
게임 패드 선택 동작을 위쪽으로 사용자 정의합니다.
게임 패드 선택 이동을 사용자 정의할 수 있습니다.
메서드
기본 동작을 재정의하기 위해 PluginGui 닫기 버튼에 함수를 바인딩합니다.
플러그인 가이드와 관련된 마우스의 위치를 반환합니다.
이벤트
Class.Plugin:StartDrag()를 시작하는 드래그 작업 동안 플러그인 가이드 위에 마우스를 릴리스하면 발동됩니다.
Class.Plugin:StartDrag() 동안 마우스가 플러그인 가이드에 들어가면 플러그인 가이드에서 플러그인을 실행하도록 합니다.
Class.Plugin:StartDrag() 를 시작하는 드래그 작업 동안 사용자의 마우스가 플러그인 가이드를 떠나면 화면이 잠깐 응답합니다.
Class.Plugin:StartDrag() 를 시작하는 드래그 작업 동안 사용자의 마우스가 플러그인 가이드 내에서 이동하면 화면이 켜집니다.
사용자가 PluginGui 창을 더 이상 상호 작용하지 않을 때 화재됩니다.
사용자가 PluginGui 창에 상호 작용을 시작할 때 화재됩니다.
- SelectionChanged(amISelected : bool,previousSelection : GuiObject,newSelection : GuiObject):RBXScriptSignal
게임 패드 선택이 이동하거나 떠나거나 연결된 GuiBase2d 또는 모든 하위 GuiObjects 내에서 변경되면 화면에 표시됩니다.
속성
메서드
BindToClose
이 함수는 기본 동작을 재정의하기 위해 PluginGui 닫기 버튼에 함수를 바인딩합니다.
기본적으로 사용자가 PluginGui의 오른쪽 상단 모서리에 있는 'x' 버튼을 클릭하면 Enabled 속성이 false로 설정되어 창을 닫습니다. 사용자 지정 함수를 사용하여 바인딩을 설정하면
이 함수로 기본 닫기 동작이 재정의되면 PluginGui 를 수동으로 닫기 위해 PluginGui.Enabled 를 설정하여 Class.PluginGui 를 클로스 하 여야 합니다. 예를 들어, 다음 스냅샷에서 사용자는 확인 버튼을 클릭 하여
local closing = false
pluginGui:BindToClose(function()
-- 버튼을 만들지 않았는지 확인하십시오
if closing then
return
end
closing = true
-- 생성 확인 버튼
local confirmButton = Instance.new("TextButton")
confirmButton.AnchorPoint = Vector2.new(0.5, 0.5)
confirmButton.Size = UDim2.new(0.5, 0, 0.5, 0)
confirmButton.Position = UDim2.new(0.5, 0, 0.5, 0)
confirmButton.BackgroundColor3 = Color3.new(1, 0, 0)
confirmButton.Text = "Close?"
confirmButton.Parent = pluginGui
-- 클릭을 들으세요
confirmButton.Activated:Connect(function()
-- gui를 닫습니다.
pluginGui.Enabled = false
-- 확인 버튼 제거
confirmButton:Destroy()
end)
end)
BindToClose에 아무 인수도 지정하지 않고 'unbind'를 호출하고 위에 설명된 대로 기본 동작으로 되돌릴 수 있습니다. 예를 들어:
pluginGui:BindToClose()
또한 참조하십시오.
- DataModel:BindToClose(), 이 함수를 게임 종료에 바인딩하는 데 사용되며 이 함수와 혼동하지 마십시오.
매개 변수
닫기 버튼에 바인딩할 함수를 지정합니다. 지정된 함수가 없으면 이전에 지정된 함수가 바인딩 해제됩니다.
반환
GetRelativeMousePosition
GetRelativeMousePosition는 플러그인 가이드의 왼쪽 상단 모서리에 마우스의 위치를 반환합니다. 반환된 값은 플러그인 가이드에서 마우스 입력이 시작된 경우에만 변경되며 현재 창을 마우스가 포함되어 있는 경우에만 마우스가 포함되어 있는 경우에만 마우스가 포함되어 있는 경우에만 마우스가 포함되어 있는 경우에만 마우스가
반환
플러그인 가이드와 관련된 마우스 위치의 화면.
코드 샘플
local RunService = game:GetService("RunService")
local widgetInfo = DockWidgetPluginGuiInfo.new(
Enum.InitialDockState.Float,
true,
false, -- Enabled state, override
200,
300, -- Size
150,
150 -- Minimum size
)
local testWidget = plugin:CreateDockWidgetPluginGui("TestWidget", widgetInfo)
function update()
local v2 = testWidget:GetRelativeMousePosition()
testWidget.Title = ("(%d, %d)"):format(v2.x, v2.y)
end
RunService.Stepped:Connect(update)
update()
이벤트
PluginDragDropped
플러그인 드래그 드롭 은 사용자가 PluginGui 를 드래그하기 시작한 동안 Plugin:StartDrag() 의 마우스를 드래그하면 실행됩니다.
또한 참조하십시오.
매개 변수
코드 샘플
assert(plugin, "This script must be run as a Studio plugin")
local widgetInfo = DockWidgetPluginGuiInfo.new(Enum.InitialDockState.Float, true, true, 300, 200)
local dragSourceWidget = plugin:CreateDockWidgetPluginGui("Drag Source", widgetInfo)
dragSourceWidget.Title = "Drag Source"
local textBox = Instance.new("TextBox")
textBox.Parent = dragSourceWidget
textBox.Size = UDim2.new(1, 0, 0, 32)
textBox.Text = "Hello, plugin drags"
local dragButton = Instance.new("TextButton")
dragButton.Size = UDim2.new(1, 0, 1, -32)
dragButton.Position = UDim2.new(0, 0, 0, 32)
dragButton.Text = "Edit the text above, then start drag here"
dragButton.Parent = dragSourceWidget
function onMouseButton1Down()
local dragData = {
Sender = "SomeDragSource",
MimeType = "text/plain",
Data = textBox.Text,
MouseIcon = "",
DragIcon = "",
HotSpot = Vector2.new(0, 0),
}
plugin:StartDrag(dragData)
end
dragButton.MouseButton1Down:Connect(onMouseButton1Down)
-- This widget will receive drops
local dragTargetWidget = plugin:CreateDockWidgetPluginGui("Drop Target", widgetInfo)
dragTargetWidget.Title = "Drop Target"
-- This TextLabel will display what was dropped
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(1, 0, 1, 0)
textLabel.Text = "Drop here..."
textLabel.Parent = dragTargetWidget
local function onDragDrop(dragData)
if dragData.MimeType == "text/plain" then
textLabel.Text = dragData.Data
else
textLabel.Text = dragData.MimeType
end
end
dragTargetWidget.PluginDragDropped:Connect(onDragDrop)
dragTargetWidget.PluginDragEntered:Connect(function(_dragData)
print("PluginDragEntered")
end)
dragTargetWidget.PluginDragLeft:Connect(function(_dragData)
print("PluginDragLeft")
end)
dragTargetWidget.PluginDragMoved:Connect(function(_dragData)
print("PluginDragMoved")
end)
PluginDragEntered
플러그인 드래그 입력 완료 는 사용자의 마우스가 PluginGui 를 드래그하는 동안 Class.Plugin:StartDrag() 에 의해 시작된 드래그 작업을 시작하면 발생합니다.
이 이벤트는 플러그인 가이드에서 드래그 작업을 드롭할 수 있는 "여기에 드롭" UI를 표시하는 데 유용합니다. 이 같은 UI는 PluginDragLeft 또는 PluginDragDropped 가 발생할 때 숨겨져야 합니다.
또한 참조하십시오.
매개 변수
원래 데이터를 Plugin:StartDrag()에 복사합니다.
코드 샘플
assert(plugin, "This script must be run as a Studio plugin")
local widgetInfo = DockWidgetPluginGuiInfo.new(Enum.InitialDockState.Float, true, true, 300, 200)
local dragSourceWidget = plugin:CreateDockWidgetPluginGui("Drag Source", widgetInfo)
dragSourceWidget.Title = "Drag Source"
local textBox = Instance.new("TextBox")
textBox.Parent = dragSourceWidget
textBox.Size = UDim2.new(1, 0, 0, 32)
textBox.Text = "Hello, plugin drags"
local dragButton = Instance.new("TextButton")
dragButton.Size = UDim2.new(1, 0, 1, -32)
dragButton.Position = UDim2.new(0, 0, 0, 32)
dragButton.Text = "Edit the text above, then start drag here"
dragButton.Parent = dragSourceWidget
function onMouseButton1Down()
local dragData = {
Sender = "SomeDragSource",
MimeType = "text/plain",
Data = textBox.Text,
MouseIcon = "",
DragIcon = "",
HotSpot = Vector2.new(0, 0),
}
plugin:StartDrag(dragData)
end
dragButton.MouseButton1Down:Connect(onMouseButton1Down)
-- This widget will receive drops
local dragTargetWidget = plugin:CreateDockWidgetPluginGui("Drop Target", widgetInfo)
dragTargetWidget.Title = "Drop Target"
-- This TextLabel will display what was dropped
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(1, 0, 1, 0)
textLabel.Text = "Drop here..."
textLabel.Parent = dragTargetWidget
local function onDragDrop(dragData)
if dragData.MimeType == "text/plain" then
textLabel.Text = dragData.Data
else
textLabel.Text = dragData.MimeType
end
end
dragTargetWidget.PluginDragDropped:Connect(onDragDrop)
dragTargetWidget.PluginDragEntered:Connect(function(_dragData)
print("PluginDragEntered")
end)
dragTargetWidget.PluginDragLeft:Connect(function(_dragData)
print("PluginDragLeft")
end)
dragTargetWidget.PluginDragMoved:Connect(function(_dragData)
print("PluginDragMoved")
end)
PluginDragLeft
PluginDragLeft 는 사용자의 마우스가 PluginGui 를 떠나 Plugin:StartDrag() 동안 드래그 작업을 시작했을 때 발생합니다.
이 이벤트 및 PluginDragDropped 은 플러그인 가이드에서 드래그 작업을 드롭할 수 있는 "여기에 드롭하기" UI를 숨기는 데 유용합니다. 이러한 UI는 PluginDragEntered 가 발생할 때 표시됩니다.
또한 참조하십시오.
매개 변수
원래 데이터를 Plugin:StartDrag()에 복사합니다.
코드 샘플
assert(plugin, "This script must be run as a Studio plugin")
local widgetInfo = DockWidgetPluginGuiInfo.new(Enum.InitialDockState.Float, true, true, 300, 200)
local dragSourceWidget = plugin:CreateDockWidgetPluginGui("Drag Source", widgetInfo)
dragSourceWidget.Title = "Drag Source"
local textBox = Instance.new("TextBox")
textBox.Parent = dragSourceWidget
textBox.Size = UDim2.new(1, 0, 0, 32)
textBox.Text = "Hello, plugin drags"
local dragButton = Instance.new("TextButton")
dragButton.Size = UDim2.new(1, 0, 1, -32)
dragButton.Position = UDim2.new(0, 0, 0, 32)
dragButton.Text = "Edit the text above, then start drag here"
dragButton.Parent = dragSourceWidget
function onMouseButton1Down()
local dragData = {
Sender = "SomeDragSource",
MimeType = "text/plain",
Data = textBox.Text,
MouseIcon = "",
DragIcon = "",
HotSpot = Vector2.new(0, 0),
}
plugin:StartDrag(dragData)
end
dragButton.MouseButton1Down:Connect(onMouseButton1Down)
-- This widget will receive drops
local dragTargetWidget = plugin:CreateDockWidgetPluginGui("Drop Target", widgetInfo)
dragTargetWidget.Title = "Drop Target"
-- This TextLabel will display what was dropped
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(1, 0, 1, 0)
textLabel.Text = "Drop here..."
textLabel.Parent = dragTargetWidget
local function onDragDrop(dragData)
if dragData.MimeType == "text/plain" then
textLabel.Text = dragData.Data
else
textLabel.Text = dragData.MimeType
end
end
dragTargetWidget.PluginDragDropped:Connect(onDragDrop)
dragTargetWidget.PluginDragEntered:Connect(function(_dragData)
print("PluginDragEntered")
end)
dragTargetWidget.PluginDragLeft:Connect(function(_dragData)
print("PluginDragLeft")
end)
dragTargetWidget.PluginDragMoved:Connect(function(_dragData)
print("PluginDragMoved")
end)
WindowFocusReleased
WindowFocusRelease 는 사용자가 창을 플러그인 가이드에 클릭하지 않고 창과 상호 작용하는 즉시 발생하며, 일반적으로 창 밖의 무언가를 클릭하여 작동합니다. 이 기능은 플러그인 가이드에 있는 UserInputService.WindowFocusReleased 이벤트와 동일합니다.
사용자가 이 플러그인 가이드에 있는 동안 포커스가 다른 PluginGui 로 이동하면 이 이벤트는 다른 사람의 WindowFocused 이벤트 보다 먼저 발생합니다. 그러나 주 게임 창이 포커스에
코드 샘플
local info = DockWidgetPluginGuiInfo.new(Enum.InitialDockState.Float, true, true, 200, 50, 1, 1)
local widget = plugin:CreateDockWidgetPluginGui("TestWidget", info)
local function onFocusReleased()
widget.Title = "I'm not in focus :("
end
local function onFocused()
widget.Title = "I'm in focus :D"
end
widget.WindowFocusReleased:Connect(onFocusReleased)
widget.WindowFocused:Connect(onFocused)
WindowFocused
WindowFocused 는 사용자가 플러그인 가이드 창과 상호 작용하는 즉시 발생하며, 일반적으로 클릭하여 발생합니다. 이 기능은 유사한 이름의 UserInputService.WindowFocused 이벤트와 마찬가지로 마우스 버튼과 관련된 모든 이벤트에서 작동합니다.
다른 PluginGui 가 포커스에 있고 사용자가 이 플러그인 가이드를 집중하면 이 이벤트는 다른 사람의 WindowFocusReleased 이벤트 후에 발생합니다. 그러나 메인 게임 창이 포커스에 있었다면 이
코드 샘플
local info = DockWidgetPluginGuiInfo.new(Enum.InitialDockState.Float, true, true, 200, 50, 1, 1)
local widget = plugin:CreateDockWidgetPluginGui("TestWidget", info)
local function onFocusReleased()
widget.Title = "I'm not in focus :("
end
local function onFocused()
widget.Title = "I'm in focus :D"
end
widget.WindowFocusReleased:Connect(onFocusReleased)
widget.WindowFocused:Connect(onFocused)