Plugin
*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.
Le plugin est l'objet principal responsable de la création de base des widgets Studio, des barres d'outils de plugin, des boutons de plugin et plus encore. Il s'agit d'un ajout personnalisé à Studio qui ajoute de nouveaux comportements et fonctionnalités qui ne sont pas normalement inclus. L'objet plugin peut être accédé via la référence globale Global.RobloxGlob
Échantillons de code
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
Résumé
Propriétés
Retourne si l'utilisateur a activé Collisions dans le studio sous l'onglet modèle.
Renvoie la taille de grille que l'utilisateur a définie dans Studio.
Méthodes
Définit l'état du plugin de rappel activé.
- CreatePluginAction(actionId : string,text : string,statusTip : string,iconName : string,allowBinding : bool):PluginAction
Crée un PluginAction qui est un objet qui représente une action générique exécutable dans Roblox Studio, sans Toolbar ou Enum.Button directement associés.
Crée un nouveau menu de plugin.
Crée un nouveau PluginToolbar avec le nom donné.
Désactive le plugin.
Retourne le Enum.JointCreationMode que l'utilisateur a défini dans le studio sous l'onglet Modèle.
Retourne un Mouse qui peut être utilisé pendant que le plugin est actif.
Renvoie le Enum.RibbonTool actuellement sélectionné.
Récupère une valeur stockée précédemment avec la clé donnée, ou zéro si la clé donnée n'existe pas.
Retourne vrai si ce plugin est actuellement actif, après avoir été activé via la fonction Plugin:Activate().
Retourne vrai si ce plugin est actuellement actif avec une souris exclusive, après avoir été activé via la fonction Plugin:Activate().
Néga les parties données et renvoie les opérations de négation résultantes.
Utilisé pour ouvrir l'instance de script donnée dans une fenêtre d'éditeur, dans Roblox Studio, à la ligne donnée. Si aucune ligne n'est donnée en tant qu'argument, il s'agira de 1.
Ouvre la fenêtre contextuelle d'aide au wiki à laquelle url se rattache.
Ouvre une fenêtre de téléchargement pour la sélection actuelle de l'utilisateur.
Active l'outil Roblox Studio spécifié.
Sépare les opérations d'Union données et renvoie les parties résultantes.
Stocke une valeur donnée pour une utilisation ultérieure sous la clé donnée. La valeur persiste même après la fermeture du studio.
Démarre une action de glisser donnée à un dictionnaire de paramètres.
Unionne les parties données et renvoie l'UnionOperation de résultat.
- CreateDockWidgetPluginGui(pluginGuiId : string,dockWidgetPluginGuiInfo : DockWidgetPluginGuiInfo):DockWidgetPluginGui
Crée un DockWidgetPluginGui donné un DockWidgetPluginGuiInfo .
Invite l'utilisateur à ouvrir un fichier d'animation .fbx qui peut être chargé sur le rigModel, puis procède à l'insertion de l'animation en tant que KeyframeSequence dans le Workspace.
Invite l'utilisateur à ouvrir un fichier .fbx, télécharge les composants individuels du modèle en mailles et génère un chariot de personnage pour l'utiliser dans l'animations, qui est chargé dans le Workspace .
Ouvre une fenêtre dans Roblox Studio, qui invite l'utilisateur à sélectionner une ressource en fonction du assetType spécifié. Renvoie l'objet de type de ressource sélectionné, ou -1 si la fenêtre était fermée.
Invite l'utilisateur à enregistrer son sélection actuelle avec le nom de fichier spécifié. Retourne vrai si l'utilisateur a enregistré le fichier.
Évènements
Activé lorsque le plugin est désactivé.
Tire immédiatement avant que le Plugin arrête de fonctionner.
Propriétés
CollisionEnabled
Retourne si l'utilisateur a activé Collisions dans le studio sous l'onglet modèle.
DisableUIDragDetectorDrags
GridSize
Retourne la taille d'accrochage de grille que l'utilisateur a définie dans Studio sous les Modèle ou Avatar onglets. Notez que cette propriété peut avoir des erreurs d'arrondissement légères ; par exemple, il peut être 0.0099999997764826 pour un utilisateur défini de 1 ou 0.40000000596046
Méthodes
Activate
Cette fonction démarre l'état du plugin d'appel en activé. L'activation du plugin permet le contrôle de la souris via la méthode Plugin:GetMouse().
À tout moment, il y a soit 0 soit 1 Plugins activés. L'activation d'un plugin désactive tous les autres plugins (ils recevront un événement Plugin.Deactivation).
Voir aussi :
- Plugin:IsActivatedWithExclusiveMouse() , renvoie vrai si ce plugin est actuellement actif avec une souris exclusive, après avoir été activé via cette fonction
- Plugin.Unloading , se déclenche immédiatement avant que le plugin soit déchargé ou rechargé via un désinstallation, une désactivation ou une mise à jour
Paramètres
Un boolé qui spécifie si activer le plugin avec une souris exclusive. Si oui, un PluginMouse peut être récupéré via Plugin:GetMouse().
Retours
CreatePluginAction
Cette fonction crée un PluginAction qui est un objet qui représente une action générique exécutable dans Roblox Studio, sans Toolbar ou Enum.Button . Dans Roblox Studio, ils peuvent être attribués à un raccourci clavier sous 2>File → Advanced → Customize Shortcuts…2>, et ils peuvent également être ajoutés à la barre d'outils rapide.
Lorsqu'une action est déclenchée, l'événement PluginAction.Triggered est signalé.
Pour que les actions de plugin fonctionnent comme prévu, elles doivent être créées à l'aide de cette fonction.
Voir aussi :
- PluginMenu , un menu contextuel qui peut être affiché dans Studio qui affiche une liste de PluginActions et prend en charge les sous-menus
- Plugin:CreatePluginMenu() , crée un PluginMenu
Paramètres
Doit être une chaîne unique qui identifie cette action de plugin d'autres.
Nom affiché de l'action.
Description de l'action affichée.
Le nom de l'icône utilisée pour afficher le plugin.
Whether the PluginAction will be hidden from Studio's shortcuts voir. Useful for contextual actions. Defaults to true.
Retours
Échantillons de code
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
Cette fonction crée un nouveau PluginMenu, qui est un menu contextuel qui peut être affiché dans Studio qui affiche une liste de PluginActions et prend en charge les sous-menus.
Afin que les menus Plugin fonctionnent comme prévu, ils doivent être créés à l'aide de cette fonction.
Voir aussi :
- PluginAction, un objet qui représente une action générique exécutable dans Roblox Studio, sans Toolbar ou Enum.Button directement associés.
- Plugin:CreatePluginAction() , crée une action de plugin
- PluginMenu.Title , le texte à afficher lorsqu'il est utilisé comme un sous-menu
- PluginMenu.Icon , l'icône à afficher lorsqu'elle est utilisée comme un sous-菜ュ
- PluginMenu:AddAction() , ajoute la action donnée au menu
- PluginMenu:AddNewAction() , crée une action temporaire qui est cachée de la fenêtre de raccourcis personnalisés de Studio
- PluginMenu:AddMenu() , ajoute le menu donné comme séparateur
- PluginMenu:AddSeparator() , ajoute un séparateur entre les éléments dans le menu
- PluginMenu:Clear() , efface le menu
- PluginMenu:ShowAsync() , affiche le menu au curseur de la souris. S'exécute jusqu'à ce qu'un élément soit sélectionné ou que le menu soit fermé. L'action sélectionnée déclenche son événement déclenché
Paramètres
ID unique pour le menu.
Le texte à afficher lorsqu'il est utilisé comme un sous-菜.
L'icône à afficher lorsqu'elle est utilisée comme un sous-菜.
Retours
Échantillons de code
-- 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
La fonction Créer une barre d'outils crée une nouvelle PluginToolbar avec le nom donné. La barre d'outils peut ensuite être utilisée pour créer des boutons de plugin.
Paramètres
Le texte visible sur la barre d'outils, étiquetant le groupe de boutons contenu à l'intérieur.
Retours
Échantillons de code
plugin:CreateToolbar("ExampleToolbar")
Deactivate
Désactive le plugin. Ceci déconnectera le PluginMouse associé s'il a été activé
Voir aussi :
- Plugin:Activate() , définit l'état du plugin d'appel activé
- Plugin.Deactivation , se déclenche lorsque le plugin est désactivé
- Plugin.Unloading , se déclenche immédiatement avant que le plugin soit déchargé ou rechargé via un désinstallation, une désactivation ou une mise à jour
Retours
GetJoinMode
Retourne le Enum.JointCreationMode que l'utilisateur a défini dans le studio sous l'onglet Modèle.
Retours
GetMouse
GetMouse renvoie un PluginMouse qui peut être utilisé pendant que le plugin est actif via Plugin:Activate().
Retours
Échantillons de code
local mouse = plugin:GetMouse()
local function button1Down()
print("Button 1 pressed from PluginMouse")
end
mouse.Button1Down:Connect(button1Down)
GetSelectedRibbonTool
GetSelectedRibbonTool return the currently selected Enum.RibbonTool . Il renvoie un Enum qui correspond à un outil spécifique. Cela renverra si l'outil est sélectionné manuellement ou programmiquement via Plugin:SelectRibbonTool() .
Retours
Échantillons de code
plugin:SelectRibbonTool(Enum.RibbonTool.Move, UDim2.new())
task.wait() -- wait for next frame
local selectedRibbonTool = plugin:GetSelectedRibbonTool()
print("The selected RibbonTool is", selectedRibbonTool)
GetSetting
Récupère une valeur stockée précédemment avec la clé donnée, ou zéro si la clé donnée n'existe pas.
Puisque plusieurs instances du même plugin peuvent s'exécuter simultanément (par exemple, si plusieurs fenêtres Studio sont ouvertes), vous ne devriez pas dépendre de cette valeur restant la même au fil du temps. Les autres instances du plugin peuvent mettre à jour la valeur à tout moment.
Cet appel peut échouer silencieusement et renvoyer nil si plusieurs instances du même plugin lisent et écrire des données actuellement. Si votre plugin s'attend à écrire dans les paramètres fréquemment, vous devriez vérifier manuellement la valeur renvoyée de ce call après un court moment pour distinguer entre un paramètre temporairement indisponible et un paramètre non existant.
Paramètres
Retours
Échantillons de code
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
Cette fonction renvoie vrai si ce plugin est actuellement actif, après avoir été activé via la fonction Plugin:Activate().
Retours
Un booléen indiquant si le plugin est actuellement actif.
IsActivatedWithExclusiveMouse
Cette fonction renvoie vrai si ce plugin est actuellement actif avec une souris exclusive, après avoir été activé via la fonction Plugin:Activate(). Si cela renvoie vrai, un PluginMouse peut être récupéré via Plugin:GetMouse().
Voir aussi :
- Plugin.Deactivation , se déclenche lorsque le plugin est désactivé
- Plugin.Unloading , se déclenche immédiatement avant que le plugin soit déchargé ou rechargé via un désinstallation, une désactivation ou une mise à jour
Retours
Whether ce plugin est actuellement actif avec une souris exclusive.
Negate
Néga les parties données et renvoie les opérations de négation résultantes.
Paramètres
Retours
OpenScript
Utilisé pour ouvrir l'instance de script donnée dans une fenêtre d'éditeur, dans Roblox Studio, à la ligne donnée. Si aucune ligne n'est donnée en tant qu'argument, il s'agira de 1.
Paramètres
Retours
Échantillons de code
local newScript = Instance.new("Script")
newScript.Parent = workspace
plugin:OpenScript(newScript)
OpenWikiPage
Ouvre la fenêtre contextuelle d'aide au wiki à laquelle url se rattache.
Paramètres
Retours
Échantillons de code
plugin:OpenWikiPage("API:Class/BasePart")
SaveSelectedToRoblox
Ouvre une fenêtre de téléchargement pour la sélection actuelle de l'utilisateur.
Retours
SelectRibbonTool
Active l'outil Roblox Studio spécifié. Si l'outil ouvre une fenêtre, le paramètre de position spécifie l'endroit où il doit être affiché sur l'écran.
Remarque :
- Un objet doit être sélectionné pour que cela fonctionne correctement.
- La modification des champs d'échelle de la propriété position n'affectera pas les popups de dialogue.
Paramètres
Retours
Separate
Sépare les opérations d'Union données et renvoie les parties résultantes.
Paramètres
Retours
SetSetting
Stocke une valeur donnée pour une utilisation ultérieure sous la clé donnée. La valeur persiste même après la fermeture de Roblox Studio. Ces paramètres sont enregistrés au format JSON comme une carte avec des clés de chaîne. Les tableaux sont automatiquement convertis en cartes en convertissant d'abord les clés numériques en chaînes.
Notez que le format JSON impose des restrictions supplémentaires, y compris les caractères suivants qui peuvent corrompre le fichier de paramètres :
- Backslashes ( \ ) dans les clés ou les valeurs, en particulier les quottes échappées ( \" ).
- Nouvelles lignes ( \n ) dans les clés.
- Citations ( " ) dans les clés.
- Les périodes ( . ) dans les clés.
Ce call peut échouer silencieusement si plusieurs instances du même plugin lisent et écrire des données actuellement. Si votre plugin s'attend à écrire dans les paramètres fréquemment, vous pouvez vérifier que les données ont été correctement écrites en appelant Plugin:GetSetting() .
Paramètres
Retours
Échantillons de code
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
Débuter le glisser INITIE une action de glisser en utilisant un dictionnaire de paramètres. Les paramètres sont les suivants :
<tbody><tr><td><b>Expéditeur</b></td><td>chaîne</td><td><code>""</code></td><td>Identifie la source de l'action de glissement à la cible de dépôt</td></tr><tr><td><b>Type de mime</b></td><td>chaîne</td><td><code>""</code></td><td>Le <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types">type MIME</a> de <b>Données</b> .</td></tr><tr><td><b>Données</b></td><td>chaîne</td><td><code>""</code></td><td>Informations sur l'action de déplacement, par exemple ce qui est déplacé. Doit être utilisé par la cible de déplacement.</td></tr><tr><td><b>Icône de souris</b></td><td><code>Datatype.Content</code></td><td><code>""</code></td><td>L'icône à utiliser pour le curseur de la souris pendant le déplacement. Si vide, utilise le curseur par défaut.</td></tr><tr><td><b>Icône de glisser</b></td><td><code>Datatype.Content</code></td><td><code>""</code></td><td>Une image à rendre sous le curseur de la souris pendant le déplacement. Cela devrait représenter l'élément qui est déplacé.</td></tr><tr><td><b>HotSpot</b></td><td><code>Datatype.Vector2</code></td><td><code>Datatype.Vector2.new(0, 0)</code></td><td>Le décalage de pixel de l'en haut à gauche où le curseur doit "tenir" le <b>DragIcon</b> .</td></tr></tbody>
Nom | Type | Par défaut | Description |
---|
Voir aussi :
Paramètres
Retours
Échantillons de code
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)
Union
Unionne les parties données et renvoie l'UnionOperation de résultat.
Paramètres
Retours
CreateDockWidgetPluginGui
CreateDockWidgetPluginGui crée un nouveau DockWidgetPluginGui à partir du DockWidgetPluginGuiInfo donné. Le premier paramètre, 0> uginGuiId0>, doit être un chaîne unique et cohérente. Il est utilisé pour enregistrer l'état du statut du widget et d'autres détails internes.
Paramètres
Un identifiant unique et cohérent utilisé pour stocker l'état du quai du widget et d'autres détails internes.
Décrivez le DockWidgetPluginGui pour créer (état initial, taille, etc).
Retours
Échantillons de code
-- 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
Cette fonction demande à l'utilisateur d'ouvrir un fichier d'animation .fbx qui peut être chargé sur le rigModel, puis insère l'animation en tant que KeyframeSequence dans le Workspace.
Paramètres
Retours
ImportFbxRig
Invite l'utilisateur à ouvrir un fichier .fbx, télécharge les composants individuels du modèle en mailles et génère un chariot de personnage pour l'utiliser dans l'animations, qui est chargé dans le Workspace .
Paramètres
Retours
PromptForExistingAssetId
Ouvre une fenêtre dans Roblox Studio, qui invite l'utilisateur à sélectionner une ressource en fonction du assetType spécifié. Renvoie l'objet de type de ressource sélectionné, ou -1 si la fenêtre était fermée.
Paramètres
Retours
Évènements
Deactivation
Activé lorsque le Plugin est désactivé. Cela se produit lorsque le code du plugin appelle Plugin:Deactivate(), ou parce que un autre plugin appelle Plugin:Activate(), ce qui force tous les autres plugins à perdre leur état actif.
Voir aussi :
- Plugin.Unloading , se déclenche immédiatement avant que le plugin soit déchargé ou rechargé via un désinstallation, une désactivation ou une mise à jour
Unloading
Cet événement se déclenche immédiatement avant la fermeture de Plugin. Les plugins sont déchargés lorsqu'ils sont désactivés, désinstallés, sur le point d'être mis à jour ou quand le lieu ferme.
Il permet à un plugin de se nettoyer avant lui-même avant que ses scripts arrêtent de fonctionner, par exemple pour supprimer des instances inutiles du DataModel. Si un plugin ne se nettoie pas correctement, les anciennes copies resteront. Lorsque cela se produit, les utilisateurs peuvent être forcés de fermer et de rouvrir l'endroit qui est une mauvaise expérience d'utilisateur.
Les instances liées aux plugins, telles que PluginToolbarButtons , DockWidgetPluginGuis et PluginGuis sont automatiquement nettoyées lorsque le plugin est déchargé afin qu'il n'y ait pas besoin de les supprimer.