Plugin

Pokaż przestarzałe

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Brak możliwości tworzenia

Plugin jest głównym obiektem odpowiedzialnym za tworzenie podstawowych wtyczek Studio, konsol do wtyczek, przycisków wtyczki i więcej. Jest to dostosowany dodatek do Studio, który dodaje nowe zachowanie i funkcje, które nie są zwykle włączone. Obiekt dodatek plug-inmożna uzyskać poprze

Przykłady kodu

Script - Pass the Plugin Global to a ModuleScript

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()
ModuleScript - Receive and Store the Plugin Global

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

Podsumowanie

Właściwości

  • Tylko do odczytu
    Bez replikacji
    Odczyt równoległy

    Wróщает, czy użytkownik włączył Collisions w studio pod zakładką Modele w sekcji Model.

  • Odczyt równoległy
  • Tylko do odczytu
    Bez replikacji
    Odczyt równoległy

    Zwraca rozmiar ustawiony przez użytkownika w Studio.

Metody

Zdarzenia

Właściwości

CollisionEnabled

Tylko do odczytu
Bez replikacji
Odczyt równoległy

Wróщает, czy użytkownik włączył Collisions w studio pod zakładką Modele w sekcji Model.

DisableUIDragDetectorDrags

Odczyt równoległy
Zabezpieczenia skryptów Roblox

GridSize

Tylko do odczytu
Bez replikacji
Odczyt równoległy

Zwraca rozmiar ustawiony w grze przez użytkownika w Studio pod Model lub Avatar zakładkach. Uwaga, że ta właściwość może mieć nieznaczne błędy zaokrąglenia; na przykład może być 0.0099999997764826 dla ustawienia 1 lub 0.4000000059

Metody

Activate

void
Zabezpieczenia dodatku plug-in

Funkcja ta ustawia stan wtyczki wezwującej na aktywny. Aktywowanie wtyczki umożliwia kontrolę za pomocą myszy poprzez metodę Plugin:GetMouse().

W dowolnym momencie jest 0 lub 1 aktywowanych wtyczek. Aktualizacja wtyczki spowoduje, że wszystkie inne wtyczki zostaną wyłączone (będą otrzymywać wydarzenie Plugin.Deactivation ).

Zobacz również:

  • Plugin:IsActivatedWithExclusiveMouse() , zwraca prawdę, jeśli ten wtyczek jest obecnie aktywny za pomocą ekskluzywnej myszy, po aktywacji za pomocą tej funkcji
  • Plugin.Unloading , uruchamia natychmiastowo przed usunięciem lub ponownym ładowaniem wtyczki za pośrednictwem odinstalowania, dezaktywowania lub aktualizacji

Parametry

exclusiveMouse: bool

Boolean określający czy aktywować wtyczkę za pomocą wyłącznej myszy. Jeśli tak, można uzyskać dostęp do PluginMouse za pośrednictwem Plugin:GetMouse().


Zwroty

void

CreatePluginAction

Zabezpieczenia dodatku plug-in

Funkcja ta tworzy PluginAction, która jest obiektem, który reprezentuje genériczną akcję wykonawczą w Roblox Studio, bezpośrednio nie powiązany z Toolbar lub Enum.Button. W Roblox Studio można przypisać klawisz skrótów klawiaturowych pod 2> File → Zaawansow

Gdy akcja jest uruchomiona, wydarzenie PluginAction.Triggered jest sygnalizowane.

Aby PluginActions działały tak, jak powinny, muszą być utworzone przy użyciu tej funkcji.

Zobacz również:

  • PluginMenu , menu kontekstowe, które może być wyświetlone w Studio, które wyświetla listę PluginActions i wspiera podkatalogi
  • Plugin:CreatePluginMenu() , tworzy PluginMenu

Parametry

actionId: string

Musi to być unikalna wartość, która identyfikuje tę akcję plugin'ową od innych.

text: string

Wyświetlany nazwa akcji.

statusTip: string

Pokażone opis akcji.

iconName: string

Nazwa ikony używanej do wyświetlenia dodatek plug-in.

Wartość domyślna: ""
allowBinding: bool

Czy PluginAction będzie ukryty z krótkiego widoku Studio. Przydatny dla działań kontekstowych. Domyślnie ustawiony na prawdę.

Wartość domyślna: true

Zwroty

Przykłady kodu

Creating a PluginAction

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

Zabezpieczenia dodatku plug-in

Funkcja ta tworzy nowy PluginMenu, który jest menu kontekstowego, które może być wyświetlane w Studio, które wyświetla listę PluginActions i wspiera podkatalogi.

Aby PluginMenus działały tak, jak powinny, muszą one być utworzone przy użyciu tej funkcji.

