สร้างรายการ Studio

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

Studio ให้คุณความสามารถในการสร้าง โปรเจ็กท์ และใช้พวกเขาเป็นเครื่องมือและขยายของ Studio เหล่านี้จะทำงานเหมือนเป็นหน้าต่าง / แผงที่กำหนดเองใน Studio และคุณสามารถด็อคพวกเขาภายในของคุณหรือ

การสร้างรายการอินทราและการแสดงผล

วิดเจ็ตทั้งหมดใน Studio เริ่มต้นเป็นวัตถุ DockWidgetPluginGui ซึ่งคุณสามารถเติมด้วย GuiObjects เช่นเมื่อป้ายชื่อและปุ

หมายเหตุ DockWidgetPluginGuiInfo.new() ผู้สร้างคาดหวังว่ามันจะมีพารามิเตอร์ใน ความสั่งซื้อที่เฉพาะ ดังต่อไปนี้:

#สมบัติชนิดคำอธิบาย
1Enum.InitialDockStateรายการหนึ่งใน Enum.InitialDockState การนับ.
2InitialEnabledบูลูนสถานะเริ่มต้นที่เปิดใช้งาน (มองเห็นได้) ของ GUI วิดเจ็ต
3InitialEnabledShouldOverrideRestoreบูลูนหากเป็นเช่นนั้น, มูลค่าของ InitialEnabled จะเปลี่ยนสถานะที่เปิดใช้งานไว้ก่อนหน้านี้
4FloatingXSizeตัวเลขความกว้างเริ่มต้นของ GUI เมื่อ เริ่มต้นด็อคสถานะ ตั้งค่าไว้ที่ Enum.InitialDockState.Float
5FloatingYSizeตัวเลขความสูงเริ่มต้นของ GUI เมื่อ InitialDockState ตั้งค่าเป็น Enum.InitialDockState.Float
6MinWidthตัวเลขความกว้างขั้นต่ำของ GUI พร้อมกับการเปลี่ยนแปลงบางอย่างของแพลตฟอร์ม
7MinHeightตัวเลขความสูงขั้นต่ำของ GUI พร้อมกับการเปลี่ยนแปลงบางอย่างของแพลตฟอร์ม

-- สร้าง "DockWidgetPluginGuiInfo" วัตถุใหม่
local widgetInfo = DockWidgetPluginGuiInfo.new(
Enum.InitialDockState.Float, -- ตัวอักษรจะถูกเริ่มต้นในแผงลอย
true, -- วอลเล็ทจะเปิดใช้งานในภายหลัง
false, -- อย่าเปลี่ยนแปลงสถานะที่เปิดใช้งานไว้ก่อน
200, -- ความกว้างของหน้าต่างลอย
300, -- ความสูงปกติของหน้าต่างลอย
150, -- ความกว้างขั้นต่ำของหน้าต่างลอย
150 -- ความสูงขั้นต่ำของหน้าต่างลอย
)
-- สร้าง GUI วงดุริยางรูปใหม่
local testWidget = plugin:CreateDockWidgetPluginGui("TestWidget", widgetInfo)
testWidget.Title = "Test Widget" -- Optional widget title

กําหนดเอง UI ของโจมตี

เมื่อคุณสร้างวิดเจ็ตคุณสามารถปรับแต่ง UI ของผู้ใช้ด้วย GuiObjects เช่น TextLabels หรือ ImageButtons ตัวอย่างเช่น รหัสต่อไ


-- สร้าง GUI วงดุริยางรูปใหม่
local testWidget = plugin:CreateDockWidgetPluginGui("TestWidget", widgetInfo)
testWidget.Title = "Test Widget" -- ชื่อวิดเจ็ตที่ต้องการ
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

เปลี่ยนธีมสีใน Studio

ผลิตภัณฑ์ Effective Studio จะตรงกับการตั้งค่าธีม ของ Studio โดยสมบูรณ์ในทุกกรณีและปรับแต่งได้อย่างไร้ที่สุดเมื่อธีมเปลี่ยนแปลง เช่น หากผู้พัฒนากำลังใช้ธีมมืด, สีพื้นหลังของผลิตภั

ต่อไปนี้คำเพิ่มโค้ดใช้งาน syncGuiColors() ระเบิดที่มีส่วนร่วมก


