PluginGui

แสดงที่เลิกใช้งานแล้ว

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

ไม่สามารถสร้าง
ไม่ซ้ำ

PluginGui เป็นคลาสที่มีเอกลักษณ์สำหรับ GUIs ที่สามารถแสดงผลของ GuiObjects ในหลายหน้าต่างของ Roblox Studio ตอนนี้ สำหรับขณะนี้ ชนิดของ PluginGui ที่มีจำหน่ายคือ Class.DockWidgetPluginGui

สรุป

คุณสมบัติ

  • อ่านพร้อมๆ กัน

    ชื่อที่ปรากฏข้างบนเนื้อหาของ PluginGui

คุณสมบัติรับทอดมาจากLayerCollector
  • อ่านพร้อมๆ กัน

    เปิด/ปิดการมองเห็นของ this LayerCollector

  • อ่านพร้อมๆ กัน

    กำหนดว่า LayerCollector รีเซ็ต (ลบตัวเองและเรียกลูกไฟล์ใหม่ใน Class.PlayerGui) ทุกครั้งที่ตัวละครของผู้เล่นเกิดใหม่

  • อ่านพร้อมๆ กัน

    ควบคุมวิธีการที่ GuiObject.ZIndex ปฏิสัมพันธ์กับลูกหลานของคลาสนี้ LayerCollector

คุณสมบัติรับทอดมาจากGuiBase2d
  • อ่านอย่างเดียว
    ไม่ซ้ำ

    อธิบายตำแหน่งหน้าจอที่เป็นไปเลยของรายการ UI ในพิกเซล

  • อ่านอย่างเดียว
    ไม่ซ้ำ

    อธิบายการหมุนเวียนหน้าจริงของ UI โดยองศา

  • อ่านอย่างเดียว
    ไม่ซ้ำ

    อธิบายขนาดหน้าจอที่เป็นไปจริงของรายการ UI

  • อ่านพร้อมๆ กัน

    เมื่อตั้งค่าเป็น true จะใช้การแปลภาษาใน GuiBase2d และลูกหลานของมัน

  • อ่านพร้อมๆ กัน

    การอ้างอิงถึง LocalizationTable ที่จะใช้ในการประยุกต์การแปลอัตโนมัติสู่ GuiBase2d และลูกหลานของมัน

  • อ่านพร้อมๆ กัน

    ปรับแต่งพฤติกรรมการเลือกแพดพักในแนวลง

  • อ่านพร้อมๆ กัน

    ปรับแต่งพฤติกรรมการเลือกแพดพานเกมในแนวโน้มทางซ้าย

  • อ่านพร้อมๆ กัน

    ปรับแต่งพฤติกรรมการเลือกแพดพักเกมในทิศทางที่ถูกต้อง

  • อ่านพร้อมๆ กัน

    ปรับแต่งพฤติกรรมการเลือกแพดพักในแนวตั้งขึ้น

  • อ่านพร้อมๆ กัน

    ช่วยให้คุณสามารถปรับแต่งการเคลื่อนไหวของแผงควบคุมเกม

วิธีการ

  • BindToClose(function : function):void

    ผูกฟังก์ชันไปยังปุ่มปิด PluginGui เพื่อเปลี่ยนพฤติกรรมเริ่มต้น

  • การรักษาความปลอดภัยของปลั๊กอิน

    กลับตำแหน่งของเมาส์เมื่อเป็นระยะเวลาของ PluginGui

อีเวนต์

  • การรักษาความปลอดภัยของปลั๊กอิน

    เกิดเหตุผิดพลาดเมื่อผู้ใช้ปล่อยเมาส์ของพวกเขาเมื่อวางเมาส์บน PluginGui ในระหว่างการดำเนินการลากเริ่มโดย Plugin:StartDrag()

  • การรักษาความปลอดภัยของปลั๊กอิน

    เกิดเหตุผิดพลาดเมื่อเมาส์ของผู้ใช้เข้าสู่ PluginGui ในระหว่างการดึงเก็บข้อมูลที่เริ่มโดย Plugin:StartDrag()

  • การรักษาความปลอดภัยของปลั๊กอิน

    เกิดเหตุผิดพลาดเมื่อผู้ใช้เมาส์ออกจาก PluginGui ในระหว่างการดึงเริ่มโดย Plugin:StartDrag()

  • การรักษาความปลอดภัยของปลั๊กอิน

    เปิดในขณะที่เมาส์ของผู้ใช้เคลื่อนไหวภายใน PluginGui เมื่อการดึงเริ่มโดย Plugin:StartDrag()

  • การรักษาความปลอดภัยของปลั๊กอิน

    จะเกิดขึ้นเมื่อผู้ใช้หยุดใช้งานกับหน้าต่างของ PluginGui

  • การรักษาความปลอดภัยของปลั๊กอิน

    เกิดขึ้นเมื่อผู้ใช้เริ่มใช้งานกับหน้าต่างของ PluginGui

