Plugin
*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。
プラグイン は、基本の Studio ウィジェット、プラグインツールバー、プラグインボタンなどを作成する主なオブジェクトです。Studio に新しい振る舞いや機能を追加するカスタム追加機能で、通常は含まれていないものです。 プラグイン オブジェクトは、plugin グローバルリファレンスを介して、プラグインとして実行される Script でアクセスできます。
コードサンプル
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 : boolean):PluginAction
クリエイトする PluginAction は、Roblox Studio で一般的な実行可能なアクションを表すオブジェクトで、直接関連した Toolbar または Enum.Button はありません。
新しいプラグインメニューを作成します。
指定された名前で新しい PluginToolbar を作成します。
プラグインを無効にします。
ユーザーが Studio の [モデル] タブで設定した Enum.JointCreationMode を返します。
プラグインがアクティブな状態で使用できる Mouse を返します。
現在選択されている Enum.RibbonTool を返します。
指定されたキーで以前に保存された値を取得するか、nil 指定されたキーが存在しない場合。
このプラグインが現在アクティブである場合、Plugin:Activate() 関数を介して有効になった後、真を返します。
このプラグインが現在、排他的なマウスでアクティブであることを示し、Plugin:Activate() 関数を介して有効になった後、このプラグインが独占的なマウスでアクティブであることを返します。
指定されたパーツを否定し、結果の否定操作を返す
指定されたスクリプトインスタンスをエディタウィンドウで開き、Roblox Studio で指定された行で開きます。引数としてラインが指定されない場合、デフォルトで 1 になります。
コンテキストヘルプウィンドウを、url リンクされたウィキページに開きます。
ユーザーの現在の選択に対するアップロードウィンドウを開きます。
指定された Roblox Studio ツールを有効にします。
指定された UnionOperations を分離し、結果のパーツを返します。
指定された値を指定されたキーで後で使用するように保存します。値は、Studio が閉じた後も維持されます。
パラメータの辞書を指定してドラッグアクションを開始します。
指定されたパーツを結合し、結果の UnionOperation を返します。
- CreateDockWidgetPluginGui(pluginGuiId : string,dockWidgetPluginGuiInfo : DockWidgetPluginGuiInfo):DockWidgetPluginGui
クリエイトする DockWidgetPluginGui に DockWidgetPluginGuiInfo を与える。
ユーザーに、 にロードできる .fbx アニメーションファイルを開いてもらい、その後、 にアニメーションを挿入します。
ユーザーに .fbx ファイルを開き、モデルの個々のコンポーネントをメッシュとしてアップロードし、アニメーションで使用するキャラクターリグを生成し、Workspace にロードします。
Roblox Studio のウィンドウを開き、ユーザーに指定された assetType に基づいてアセットを選択するよう促します。選択されたアセットIDを返します、またはウィンドウが閉じた場合は -1です。
ユーザーに指定されたファイル名で現在の選択を保存するように促します。ファイルを保存した場合は true を返します。
イベント
プラグインが無効になったときに発射されます。
停止する前にすぐにPluginが発火します。
プロパティ
DisableUIDragDetectorDrags
GridSize
ユーザーがスタジオのツールバーの モデル または アバター タブで設定したグリッドスナップサイズを返します。このプロパティには、微細な丸めエラーが発生する可能性があります;たとえば、ユーザー設定の 0.0099999997764826 またはユーザー設定の 1 または 0.4000000059604645 であるユーザー設定の場合、それは 0.4 です。
IsDebuggable
方法
Activate
この機能は、呼び出しプラグインの状態を有効に設定します。プラグインを有効にすると、Plugin:GetMouse() メソッドを通じてマウスコントロールが有効になります。
特定の時点では、0か1つの有効なプラグインが存在します。プラグインを有効にすると、他のすべてのプラグインが無効になります (彼らは Plugin.Deactivation イベントを受け取ります)。
参照してください:
- Plugin:IsActivatedWithExclusiveMouse() , このプラグインが現在、排他的なマウスでアクティブであることを確認した後、この関数を介して有効になった場合は、真を返す
- Plugin.Unloading , プラグインがアンインストール、または再読み込み中に即座に発動し、アンインストール、またはアップデートによって無効化される前に
パラメータ
プラグインを専用のマウスで有効にするかどうかを指定するブール。真の場合は、PluginMouse を介して Plugin:GetMouse() を取得できます。
戻り値
CreatePluginAction
この機能は、Roblox Studio で一般的な実行可能なアクションを表すオブジェクトを作成し、直接関連する PluginAction または Toolbar がない Enum.Button を作成します。Roblox Studio では、File → Advanced → Customize Shortcuts… の下でキーボードショートカットが割り当てられ、クイックアクセスツールバーに追加することもできます。
アクションがトリガーされると、PluginAction.Triggered イベントがシグナルされます。
プラグインアクションが期待通りに機能するには、この関数を使用して作成する必要があります。
参照してください:
- PluginMenu , スタジオに表示できるコンテキストメニューで、プラグインアクションのリストとサブメニュをサポートする
- Plugin:CreatePluginMenu() , プラグインメニューを作成
パラメータ
このプラグインアクションを他のものと区別するユニークな文字列でなければなりません。
操作クションの表示名。
アクションの表示された説明。
プラグインを表示するために使用されるアイコンの名前。
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
この機能は、新しい PluginMenu を作成し、Studio で表示できるコンテキストメニューを作成し、リストの PluginActions とサブメニューをサポートします。
プラグインメニューが期待通りに機能するには、この関数を使用して作成する必要があります。
参照してください:
- 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
CreateToolbar 関数は、指定された名前で新しい PluginToolbar を作成します。ツールバーは、プラグインボタンを作成するために使用できます。
パラメータ
ツールバー上の表示テキスト、内部に含まれるボタングルをラベル化します。
戻り値
コードサンプル
plugin:CreateToolbar("ExampleToolbar")
Deactivate
プラグインを無効にします。有効になっている場合は、関連する PluginMouse が切断されます
参照してください:
- Plugin:Activate() , 呼び出しプラグインの状態を有効に設定
- Plugin.Deactivation , プラグインが無効になったときに発火する
- Plugin.Unloading , プラグインがアンインストール、または再読み込み中に即座に発動し、アンインストール、またはアップデートによって無効化される前に
戻り値
GetMouse
GetMouse は、プラグインが PluginMouse を通じてアクティブな状態で使用できる Plugin:Activate() を返します。
戻り値
コードサンプル
local mouse = plugin:GetMouse()
local function button1Down()
print("Button 1 pressed from PluginMouse")
end
mouse.Button1Down:Connect(button1Down)
GetSelectedRibbonTool
GetSelectedRibbonTool は、現在選択されている Enum.RibbonTool を返します。特定のツールに対応するEnumを返します。これは、ツールが手動またはプログラマティックに 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
指定されたキーで以前に保存された値を取得するか、nil 指定されたキーが存在しない場合。
同じプラグインの複数のインスタンスが同時に実行できるため (例えば、複数の Studio ウィンドウが開いている場合)、この値が時間経過とともに同じままである必要はありません。他のプラグインインスタンスは、設定をいつでも更新できます。
この呼び出しは、同じプラグインの複数のインスタンスがアクティブにデータを読み込み書きする場合、静かに失敗して 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() 関数を介して有効になった後、この機能を返します。true は、このプラグインが現在、排他的なマウスでアクティブであることを返します。これが true に返されると、PluginMouse を介して Plugin:GetMouse() から回収できます。
参照してください:
- 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 形式では、設定ファイルを破損する可能性のある次の文字を含む追加の制限が課されていることに注意してください:
- キーまたは値のバックスラッシュ ( \ )、特に脱出した引用符 ( \" )。
- キーの新行 ( \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
StartDrag はパラメータの辞書を使用してドラッグアクションを開始します。パラメータは次のとおりです:
<th>種類</th><th>デフォルト</th><th>説明</th></tr></thead><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>The <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types">MIME</a> タイプの <b>データ</b>。</td></tr><tr><td><b>データ</b></td> <td>文字列</td> <td><code>""</code></td><td>ドラッグアクションに関する情報、例えばドラッグされているもの。ドロップターゲットが使用すべきです。</td></tr><tr><td><b>マウスアイコン</b></td> <td><code>データタイプ.コンテンツ</code></td> <td><code>""</code></td><td>ドラッグ中にマウスカーソルとして使用するアイコン。空であれば、デフォルトのカーソルを使用します。</td></tr><tr><td><b>ドラッグアイコン</b></td> <td><code>データタイプ.コンテンツ</code></td> <td><code>""</code></td><td>ドラッグ中にマウスカーソルの下でレンダリングする画像。これはドラッグされているアイテムを表すべきです。</td></tr><tr><td><b>ホットスポット</b></td> <td><code>データタイプ.ベクトル2</code></td> <td><code>データタイプ.ベクトル2.新規(0、0)</code></td><td>カーソルが <b>ドラッグアイコン</b> を "保持" する必要がある左上のピクセルオフセット。</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 を作成します。最初のパラメータ、 pluginGuiId 、はユニークで一貫した文字列であるべきです。ウィジェットのドック状態などの状態と他の内部詳細を保存するために使用されます。
パラメータ
ウィジェットのドック状態などの他の内部詳細を保存するために使用されるユニークで一貫した識別子。
作成する 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 アニメーションファイルを開くように促し、次に にアニメーションを挿入します。
パラメータ
戻り値
ImportFbxRig
ユーザーに .fbx ファイルを開き、モデルの個々のコンポーネントをメッシュとしてアップロードし、アニメーションで使用するキャラクターリグを生成し、Workspace にロードします。
パラメータ
戻り値
PromptForExistingAssetId
Roblox Studio のウィンドウを開き、ユーザーに指定された assetType に基づいてアセットを選択するよう促します。選択されたアセットIDを返します、またはウィンドウが閉じた場合は -1です。
パラメータ
戻り値
イベント
Deactivation
Plugin が無効になったときに発射されます。これは、プラグインコードが Plugin:Deactivate() を呼び出すか、または他のプラグインが Plugin:Activate() を呼び出し、それにより他のすべてのプラグインがアクティブな状態を失うために発生します。
参照してください:
- Plugin.Unloading , プラグインがアンインストール、または再読み込み中に即座に発動し、アンインストール、またはアップデートによって無効化される前に
Unloading
このイベントは、Plugin が実行を停止する前にすぐに発動します。プラグインは無効になったり、削除されたり、更新される予定だったり、場所が閉じるとロードが解除されます。
プラグインがスクリプトの実行が停止する前に自らをクリーンアップするようにします(例えば、不必要なインスタンスを DataModel から削除するため。プラグインが適切にクリーンアップしない場合、古いコピーが残ります。これが発生すると、ユーザーは悪いユーザーエクスペリエンスの場所を閉じて再開することが強制される可能性があります。
プラグイン関連のインスタンス (PluginToolbarButtons、DockWidgetPluginGuis、PluginGuisなど) は、プラグインがロードされなくなったときに自動的に削除されるため、削除する必要はありません。