Zobacz również:

Parametry

id: string

Unikalne ID dla menu.

title: string

Tekst do wyświetlenia podczas używania jako podrzędnego menu.

Wartość domyślna: ""
icon: string

Ikona do wyświetlenia podczas używania jako podmiotu menu.

Wartość domyślna: ""

Zwroty

Przykłady kodu

Creating a PluginMenu and PluginMenuAction

-- 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

Zabezpieczenia dodatku plug-in

Funkcja CreateToolbar tworzy nowy PluginToolbar z podanym nazwą. Toolbar może następnie być używany do tworzenia przycisków plugin.

Parametry

name: string

Widoczny tekst na pasku narzędzi, oznaczający grupę przycisków zawartych w środku.


Zwroty

Przykłady kodu

Plugin:CreateToolbar

plugin:CreateToolbar("ExampleToolbar")

Deactivate

void
Zabezpieczenia dodatku plug-in

Dezaktywuje dodatek plug-in. To spowoduje odłączenie powiązanego PluginMouse jeśli została aktywowana

Zobacz również:

  • Plugin:Activate() , ustawia stan wtyczki do aktywacji
  • Plugin.Deactivation , działa kiedy wtyczka jest wyłączona
  • Plugin.Unloading , uruchamia natychmiastowo przed usunięciem lub ponownym ładowaniem wtyczki za pośrednictwem odinstalowania, dezaktywowania lub aktualizacji

Zwroty

void
Zabezpieczenia dodatku plug-in

Powoduje, że Enum.JointCreationMode użytkownika zostanie ustawiony w studio pod zakładką Modele.


Zwroty

GetMouse

Zabezpieczenia dodatku plug-in

GetMouse zwraca PluginMouse, który można używać podczas gdy plugin jest aktywny poprzez Plugin:Activate() .


Zwroty

Przykłady kodu

Plugin:GetMouse

local mouse = plugin:GetMouse()
local function button1Down()
print("Button 1 pressed from PluginMouse")
end
mouse.Button1Down:Connect(button1Down)

GetSelectedRibbonTool

Zabezpieczenia dodatku plug-in

GetSelectedRibbonTool return the currently selected Enum.RibbonTool . It returns an Enum that corresponds to a particular tool. This will return whether the tool is selected manually or programmatically via Plugin:SelectRibbonTool() .


Zwroty

Przykłady kodu

Plugin:GetSelectedRibbonTool

plugin:SelectRibbonTool(Enum.RibbonTool.Move, UDim2.new())
task.wait() -- wait for next frame
local selectedRibbonTool = plugin:GetSelectedRibbonTool()
print("The selected RibbonTool is", selectedRibbonTool)

GetSetting

Variant
Zabezpieczenia dodatku plug-in

Odzyskuje poprzednio zapisany wartość z podanym kluczem lub nil, jeśli podany klucz nie istnieje.

Ponieważ wiele instancji tego samego plugin'a może być uruchomionych równocześnie (na przykład, jeśli wiele okien Studio jest otwartych), nie powinieneś zależeć od tego, czy ten wartość pozostaje taki sam w ciągu czasu. Inne instancje plugin'a mogą aktualizować ustawienia w dowolnym momencie.

Ten wezwanie może nie powodować skutku i zwrócić nil , jeśli wiele instancji tego samego plugin'a czyta i pisze dane. Jeśli twoja wtyczka oczekuje, że będzie pisać do ustawień często, powinieneś ponownie sprawdzić wartość zwróconą po tym krótkim czasie, aby rozróżnić pomiędzy ustawieniem tymczasowo niedostępnym a ustawieniem nieistniejącym.

Parametry

key: string

Zwroty

Variant

Przykłady kodu

Plugin:GetSetting

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

Intersect

Zabezpieczenia dodatku plug-in

Parametry

objects: Instances

Zwroty

IsActivated

Zabezpieczenia dodatku plug-in

Funkcja ta zwraca prawdę, jeśli ta wtyczka jest obecnie aktywna, po aktywacji poprzez funkcję Plugin:Activate().


Zwroty

Boolean wskazujący, czy plugin jest obecnie aktywny.

IsActivatedWithExclusiveMouse

Zabezpieczenia dodatku plug-in

Funkcja ta zwraca prawdziwy, jeśli ta wtyczka jest obecnie aktywna za pomocą ekskluzywnej myszy, po zostanie aktywowana za pośrednictwem funkcji Plugin:Activate(). Jeśli ta funkcja zwraca prawdziwy, można odzyskać PluginMouse poprzez funkcję Plugin:GetMouse().