อีเวนต์รับทอดมาจากGuiBase2d
  • SelectionChanged(amISelected : bool,previousSelection : GuiObject,newSelection : GuiObject):RBXScriptSignal

    เกิดขึ้นเมื่อเลือกแผงควบคุมเกมเคลื่อนไปยัง, ออกหรือเปลี่ยนแปลงใน GuiBase2d หรือ GuiObjects ต้นได้

คุณสมบัติ

Title

อ่านพร้อมๆ กัน

ชื่อที่ปรากฏข้างบนเนื้อหาของ PluginGui คือค่าเริ่มต้นสำหรับสตริงที่ว่างเปล่า

วิธีการ

BindToClose

void

ฟังก์ชันนี้ผูกฟังก์ชันไว้ที่ปุ่มปิด PluginGui เพื่อเปลี่ยนพฤติกรรมเริ่มต้น โดยเปิดการใช้งานปุ่มปิด

ตามปกติ, เมื่อผู้ใช้คลิกปุ่ม 'x' ในมุมสูงขวาของ PluginGui สมบัติ Enabled ตั้งค่าเป็น ปิด โดยการปิดหน้าต่าง

เนื่องจากพฤติกรรมการปิดตัวเริ่มต้นของคุณถูกเขียนขึ้นโดยฟังก์ชันนี้คุณจะต้องกำหนด PluginGui เพื่อปิดโดยอัตโนมัติโดยการตั้งค่า Class.LayerCollector.Enabled|


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 มีการเปลี่ยนแปลงค่าเฉพาะเมื่อเมาส์เริ่มต้นใน PluginGui หรือเมาส์กำลังประกบเมาส์บนหน้าต่าง


ส่งค่ากลับ

ตําแหน่งหน้าจอของเมาส์เมื่อเป็นเวลาของ PluginGui ในพิกเซล

ตัวอย่างโค้ด

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

การรักษาความปลอดภัยของปลั๊กอิน

ปลั๊กอินDragDropped เปิดในขณะที่ผู้ใช้ปล่อยเมาส์ของพวกเขาบน PluginGui ในระหว่างการดึงเมาส์เริ่มต้นโดย Plugin:StartDrag()

ดูเพิ่มเติม:

พารามิเตอร์

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

การรักษาความปลอดภัยของปลั๊กอิน

PluginDragEntered เปิดให้บริการเมื่อเมาส์ของผู้ใช้เข้าสู่ PluginGui ในระหว่างการดึงเมาส์เริ่มโดย Plugin:StartDrag()

เหตุการณ์นี้มีประโยชน์สำหรับการแสดง UI "Drop Here" บน PluginGuis ที่มีการดึงการดึงสามารถดึงได้ 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 มีประโยชน์สำหรับการซ่อน UI "Drop Here" บน PluginGuis ที่มีการดรอปออปชัน ดังนั้น UI เช่นนี้ควรจะปรากฏเมื่อ Class.PluginGui.PluginDragEntered|PluginDragEn

ดูเพิ่มเติม:

พารามิเตอร์

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 จะเริ่มต้นไฟร์เมื่อเมาส์ของผู้ใช้เคลื่อนไหวภายใน Class.PluginGui ในระหว่างการดึงการเลื่อนที่เริ่มโดย Class.Plugin:StartDrag() .

ดูเพิ่มเติม:

พารามิเตอร์

dragData: Dictionary

WindowFocusReleased

การรักษาความปลอดภัยของปลั๊กอิน

ปล่อยให้ติดตั้งแล้วได้เลยที่นี่เลยก็ได้ตามที่ผู้ใช้ได้กดปุ่มที่อยู่นอกหน้าต่างของ PluginGui โดยปกติจะเป็นการคลิกที่บางอย่างนอกหน้าต่างนั้นเพื่อที่จะทำให้เกิดการโฟกัส

หากมุ่งเน้นไปที่อื่น ๆ ใน PluginGui ขณะที่ผู้ใช้มี PluginGui ในมุ่งเน้นนี้ แล้วเหตุการณ์นี้จะเกิดขึ้นก่อนการเปิดตัวอื่น ๆ ขอ


ตัวอย่างโค้ด

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

การรักษาความปลอดภัยของปลั๊กอิน

โฟกัสหน้าต่าง เปิดทันทีเมื่อผู้ใช้เริ่มใช้งานกับหน้าต่างของ PluginGui โดยการคลิกที่มัน สิ่งนี้ทำงานได้เช่นกับ UserInputService.WindowFocused อีเว้นท์ที่

หาก PluginGui อื่นอยู่ในโฟกัสและผู้ใช้โฟกัส 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)