PluginGui

非推奨を表示

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

作成できません
複製されていません

PluginGui は、Roblox Studioのウィジェットに表示される GuiObjects を多くの場合にサポートする抽象クラスです。現在、唯一のプラグインGUIタイプは DockWidgetPluginGui ですが、将来には多くのプラグインギターが追加される可能性があります!

概要

プロパティ

  • 並列読み取り

    Class.PluginGui のコンテンツの上に表示されるタイトル。

LayerCollector から継承した プロパティGuiBase2d から継承した プロパティ

方法

イベント

  • プラグインのセキュリティ

    ユーザーが Class.Plugin:StartDrag() を開始したドラッグオペレーション中にマウスをリリースすると、発動します。

  • プラグインのセキュリティ

    ユーザーのマウスが Class.Plugin:StartDrag() を開始したドラッグオペレーション中にプラグインギュイを入力すると、ファイアーです。

  • プラグインのセキュリティ

    ユーザーのマウスが Class.Plugin:StartDrag() を開始したドラッグ操作の間にプラグインGUIを終了すると、ファイアが発動します。

  • プラグインのセキュリティ

    ユーザーのマウスが Plugin:StartDrag() のドラッグオペレーションの開始中にプラグインGUI 内に移動すると、ファイアを起動します。

  • プラグインのセキュリティ

    プラグインギュイのウィンドウとのユーザーのインタラクションを停止すると、ファイアを起動します。

  • プラグインのセキュリティ

    ユーザーが PluginGui のウィンドウとインタラクトし始めると、ファイアが発生します。

GuiBase2d から継承した イベント
  • SelectionChanged(amISelected : bool,previousSelection : GuiObject,newSelection : GuiObject):RBXScriptSignal

    ゲームパッドの選択が移動すると、退出します。または、接続された GuiBase2d または任意の子 GuiObjects 内で変更されます。

プロパティ

Title

並列読み取り

Class.PluginGui のコンテンツの上に表示されるタイトル。デフォルトは空の文字列です。

方法

BindToClose

void

この関数は、PluginGui ボタンを閉じるについて関数をバインドし、デフォルトの動作をオーバーライドします。

デフォルトでは、ユーザーが PluginGui の右上隅にある 'x' ボタンをクリックすると、 Enabled プロパティが false に設定され、ウィンドウを閉じます。ユーザーがカスタム関数を使用してバインドすると

デフォルトの閉鎖動作がこの関数によって上書きされるため、PluginGui を手動で閉鎖するには、PluginGui.Enabled を Class.PluginGui に設定して、2> Class.PluginGui をクリックする必要があります。たとえ、次のスナップショットでユーザーは G


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

参照してください:

パラメータ

function: function

閉じるボタンにバインドする関数を。 関数が指定されていない場合は、以前に指定された関数はバインドされなくなります。

既定値: "nil"

戻り値

void

GetRelativeMousePosition

プラグインのセキュリティ

GetRelativeMousePosition は、PluginGui の左上隅にあるマウスの位置を返します。返された値は、プラグインギュイでマウスの入力が開始された場合、またはマウスが現在ウィンドウの上にある場合にのみ変更されます。


戻り値

マウスの位置がプラグインGUI のピクセルに対して相対的に移動する。

コードサンプル

PluginGui: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() の間のユーザーのマウスを 0> Class.PluginGui0> に置くと、 3> プラグインドラッグドロップド 3> を起動します。

参照してください:

パラメータ

dragData: Dictionary

コードサンプル

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)

PluginDragEntered

プラグインのセキュリティ

ユーザーのマウスが Class.PluginGui の Class.PluginGui に入ると、 Class.Plugin:StartDrag() のドラッグオペレーションを開始するときに発動します。

このイベントは、「ドラッグ操作」がドロップできるプラグインGUIで「ドロップハード」UIを表示するのに便利です。この UI は、PluginDragLeft またはPluginDragDropped のファイアー時に隠される必要があります。

参照してください:

パラメータ

dragData: Dictionary

データのオリジナルのコピーが Plugin:StartDrag() にあります。


コードサンプル

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)

PluginDragLeft

プラグインのセキュリティ

PluginDragLeft は、PluginGui のマウスが開始したドラッグ操作の間に Plugin:StartDrag() で終了すると発動します。

このイベントと PluginDragDropped は、ドラッグオペレーションをドロップできるプラグインGUIで「ドロップアイテム」UIを非表示にするのに便利です。このGUIは、PluginDragEntered が発動すると表示されます。

参照してください:

パラメータ

dragData: Dictionary

データのオリジナルのコピーが Plugin:StartDrag() にあります。


コードサンプル

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)

PluginDragMoved

プラグインのセキュリティ

PluginDragMoved は、PluginGui のドラッグオペレーションの開始中にユーザーのマウスが Plugin:StartDrag() 内に移動すると発動します。

参照してください:

パラメータ

dragData: Dictionary

WindowFocusReleased

プラグインのセキュリティ

WindowFocusRelease は、ユーザーが PluginGui のウィンドウとの交流を停止すると即座に発動し、通常はクリックしてウィンドウ外のものをクリックするなどしています。これは、同様に名前のついた UserInputService.WindowFocusReleased イベントにも機能します。

ユーザーがこのプラグインギュイをフォーカスしている間に、PluginGui にフォーカスしたプラグインギュイを移動すると、このイベントは、WindowFocused の他のユーザーのイベント前に発動します。ただし、メインゲームウィ


コードサンプル

Detecting PluginGui Focus State

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 は、ユーザーがプラグインGUIのウィンドウとインタラクトし始めると、すぐに発動します。これは、一般的に UserInputService.WindowFocused という名前のイベントと同様の機能を持ちます。これは、マウスボタンに関連する GuiObject.InputBegan イベントに

Class.PluginGui がフォーカスされており、ユーザーがこのプラグインギュイをフォーカスすると、このイベントは、WindowFocusReleased の他のユーザーのイベント後に発動します。ただし、メインゲームウィンドウがフォーカスされていた


コードサンプル

Detecting PluginGui Focus State

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)