PluginGui
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
PluginGui เป็นคลาสที่มีเอกลักษณ์สำหรับ GUIs ที่สามารถแสดงผลของ GuiObjects ในหลายหน้าต่างของ Roblox Studio ตอนนี้ สำหรับขณะนี้ ชนิดของ PluginGui ที่มีจำหน่ายคือ Class.DockWidgetPluginGui
สรุป
คุณสมบัติ
ชื่อที่ปรากฏข้างบนเนื้อหาของ PluginGui
เปิด/ปิดการมองเห็นของ this LayerCollector
กำหนดว่า LayerCollector รีเซ็ต (ลบตัวเองและเรียกลูกไฟล์ใหม่ใน Class.PlayerGui) ทุกครั้งที่ตัวละครของผู้เล่นเกิดใหม่
ควบคุมวิธีการที่ GuiObject.ZIndex ปฏิสัมพันธ์กับลูกหลานของคลาสนี้ LayerCollector
อธิบายตำแหน่งหน้าจอที่เป็นไปเลยของรายการ UI ในพิกเซล
อธิบายการหมุนเวียนหน้าจริงของ UI โดยองศา
อธิบายขนาดหน้าจอที่เป็นไปจริงของรายการ UI
เมื่อตั้งค่าเป็น true จะใช้การแปลภาษาใน GuiBase2d และลูกหลานของมัน
การอ้างอิงถึง LocalizationTable ที่จะใช้ในการประยุกต์การแปลอัตโนมัติสู่ GuiBase2d และลูกหลานของมัน
ปรับแต่งพฤติกรรมการเลือกแพดพักในแนวลง
ปรับแต่งพฤติกรรมการเลือกแพดพานเกมในแนวโน้มทางซ้าย
ปรับแต่งพฤติกรรมการเลือกแพดพักเกมในทิศทางที่ถูกต้อง
ปรับแต่งพฤติกรรมการเลือกแพดพักในแนวตั้งขึ้น
ช่วยให้คุณสามารถปรับแต่งการเคลื่อนไหวของแผงควบคุมเกม
วิธีการ
ผูกฟังก์ชันไปยังปุ่มปิด PluginGui เพื่อเปลี่ยนพฤติกรรมเริ่มต้น
กลับตำแหน่งของเมาส์เมื่อเป็นระยะเวลาของ PluginGui
อีเวนต์
เกิดเหตุผิดพลาดเมื่อผู้ใช้ปล่อยเมาส์ของพวกเขาเมื่อวางเมาส์บน PluginGui ในระหว่างการดำเนินการลากเริ่มโดย Plugin:StartDrag()
เกิดเหตุผิดพลาดเมื่อเมาส์ของผู้ใช้เข้าสู่ PluginGui ในระหว่างการดึงเก็บข้อมูลที่เริ่มโดย Plugin:StartDrag()
เกิดเหตุผิดพลาดเมื่อผู้ใช้เมาส์ออกจาก PluginGui ในระหว่างการดึงเริ่มโดย Plugin:StartDrag()
เปิดในขณะที่เมาส์ของผู้ใช้เคลื่อนไหวภายใน PluginGui เมื่อการดึงเริ่มโดย Plugin:StartDrag()
จะเกิดขึ้นเมื่อผู้ใช้หยุดใช้งานกับหน้าต่างของ PluginGui
เกิดขึ้นเมื่อผู้ใช้เริ่มใช้งานกับหน้าต่างของ PluginGui
- SelectionChanged(amISelected : bool,previousSelection : GuiObject,newSelection : GuiObject):RBXScriptSignal
เกิดขึ้นเมื่อเลือกแผงควบคุมเกมเคลื่อนไปยัง, ออกหรือเปลี่ยนแปลงใน GuiBase2d หรือ GuiObjects ต้นได้
คุณสมบัติ
วิธีการ
BindToClose
ฟังก์ชันนี้ผูกฟังก์ชันไว้ที่ปุ่มปิด 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()
ดูเพิ่มเติม:
- Plugin:CreateDockWidgetPluginGui() เพื่อสร้าง PluginGui
- DataModel:BindToClose() ซึ่งสามารถใช้เพื่อผูกคุณสมบัติให้กับเกมสิ้นสุดและไม่ควรสับสนกับคุณสมบัตินี้
พารามิเตอร์
หน้าเว็นที่ใช้สำหรับการผูกปุ่มปิด หากไม่มีหน้าเว็นที่ระบุไว้ ปุ่มปิดใด ๆ จะถูกยกเลิกการผูก
ส่งค่ากลับ
GetRelativeMousePosition
GetRelativeMousePosition ส่งค่าตำแหน่งเมาส์ของเมาส์เมื่อเป็นสัดส่วนกับมุมมองด้านบนซ้ายของ PluginGui มีการเปลี่ยนแปลงค่าเฉพาะเมื่อเมาส์เริ่มต้นใน PluginGui หรือเมาส์กำลังประกบเมาส์บนหน้าต่าง
ส่งค่ากลับ
ตําแหน่งหน้าจอของเมาส์เมื่อเป็นเวลาของ PluginGui ในพิกเซล
ตัวอย่างโค้ด
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()
ดูเพิ่มเติม:
พารามิเตอร์
ตัวอย่างโค้ด
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
ดูเพิ่มเติม:
พารามิเตอร์
คัดลอกของข้อมูลดั้งเดิมที่ส่งไปยัง Plugin:StartDrag()
ตัวอย่างโค้ด
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
ดูเพิ่มเติม:
พารามิเตอร์
คัดลอกของข้อมูลดั้งเดิมที่ส่งไปยัง Plugin:StartDrag()
ตัวอย่างโค้ด
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() .
ดูเพิ่มเติม:
พารามิเตอร์
WindowFocusReleased
ปล่อยให้ติดตั้งแล้วได้เลยที่นี่เลยก็ได้ตามที่ผู้ใช้ได้กดปุ่มที่อยู่นอกหน้าต่างของ PluginGui โดยปกติจะเป็นการคลิกที่บางอย่างนอกหน้าต่างนั้นเพื่อที่จะทำให้เกิดการโฟกัส
หากมุ่งเน้นไปที่อื่น ๆ ใน PluginGui ขณะที่ผู้ใช้มี PluginGui ในมุ่งเน้นนี้ แล้วเหตุการณ์นี้จะเกิดขึ้นก่อนการเปิดตัวอื่น ๆ ขอ
ตัวอย่างโค้ด
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 ของผู้เล่
ตัวอย่างโค้ด
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)