Zobacz również:

  • Plugin.Deactivation , działa kiedy wtyczka jest wyłączona
  • Plugin.Unloading , uruchamia natychmiastowo przed usunięciem lub ponownym ładowaniem wtyczki za pośrednictwem odinstalowania, dezaktywowania lub aktualizacji

Zwroty

Czy ten plugin jest obecnie aktywny za pomocą wyłącznej myszy.

Negate

Instances
Zabezpieczenia dodatku plug-in

Odrzuca podane części i zwraca wynikające z tego NegateOperations.

Parametry

objects: Instances

Zwroty

Instances

OpenScript

void
Zabezpieczenia dodatku plug-in

Używany do otwarcia podanego instancji skryptu w oknie edytora, w Roblox Studio, na linii podanej. Jeśli nie jest podany żaden argument, to domyślnie będzie to 1.

Parametry

lineNumber: number
Wartość domyślna: 1

Zwroty

void

Przykłady kodu

Plugin:OpenScript

local newScript = Instance.new("Script")
newScript.Parent = workspace
plugin:OpenScript(newScript)

OpenWikiPage

void
Zabezpieczenia dodatku plug-in

Otwiera okienko pomocy kontekstowej na stronę wiki, do której łączy się url linkami.

Parametry

url: string

Zwroty

void

Przykłady kodu

Plugin:OpenWikiPage

plugin:OpenWikiPage("API:Class/BasePart")

SaveSelectedToRoblox

void
Zabezpieczenia dodatku plug-in

Otwiera okno wysyłania dla aktualnej selekcji użytkownika.


Zwroty

void

SelectRibbonTool

void
Zabezpieczenia dodatku plug-in

Aktywuje określony narzędzie Roblox Studio. Jeśli narzędzie otwiera okno, parametr pozycji określa, gdzie powinno być wyświetlone na ekranie.

Notatka:

  • Należy wybrać obiekt, aby to działało poprawnie.
  • Zmienianie poli skalowych właściwości position nie wpływa na okienka dialogową.

Parametry

position: UDim2

Zwroty

void

Separate

Instances
Zabezpieczenia dodatku plug-in

Oddziela dane Operationy Związane i zwraca wynikające z nich części.

Parametry

objects: Instances

Zwroty

Instances

SetSetting

void
Zabezpieczenia dodatku plug-in

Przechowuje podany wartości dla późniejszego użycia pod podanym kluczem. Wartość będzie istnieć nawet po zamknięciu Roblox Studio. Te ustawienia są zapisane w formie JSON jako mapa z kluczami strungowymi. Arrays są automatycznie konwertowane na mapy poprzez przekonwertowanie kluczowych liczb na strzykawki pierwsze.

