플러그인 은 기본 Studio 위젯, 플러그인 도구 모음, 플러그인 버튼 등을 만드는 주요 개체입니다. 이는 Studio의 사용자 지정 추가 기능(Add-on)이며, 플러그인 도구 모음, 플러그인 버튼 등을 포함합니다. <
코드 샘플
assert(plugin, "This script must be run as a plugin!")
-- Code beyond this point will execute only if the script is run as a plugin
-- Load the module and pass the plugin reference
local pluginModule = require(script.Parent.PluginModule)
pluginModule:Initialize(plugin)
-- Verify if the plugin reference was initialized
pluginModule:CheckForPluginGlobal()
local pluginModule = {}
local plugin -- Local plugin reference
-- Initialize the plugin reference if not already set
function pluginModule:Initialize(pluginReference: Plugin)
if plugin ~= pluginReference then
plugin = pluginReference
else
error("Plugin is already initialized")
end
end
-- Check if the plugin reference is set and print out appropriate info
function pluginModule:CheckForPluginGlobal()
if plugin ~= nil then
print("Plugin reference is set!")
else
warn("Plugin reference is missing!")
end
end
return pluginModule
요약
속성
사용자가 모델 탭에서 스튜디오에서 Collisions을 활성화했는지 여부를 반환합니다.
Studio에서 설정한 사용자 지정 그리드 스냅 크기를 반환합니다.
메서드
호출 플러그인의 상태를 활성으로 설정합니다.
- CreatePluginAction(actionId : string,text : string,statusTip : string,iconName : string,allowBinding : bool):PluginAction
Roblox Studio의 일반적인 수행 작업을 나타내는 개체 PluginAction 을 만듭니다. Toolbar 은 직접 연결되지 않은 Enum.Button 또는 2>Enum.Button2> 이 없습니다.
새로운 플러그인 메뉴를 생성합니다.
지정된 이름으로 새로운 PluginToolbar 생성.
플러그인을 비활성화합니다.
Enum.JointCreationMode 사용자가 모델 탭에서 스튜디오에서 설정한 것을 반환합니다.
플러그인이 활성화된 동안 사용할 수 있는 Mouse를 반환합니다.
현재 선택한 Enum.RibbonTool 을 반환합니다.
지정된 키가 없으면 이전에 저장된 값을 검색하거나 없으면 기본값인 n을 검색합니다.
이 플러그인이 활성화되어 있을 때 Plugin:Activate() 함수를 통해 활성화되면 반환합니다.
이 플러그인이 활성화된 상태에서 독점 마우스로 활성화하면 반환됩니다 true, after having been activated via the Plugin:Activate() 함수.
주어진 부품을 부정하고 결과적인 부정 작업을 반환합니다.
Roblox Studio의 기본 라인에 제공된 스크립트 인스턴스를 편집기 창에서 열려면 사용됩니다. 아르гу먼트가 제공되지 않으면 기본적으로 1로 설정됩니다.
콘텍스트 도움말 창을 열고 연결하는 위키 페이지로 연결합니다. url
사용자의 현재 선택에 대한 업로드 창을 엽니다.
지정된 Roblox Studio 도구를 활성화합니다.
주어진 UnionOperations를 별도로 분리하고 결과적인 부품을 반환합니다.
지정된 키에 대해 나중에 사용할 값을 저장합니다. 스튜디오가 닫힌 후에도 값이 지속됩니다.
매개 변수 사전을 주어 드래그 작업을 시작합니다.
지정된 부품을 연결하고 결과 UnionOperation을 반환합니다.
- CreateDockWidgetPluginGui(pluginGuiId : string,dockWidgetPluginGuiInfo : DockWidgetPluginGuiInfo):DockWidgetPluginGui
만들기 DockWidgetPluginGui 데이터 타입 DockWidgetPluginGuiInfo 을 제공합니다.
사용자가 로드할 수 있는 .fbx 애니메이션 파일을 열도록 프롬프트하고 애니메이션을 rigModel 에 삽입합니다.
사용자에게 .fbx 파일을 열도록 요청하고, 모델의 개별 구성 요소를 메쉬로 업로드하고, 애니메이션에 사용할 캐릭터 리그를 생성합니다. 이 모든 것은 Workspace에 로드됩니다.
Roblox Studio에서 창을 열고, 사용자가 지정한 assetType 에 따라 자산을 선택하도록 합니다. 선택한 자산Id를 반환하거나 -1이 창이 닫힌 경우.
사용자에게 현재 선택을 지정된 파일 이름과 함께 저장하라는 메시지를 표시합니다. 사용자가 파일을 저장한 경우 메시지가 반환됩니다.
이벤트
플러그인이 비활성화되면 발동됩니다.
Class.Plugin 이 실행을 중지하기 전에 즉시 화재됩니다.
속성
메서드
Activate
이 함수는 호출 플러그인의 상태를 활성으로 설정합니다. 플러그인을 활성화하면 마우스 컨트롤을 수행할 수 있습니다. Plugin:GetMouse() 메서드를 통해 마우스 컨트롤을 수행할 수 있습니다.
지정된 시간에 0개 또는 1개의 활성화된 플러그인이 있습니다. 플러그인을 활성화하면 다른 모든 플러그인(Plugin.Deactivation 이벤트를 받습니다)이 비활성화됩니다.
또한 참조하십시오.
- Plugin:IsActivatedWithExclusiveMouse() , 이 플러그인이 현재 활성화된 상태에서 전용 마우스로 활성화되면 이 함수를 통해 활성화되는 경우 반환합니다.
- Plugin.Unloading , 플러그인이 제거, 비활성화 또는 업데이트를 통해 즉시 실행되지 않으면 플러그인을 실행하지 않습니다.
매개 변수
플러그인을 활성화할지 여부를 지정하는 부울입니다. 예를 들어, PluginMouse 는 Plugin:GetMouse() 를 통해 검색할 수 있습니다.
반환
CreatePluginAction
이 함수는 Roblox Studio의 일반적인 수행 작업을 나타내는 개체인 PluginAction을 만듭니다. Toolbar 또는 Enum.Button 와 직접 연관된 것은 없습니다. 이 함수는 2>File → Advanced → Customize Shortcuts…2> 에 키
액션이 트리거되면 PluginAction.Triggered 이벤트가 신호화됩니다.
PluginActions가 제대로 작동하려면 이 함수를 사용하여 생성해야 합니다.
또한 참조하십시오.
- PluginMenu , 플러그인 액션 목록을 표시하고 하위 메뉴를 지원하는 Studio에 표시될 수 있는 컨텍스트 메뉴
- Plugin:CreatePluginMenu() , 플러그인 메뉴를 생성합니다.
매개 변수
다른 사람들이 이 플러그인 액션을 식별하는 고유한 문자열이어야 합니다.
액션표시 이름입니다.
액션대한 표시 설명입니다.
플러그인을 표시하는 아이콘의 이름입니다.
Class.PluginAction 가 Studio 바로가기 뷰에서 숨겨지는지 여부. 컨텍스트 액션에 유용합니다. 기본값은 true입니다.
반환
코드 샘플
local pluginAction = plugin:CreatePluginAction(
"HelloWorldAction",
"Hello World",
"Prints a 'Hello world!'",
"rbxasset://textures/sparkle.png",
true
)
pluginAction.Name = "Test Action"
local function actionTriggered()
print("Hello world!")
end
pluginAction.Triggered:Connect(actionTriggered)
CreatePluginMenu
이 함수는 Studio에 표시되는 목록의 PluginMenu 및 하위 메뉴를 지원하는 컨텍스트 메뉴를 만듭니다.
플러그인 메뉴가 제대로 작동하려면 이 함수를 사용하여 생성해야 합니다.
또한 참조하십시오.
- Plugin:CreatePluginAction() , 플러그인 액션을 생성합니다.
- PluginMenu.Title , 하위 메뉴로 사용할 때 표시되는 텍스트
- PluginMenu.Icon , 하위 메뉴로 표시될 아이콘
- PluginMenu:AddAction() , 지정된 동작을 메뉴에 추가합니다.
- PluginMenu:AddNewAction() , Studio의 사용자 지정 단축키 창에서 숨겨진 임시 액션을 생성합니다.
- PluginMenu:AddMenu() , 지정된 메뉴를 별도 섹터로 추가합니다.
- PluginMenu:AddSeparator() , 메뉴의 항목 사이에 구분자를 추가합니다.
- PluginMenu:Clear() , 메뉴를 지우고
- PluginMenu:ShowAsync() , 마우스 커서에 메뉴를 표시합니다. 아이템이 선택되거나 메뉴가 닫히면까지 생성됩니다. 선택한 작업이 트리거 이벤트를 발생시킵니다.
매개 변수
메뉴에 고유한 ID.
하위 메뉴로 사용할 텍스트.
하위 메뉴로 사용할 때 표시되는 아이콘입니다.
반환
코드 샘플
-- This code can be pasted into the command bar, but only once
local pluginMenu = plugin:CreatePluginMenu(math.random(), "Test Menu")
pluginMenu.Name = "Test Menu"
pluginMenu:AddNewAction("ActionA", "A", "rbxasset://textures/loading/robloxTiltRed.png")
pluginMenu:AddNewAction("ActionB", "B", "rbxasset://textures/loading/robloxTilt.png")
local subMenu = plugin:CreatePluginMenu(math.random(), "C", "rbxasset://textures/explosion.png")
subMenu.Name = "Sub Menu"
subMenu:AddNewAction("ActionD", "D", "rbxasset://textures/whiteCircle.png")
subMenu:AddNewAction("ActionE", "E", "rbxasset://textures/icon_ROBUX.png")
pluginMenu:AddMenu(subMenu)
pluginMenu:AddSeparator()
pluginMenu:AddNewAction("ActionF", "F", "rbxasset://textures/sparkle.png")
local toggle = Instance.new("BoolValue")
toggle.Name = "TogglePluginMenu"
toggle.Parent = workspace
local function onToggled()
if toggle.Value then
toggle.Value = false
local selectedAction = pluginMenu:ShowAsync()
if selectedAction then
print("Selected Action:", selectedAction.Text, "with ActionId:", selectedAction.ActionId)
else
print("User did not select an action!")
end
end
end
toggle.Changed:Connect(onToggled)
CreateToolbar
생성 탭에서 함수는 지정된 이름과 함께 새로운 Class.PluginToolbar를 생성합니다. 도구 모음은 다음에서 플러그인 버튼을 생성하는 데 사용할 수 있습니다.
매개 변수
도구 모음에 있는 버튼 그룹을 라벨링하는 표시 텍스트.
반환
코드 샘플
plugin:CreateToolbar("ExampleToolbar")
Deactivate
플러그인을 비활성화합니다. 이렇게 하면 활성화된 PluginMouse 에 연결된 플러그인이 해제됩니다.
또한 참조하십시오.
- Plugin:Activate() , 호출 플러그인의 상태를 활성화로 설정합니다.
- Plugin.Deactivation , 플러그인이 비활성화된 때 발동
- Plugin.Unloading , 플러그인이 제거, 비활성화 또는 업데이트를 통해 즉시 실행되지 않으면 플러그인을 실행하지 않습니다.
반환
GetJoinMode
Enum.JointCreationMode 사용자가 모델 탭에서 스튜디오에서 설정한 것을 반환합니다.
반환
GetMouse
GetMouse() 는 플러그인이 활성화된 상태에서 사용할 수 있는 PluginMouse를 반환합니다. Plugin:Activate()를 통해 플러그인이 활성화되었습니다.
반환
코드 샘플
local mouse = plugin:GetMouse()
local function button1Down()
print("Button 1 pressed from PluginMouse")
end
mouse.Button1Down:Connect(button1Down)
GetSelectedRibbonTool
SelectedRibbonTool 은 현재 선택한 Enum.RibbonTool 을 반환합니다. 이는 특정 도구와 일치하는 열거형을 반환합니다. 이 도구는 수동으로 또는 프로그래밍 방식으로 도구를 선택할 때 선택됩니다. 이 도구는 Plugin:SelectRibbonTool() 을 통해 선택됩니다.
반환
코드 샘플
plugin:SelectRibbonTool(Enum.RibbonTool.Move, UDim2.new())
task.wait() -- wait for next frame
local selectedRibbonTool = plugin:GetSelectedRibbonTool()
print("The selected RibbonTool is", selectedRibbonTool)
GetSetting
지정된 키가 없으면 이전에 저장된 값을 검색하거나 없으면 기본값인 n을 검색합니다.
동일한 플러그인 인스턴스가 여러 개 있으므로 이 값이 시간이 지남에 따라 동일하게 유지되지 않아야 합니다. 다른 플러그인 인스턴스는 언제든지 설정을 업데이트할 수 있습니다.
이 호출은 여러 인스턴스의 동일한 플러그인이 활성으로 읽고 쓰기 때문에 조용히 실패하고 nil 을 반환할 수 있습니다. 플러그인이 설정을 자주 쓰기를 기대하는 경우 이 호출 후 짧은 시간 후에 설정을 비교하여 임시로 사용 가능한 설정과 설정이 없는지 구분하십시오.
매개 변수
반환
코드 샘플
local RAN_BEFORE_KEY = "RanBefore"
local didRunBefore = plugin:GetSetting(RAN_BEFORE_KEY)
if didRunBefore then
print("Welcome back!")
else
plugin:SetSetting(RAN_BEFORE_KEY, true)
print("Welcome! Thanks for installing this plugin!")
end
IsActivated
이 함수는 현재 Plugin:Activate() 함수를 사용하여 활성화된 후 이 플러그인이 활성화되어 있는 경우 트루로 반환합니다.
반환
플러그인이 현재 활성인지 여부를 나타내는 부울입니다.
IsActivatedWithExclusiveMouse
이 함수는 플러그인이 현재 활성화된 상태에서 전용 마우스로 활성화되었으며 이 함수를 통해 활성화되었습니다. 이 함수가 진실로 반환하면 Plugin:Activate() 함수를 통해 PluginMouse 를 검색할 수 있습니다.
또한 참조하십시오.
- Plugin.Deactivation , 플러그인이 비활성화된 때 발동
- Plugin.Unloading , 플러그인이 제거, 비활성화 또는 업데이트를 통해 즉시 실행되지 않으면 플러그인을 실행하지 않습니다.
반환
이 플러그인이 현재 독점 마우스로 활성화되어 있는지 여부.
Negate
주어진 부품을 부정하고 결과적인 부정 작업을 반환합니다.
매개 변수
반환
OpenScript
Roblox Studio의 기본 라인에 제공된 스크립트 인스턴스를 편집기 창에서 열려면 사용됩니다. 아르гу먼트가 제공되지 않으면 기본적으로 1로 설정됩니다.
매개 변수
반환
코드 샘플
local newScript = Instance.new("Script")
newScript.Parent = workspace
plugin:OpenScript(newScript)
OpenWikiPage
콘텍스트 도움말 창을 열고 연결하는 위키 페이지로 연결합니다. url
매개 변수
반환
코드 샘플
plugin:OpenWikiPage("API:Class/BasePart")
SaveSelectedToRoblox
사용자의 현재 선택에 대한 업로드 창을 엽니다.
반환
SelectRibbonTool
지정된 Roblox Studio 도구를 활성화합니다. 도구가 창을 열면 위치 매개 변수는 화면에 표시해야 하는 위치를 지정합니다.
참고:
- 이 작업이 올바르게 작동하려면 개체를 선택해야 합니다.
- position 속성의 크기 조정 필드를 변경하더라도 대화 상자에는 영향을 주지 않습니다.
매개 변수
반환
Separate
주어진 UnionOperations를 별도로 분리하고 결과적인 부품을 반환합니다.
매개 변수
반환
SetSetting
지정된 키 아래에서 나중에 사용할 값을 저장합니다. 값은 Roblox Studio가 닫힌 후에도 지속됩니다. 이 설정은 JSON 형식의 맵으로 저장되며 문자열 열을 포함합니다. 배열은 먼저 숫자 키를 문자열로 변환하여 맵으로 자동으로 변환됩니다.
다음과 같은 설정 파일을 손상시킬 수 있는 캐릭터를 포함하여 JSON 형식에 추가 제한이 있음을 참고하십시오.
- Backslashes ( \ ) 키나 값에 있는 공백, 특히 탈출된 따옴표 ( \" ).
- 키에 새 줄( \n )이 있습니다.
- 열에 인용구(").
- 키에 대한 기간( )이 있습니다.
동일한 플러그인의 여러 인스턴스가 활성으로 데이터를 읽고 쓰면 이 호출은 조용히 실패할 수 있습니다. 플러그인이 자주 설정에 쓰기를 기대하는 경우 Plugin:GetSetting() 를 호출하여 데이터가 올바르게 기록되었는지 확인할 수 있습니다.
매개 변수
반환
코드 샘플
local RAN_BEFORE_KEY = "RunBefore"
local hasRunBefore = plugin:GetSetting(RAN_BEFORE_KEY)
if hasRunBefore then
print("Welcome back!")
else
print("Thanks for installing this plugin!")
plugin:SetSetting(RAN_BEFORE_KEY, true)
end
StartDrag
행 끌기 시작 은 매개 변수 사전을 사용하여 드래그 작업을 시작합니다. 매개 변수는 다음과 같습니다.
<tbody><tr><td><b>발신자</b></td><td>문자열</td><td><code>""</code></td><td>드래그 대상에 드래그 액션의 원본을 식별합니다.</td></tr><tr><td><b>MimeType</b></td><td>문자열</td><td><code>""</code></td><td>데이터 유형의 MIME 입니다.</td></tr><tr><td><b>데이터</b></td><td>문자열</td><td><code>""</code></td><td>끌기 액션대한 정보, 예를 들어 끌고 있는 것. 드롭 대상에 의해 사용되어야 합니다.</td></tr><tr><td><b>마우스 아이콘</b></td><td><code>Datatype.Content</code></td><td><code>""</code></td><td>마우스 커서를 사용하는 아이콘입니다. 비어 있으면 기본 커서를 사용합니다.</td></tr><tr><td><b>드래그 아이콘</b></td><td><code>Datatype.Content</code></td><td><code>""</code></td><td>드래그 중에 마우스 커서 아래에 있는 이미지를 렌더링합니다. 이 항목을 드래그하는 중이어야 합니다.</td></tr><tr><td><b>HotSpot</b></td><td><code>Datatype.Vector2</code></td><td><code>Datatype.Vector2.new(0, 0)</code></td><td>커서가 드래그 아이콘을 "붙잡아"둘 때 가장 왼쪽 상단의 픽셀 오프셋.</td></tr></tbody>
이름 | 유형 | 기본 | 설명 |
---|
또한 참조하십시오.
매개 변수
반환
코드 샘플
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)
CreateDockWidgetPluginGui
CreateDockWidgetPluginGui 는 지정한 DockWidgetPluginGui 에서 새로운 DockWidgetPluginGuiInfo 를 생성합니다. 첫 번째 매개 변수, 0> uginGuiId0>,는 독립적이고 일관된 문자열이어야 합니다. 이는 위젯의 도크 상태 및
매개 변수
위젯의 도크 상태 및 기타 내부 세부 정보를 저장하는 고유하고 일관된 식별자입니다.
Class.DockWidgetPluginGui 를 만들기 위해 설명합니다(초기 상태, 크기 등).
반환
코드 샘플
-- Create new 'DockWidgetPluginGuiInfo' object
local widgetInfo = DockWidgetPluginGuiInfo.new(
Enum.InitialDockState.Float, -- Widget will be initialized in floating panel
true, -- Widget will be initially enabled
false, -- Don't override the previous enabled state
200, -- Default width of the floating window
300, -- Default height of the floating window
150, -- Minimum width of the floating window (optional)
150 -- Minimum height of the floating window (optional)
)
-- Create new widget GUI
local testWidget = plugin:CreateDockWidgetPluginGui("TestWidget", widgetInfo)
local testButton = Instance.new("TextButton")
testButton.BorderSizePixel = 0
testButton.TextSize = 20
testButton.TextColor3 = Color3.new(1, 0.2, 0.4)
testButton.AnchorPoint = Vector2.new(0.5, 0.5)
testButton.Size = UDim2.new(1, 0, 1, 0)
testButton.Position = UDim2.new(0.5, 0, 0.5, 0)
testButton.SizeConstraint = Enum.SizeConstraint.RelativeYY
testButton.Text = "Click Me"
testButton.Parent = testWidget
ImportFbxAnimation
이 함수는 사용자가 로드할 수 있는 .fbx 애니메이션 파일을 열도록 요청하고 애니메이션을 rigModel 에 삽입합니다.
매개 변수
반환
ImportFbxRig
사용자에게 .fbx 파일을 열도록 요청하고, 모델의 개별 구성 요소를 메쉬로 업로드하고, 애니메이션에 사용할 캐릭터 리그를 생성합니다. 이 모든 것은 Workspace에 로드됩니다.
매개 변수
반환
PromptForExistingAssetId
Roblox Studio에서 창을 열고, 사용자가 지정한 assetType 에 따라 자산을 선택하도록 합니다. 선택한 자산Id를 반환하거나 -1이 창이 닫힌 경우.
매개 변수
반환
이벤트
Deactivation
Class.Plugin 을 비활성화하면 이 발생합니다. 이 경우 플러그인 코드가 Plugin:Deactivate() 를 호출하거나 다른 플러그인이 Plugin:Activate() 를 호출하면 모든 다른 플러그인이 활성 상태를 잃게 됩니다.
또한 참조하십시오.
- Plugin.Unloading , 플러그인이 제거, 비활성화 또는 업데이트를 통해 즉시 실행되지 않으면 플러그인을 실행하지 않습니다.
Unloading
이 이벤트는 Plugin이 실행되기 전에 즉시 발생합니다. 플러그인은 비활성화, 설치 해제, 업데이트 예정 또는 장소가 닫힐 때 해제됩니다.
이렇게 하면 스크립트가 실행되지 않기 전에 플러그인이 자동으로 클리어되므로 플러그인이 제대로 작동하지 않는 경우에도 플러그인을 클리어할 수 있습니다. 이렇게 하면 플러그인이 제대로 작동하지 않는 경우에도 플러그인을 제거해야 하는 경우가 발생할 수 있습니다. 이런 경
Class.PluginToolbarButton|PluginToolbarButtons, DockWidgetPluginGuis, PluginGuis 등의 플러그인 관련 인스턴스가 플러그인이 로드되지 않을 때 자동으로 클리어되므로 제거할 필요가 없습니다.