testButton.Parent = testWidget
local function syncGuiColors(objects)
local function setColors()
for _, guiObject in objects do
-- ซิงค์สีพื้นหลัง
guiObject.BackgroundColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.MainBackground)
-- ซิงค์สีข้อความ
guiObject.TextColor3 = settings().Studio.Theme:GetColor(Enum.StudioStyleGuideColor.MainText)
end
end
-- ใช้งาน 'setColors()' เพื่อให้เครื่องสินค้าที่เริ่มต้นได้รับการจัดเค้าโครง
setColors()
-- เชื่อมต่อ 'ThemeChanged' เหตุการณ์ไปยัง 'setColors()' ฟังก์ชัน
settings().Studio.ThemeChanged:Connect(setColors)
end
-- ทำงาน 'SyncGuiColors()' เพื่อซิงค์สีของวัตถุที่ให้
syncGuiColors({testButton})

การปรับแต่งเมาส์

เพื่อปรับปรุงประสิทธิภาพการใช้งานร่วมกันกับวิดเจ็ตเอาต์พูดคุยให้คุณสามารถตั้ง


local function setCursor(cursorAsset)
plugin:GetMouse().Icon = cursorAsset
end
testButton.MouseEnter:Connect(function()
setCursor("rbxasset://SystemCursors/PointingHand")
end)
testButton.MouseLeave:Connect(function()
setCursor("")
end)

อ้างอิงตารางต่อไปนี้สำหรับรายการเมาส์ cursors และกรณีการใช้งานที่อาจเกิดขึ้น:

ไอคอนเมาส์สินทรัพย์ใช้กรณี
rbxasset://SystemCursors/Arrowการคลิกและเลือกเริ่มต้น
rbxasset://SystemCursors/PointingHandการเลื่อนเมาส์เหนือลิงค์/ปุ่มที่ใช้งานอยู่
rbxasset://SystemCursors/OpenHandไอเท็ม
rbxasset://SystemCursors/ClosedHandไอเท็ม
rbxasset://SystemCursors/IBeamการลองเล่นในข้อความข้อความ
rbxasset://SystemCursors/SizeNSการเลื่อนสูงเหนือหัวจับการปรับขนาดแนวตั้ง
rbxasset://SystemCursors/SizeEWการเลื่อนสูงเหนือหัวเรื่องการปรับขนาดแนวตั้ง
rbxasset://SystemCursors/SizeNESWการเลื่อนตำแหน่งจุดหมุดหมาย
rbxasset://SystemCursors/SizeNWSEการเลื่อนตำแหน่งจุดหมุดหมาย
rbxasset://SystemCursors/SizeAllการเลื่อนผ่านหัวจับการปรับแต่งทิศทางหลาย
rbxasset://SystemCursors/SplitNSลองเลื่อนไปที่หัวจุดหมายปลายของแท่นตรงตั้ง
rbxasset://SystemCursors/SplitEWลองเลื่อนไปที่มือจับแนวตั้ง "แยก"
rbxasset://SystemCursors/Forbiddenไอเท็ม
rbxasset://SystemCursors/Waitระบุว่ามีการดำเนินการอยู่
rbxasset://SystemCursors/Busyบ่งชี้ว่าระบบกำลังยุ่งอยู่
rbxasset://SystemCursors/Crossการเลือกพื้นที่เหนือจุดเริ่มต้น

รวบรวมข้อมูลของผู้ใช้

รายการ UI เช่น TextBox และ TextButton ทำงานได้ตามปกติใน widget Studio และคุณสามารถสร้างระบบประสายในขณะที่คุณจะทำปกติบน Roblox ได้ อย่างไรก็

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


local frame = Instance.new("Frame")
frame.BackgroundTransparency = 1 -- ซ่อนเค้าโครง
frame.Size = UDim2.new(1, 0, 1, 0) -- ครอบคลุมหน้าจอ
frame.Position = UDim2.new(0, 0, 0, 0)
frame.Parent = testWidget
local function onInputBegan(inputObject)
-- ประมวลผลตัวอุปกรณ์ที่ใส่มาที่นี่ เช่น ตรวจจับการกดปุ่ม
end
frame.InputBegan:Connect(onInputBegan)

ใช้การลากและปล่อยเพื่อใช้งาน

การใช้ปฏิสัมพันธ์แบบลากและลากสำหรับวิดเจ็ตของคุณเป็นวิธีง่ายๆ ในการปรับปรุงการไหลของข้อมูล เพื่อสร้างปฏิสัมพันธ์นี้ คุณต้องกำหนดตัวองค์ประกอบที่จะลาก, เริ่มลาก, สร้างเป้าหมาย