Uwaga, że format JSON narzuca dodatkowe ograniczenia, w tym następujące znaki, które mogą uszkodzić plik ustawień:

  • Backslashes ( \ ) w kluczach lub wartościach, w szczególności ucieczkowe cytaty ( \" ).
  • Nowe linijki ( \n ) w kluczach.
  • Cytaty ( " ) w kluczach.
  • Okresy ( ) w kluczach.

Ten wezwany może cicho nie powodować, jeśli wiele instancji tego samego plugin'a czyta i pisze dane. Jeśli twoja wtyczka oczekuje, że będzie często pisać do ustawień, możesz sprawdzić, że dane zostały właściwie napisane, wykonując Plugin:GetSetting() .

Parametry

key: string
value: Variant

Zwroty

void

Przykłady kodu

Plugin:GetSetting and Plugin:SetSetting

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

void
Zabezpieczenia dodatku plug-in

Zacznij przeciągnąć inicjuje akcję przeciągania używając słownika parametrów. Parametry są następujące:


<tbody>
<tr>
<td><b>Nadawca</b></td>
<td>ciąg</td>
<td><code>""</code></td>
<td>
Określa źródło akcji przeciągnięcia do celu upuszczenia
</td>
</tr>
<tr>
<td><b>MimeType</b></td>
<td>ciąg</td>
<td><code>""</code></td>
<td>
Typ <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types">MIM</a> . <b>Danych</b> .
</td>
</tr>
<tr>
<td><b>Dane</b></td>
<td>ciąg</td>
<td><code>""</code></td>
<td>
Informacje o akcjiprzeciągania, na przykład co jest przeciągane. Powinno być używane przez cel przeciągania.
</td>
</tr>
<tr>
<td><b>Ikona myszy</b></td>
<td><code>Datatype.Content</code></td>
<td><code>""</code></td>
<td>
Ikona do użycia za kursorem myszy podczas przeciągania. Jeśli jest pusta, używa kursora domyślnego.
</td>
</tr>
<tr>
<td><b>Przeciągnij ikone</b></td>
<td><code>Datatype.Content</code></td>
<td><code>""</code></td>
<td>
Zdjęcie do renderowania podczas przeciągania kursorem myszy. Powinno to przedstawiać przedmiot, który jest przeciągany.
</td>
</tr>
<tr>
<td><b>HotSpot</b></td>
<td><code>Datatype.Vector2</code></td>
<td><code>Datatype.Vector2.new(0, 0)</code></td>
<td>
Odległość pikselowa z lewej góry, gdzie kursor powinien "przytrzymać" <b>DragIcon</b>.
</td>
</tr>
</tbody>
NazwaTypDomyślnyOpis

Zobacz również:

Parametry

dragData: Dictionary

Zwroty

void

Przykłady kodu

Plugin Drag and Drop

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)
Zabezpieczenia dodatku plug-in

Połącza podane części i w zwrotuje wynikające z nich operacje połączeń.

Parametry

objects: Instances

Zwroty

CreateDockWidgetPluginGui

Wynik
Zabezpieczenia dodatku plug-in

CreateDockWidgetPluginGui tworzy nowy DockWidgetPluginGui z danej DockWidgetPluginGuiInfo . Pierwszy parametr, 0> uginGuiId0>, powinien być unikalną i spójną ciąg. Jest używany do zapisu stanu docka widżetu i innych wewnętrznych szczegółów.

Parametry

pluginGuiId: string

Unikalny i spójny identyfikator używany do przechowywania stanu dokockowania widżetu i innych wewnętrznych szczegółów.

dockWidgetPluginGuiInfo: DockWidgetPluginGuiInfo

Opisuje DockWidgetPluginGui aby stworzyć (początkowy stan, rozmiar itp).


Zwroty

Przykłady kodu

Widget GUI Text Button

-- 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

Wynik
Zabezpieczenia dodatku plug-in

Ta funkcja prosi użytkownika o otwarcie pliku animacji .fbx, który może być załadowany na rigModel , a następnie wstawić animację jako KeyframeSequence w Workspace.

Parametry

rigModel: Instance
isR15: bool
Wartość domyślna: true

Zwroty

ImportFbxRig

Wynik
Zabezpieczenia dodatku plug-in

Prosi użytkownika o otwarcie pliku .fbx, wstawia poszczególne komponenty modelu jako siatki i generuje charakterystyczną rękawicę do użycia w animacja, która jest załadowana do Workspace.

Parametry

isR15: bool
Wartość domyślna: true

Zwroty

PromptForExistingAssetId

Wynik
Zabezpieczenia dodatku plug-in

Otwiera okno w Roblox Studio, które prosi użytkownika o wybór zasobu na podstawie assetType określonego. Wynika what assetId było wybrane, lub -1, jeśli okno zostało zamknięte.

Parametry

assetType: string

Zwroty

PromptSaveSelection

Wynik
Zabezpieczenia dodatku plug-in

Prosi użytkownika o zapisanie aktualnej selekcji z określonym nazwą pliku. Wynika prawdziwie, jeśli użytkownik zapisał plik.

Parametry

suggestedFileName: string
Wartość domyślna: ""

Zwroty

Zdarzenia

Deactivation

Zabezpieczenia dodatku plug-in

Wystąpił, gdy Plugin został dezaktywowany. To się dzieje, gdy kod plugin'a wzywa Plugin:Deactivate() lub ponieważ kiedyś inny plugin wzywa Plugin:Activate(), co zmusza wszystkie inne plugin do utraty ich aktywnego stanu.

Zobacz również:

  • Plugin.Unloading , uruchamia natychmiastowo przed usunięciem lub ponownym ładowaniem wtyczki za pośrednictwem odinstalowania, dezaktywowania lub aktualizacji

Unloading

Zabezpieczenia dodatku plug-in

Ten ewent zostanie natychmiastowo wykonany, zanim Plugin przestanie działać. Plugins są odłączane, odinstalowane, otrzymują aktualizację lub zamykają się.

Pozwala pluginowi na czyszczenie się po sobie, zanim jego skrypty przestają działać, na przykład, aby usunąć niepotrzebne instancje z DataModel. Jeśli plugin nie czyszczy się prawidłowo, stare kopie pozostaną. Gdy to się zdarza, użytkownicy mogą zostać zmuszeni do zamknięcia i ponownego otwarcia miejsca, co jest złym doświadczeniem użytkownika.

Instancje pluginowe, takie jak PluginToolbarButtons, DockWidgetPluginGuis i PluginGuis są automatycznie czyszczone, gdy plugin zostanie załadowany, więc nie jest konieczne ich usuwanie.