การสร้างที่หลอมรวม

คุณสามารถเริ่มการลากโดยการเรียก Plugin:StartDrag() เมื่อผู้ใช้กดปุ่มเมาส์บางองค์ประกอบบน UI โดยปกติจะเป็น TextButton หรือ ImageButton ภายในวิดเจ็ด


-- สร้างโครงการให้ก่อน
local widgetInfo = DockWidgetPluginGuiInfo.new(Enum.InitialDockState.Float, true, true, 300, 200)
local dragSourceWidget = plugin:CreateDockWidgetPluginGui("Drag Source", widgetInfo)
dragSourceWidget.Title = "Drag Source"
-- สร้าง TextButton ที่จะเริ่มต้นการลาก
local dragButton = Instance.new("TextButton")
dragButton.Size = UDim2.new(1, 0, 1, 0)
dragButton.Text = "Drag me!"
dragButton.Parent = dragSourceWidget

กําลังเริ่มการลาก

เมื่อผู้ใช้คลิกที่ TextButton คุณสามารถเริ่มลากผ่านเหตุการณ์ MouseButton1Down() ซึ่งจะเปิดให้เมื่อผู้ใช้กดปุ่มเมาส์

ในระหว่างการเชื่อมต่อฟังก์ชัน กรุณาระบุข้อมูลที่จะลาก. ข้อมูลของ ชนิด ควรจะปรากฏใน Mime


local function onButton1Down()
local dragInfo = {
Data = "Hello, world", -- กําลังลากข้อมูล
MimeType = "text/plain", -- อธิบายประเภทข้อมูล MIME
Sender = "SomeDragSource", -- อธิบายว่าข้อมูลมาจากไหน
MouseIcon = "", -- เนื้อหาของภาพที่ใช้สำหรับตัวเลือก
DragIcon = "", -- เนื้อหาของภาพที่จะเรนเดอร์ภายใต้เมาส์ในระหว่างการลาก
HotSpot = Vector2.zero -- ที่ไหนใน DragIcon เพื่อให้ตำแหน่งเมาส์
}
plugin:StartDrag(dragInfo)
end
dragButton.MouseButton1Down:Connect(onButton1Down)

การสร้างเป้าหมายหลังจุดลง

เหตุการณ์ PluginGui.PluginDragDropped เกิดขึ้นเมื่อผู้ใช้ปล่อยเมาส์ในหน้าต่างในระหว่างการลากเมาส์ เมื่อเกิดเหตุการณ์นี้ขึ้น คุณจำเป็นต้องกำหนด เป้าหมายล้ม เช


local dragTargetWidget = plugin:CreateDockWidgetPluginGui("Drop Target", widgetInfo)
dragTargetWidget.Title = "Drop Target"
-- นี้ TextLabel จะแสดงสิ่งที่ถูกทิ้ง
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(1, 0, 1, 0)
textLabel.Text = "Drop here..."
textLabel.Parent = dragTargetWidget

การประมวลผลการดรอป

หลังจากสร้างเป้าหมายดรอปให้เชื่อมต่อกิจกรรม PluginGui.PluginDragDropped บนหน้าวิดเจ็ตเป้าหมายดรอป


local function onDragDrop(dragData)
print("PluginDragDropped")
if dragData.MimeType == "text/plain" then
textLabel.Text = dragData.Data
else
textLabel.Text = dragData.MimeType
end
end
dragTargetWidget.PluginDragDropped:Connect(onDragDrop)

ในขณะที่การลากยังคงดำเนินอยู่ เหตุการณ์เหล่านี้สามจะเกิดขึ้นเมื่อผู้ใช้เคลื่อนเมาส์ไปที่วิดเจ็ต:

  • PluginDragEntered – เปิดใช้งานเมื่อผู้ใช้วางเมาส์บนหน้าต่าง
  • PluginDragMoved – เปิดให้เห็นซ้ำได้เมื่อผู้ใช้เคลื่อนเมาส์ไปที่หน้าต่าง นี่เป็นประโยชน์สำหรับการแสดงข้อความ "Drop here!"
  • PluginDragLeft – เปิดใช้งานเมื่อผู้ใช้ปล่อยมาウสออกจากหน้าต่าง นี่เป็นประโยชน์สำหรับการซ่อนข้อความ "ดรอปที่นี่!"