Lớp công cụ
Plugin
*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.
Tóm Tắt
Thuộc Tính
Phương Pháp
Sự Kiện
Mẫu mã
Mã - Truyền Plugin Global vào ModuleScript
assert(plugin, "Mã này phải được chạy như một plugin!")
-- Mã phía bên ngoài điểm này chỉ sẽ thực thi nếu mã được chạy như một plugin
-- Tải module và truyền tham chiếu plugin
local pluginModule = require(script.Parent.PluginModule)
pluginModule:Initialize(plugin)
-- Xác minh xem tham chiếu plugin đã được khởi tạo chưa
pluginModule:CheckForPluginGlobal()ModuleScript - Nhận và Lưu Trữ Global của Plugin
local pluginModule = {}
local plugin -- Tham chiếu plugin cục bộ
-- Khởi tạo tham chiếu plugin nếu chưa được thiết lập
function pluginModule:Initialize(pluginReference: Plugin)
if plugin ~= pluginReference then
plugin = pluginReference
else
error("Plugin đã được khởi tạo")
end
end
-- Kiểm tra xem tham chiếu plugin đã được thiết lập và in ra thông tin phù hợp
function pluginModule:CheckForPluginGlobal()
if plugin ~= nil then
print("Tham chiếu plugin đã được thiết lập!")
else
warn("Tham chiếu plugin bị thiếu!")
end
end
return pluginModuleTài Liệu Tham Khảo API
Thuộc Tính
Phương Pháp
CreateDockWidgetPluginGui
CreateDockWidgetPluginGuiAsync
Plugin:CreateDockWidgetPluginGuiAsync(
Tham Số
Lợi Nhuận
Mẫu mã
Nút văn bản GUI Widget
-- Tạo đối tượng 'DockWidgetPluginGuiInfo' mới
local widgetInfo = DockWidgetPluginGuiInfo.new(
Enum.InitialDockState.Float, -- Widget sẽ được khởi tạo trong panel nổi
true, -- Widget sẽ được bật ban đầu
false, -- Không ghi đè trạng thái đã bật trước đó
200, -- Chiều rộng mặc định của cửa sổ nổi
300, -- Chiều cao mặc định của cửa sổ nổi
150, -- Chiều rộng tối thiểu của cửa sổ nổi (tùy chọn)
150 -- Chiều cao tối thiểu của cửa sổ nổi (tùy chọn)
)
-- Tạo giao diện widget mới
local testWidget = plugin:CreateDockWidgetPluginGuiAsync("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 = "Nhấn Tôi"
testButton.Parent = testWidgetCreatePluginAction
Lợi Nhuận
Mẫu mã
Tạo một PluginAction
local pluginAction = plugin:CreatePluginAction(
"HelloWorldAction",
"Hello World",
"In ra một 'Hello world!'",
"rbxasset://textures/sparkle.png",
true
)
pluginAction.Name = "Hành động thử nghiệm"
local function actionTriggered()
print("Hello world!")
end
pluginAction.Triggered:Connect(actionTriggered)CreatePluginMenu
Lợi Nhuận
Mẫu mã
Tạo PluginMenu và PluginMenuAction
-- Mã này có thể được dán vào Command Bar, nhưng chỉ một lần
local pluginMenu = plugin:CreatePluginMenu(math.random(), "Menu Kiểm Tra")
pluginMenu.Name = "Menu Kiểm Tra"
pluginMenu:AddNewAction("Hành động A", "A", "rbxasset://textures/loading/robloxTiltRed.png")
pluginMenu:AddNewAction("Hành động B", "B", "rbxasset://textures/loading/robloxTilt.png")
local subMenu = plugin:CreatePluginMenu(math.random(), "C", "rbxasset://textures/explosion.png")
subMenu.Name = "Menu Con"
subMenu:AddNewAction("Hành động D", "D", "rbxasset://textures/whiteCircle.png")
subMenu:AddNewAction("Hành động E", "E", "rbxasset://textures/icon_ROBUX.png")
pluginMenu:AddMenu(subMenu)
pluginMenu:AddSeparator()
pluginMenu:AddNewAction("Hành động F", "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("Hành động Đã Chọn:", selectedAction.Text, "với ActionId:", selectedAction.ActionId)
else
print("Người dùng không chọn hành động nào!")
end
end
end
toggle.Changed:Connect(onToggled)CreateToolbar
Tham Số
Lợi Nhuận
Mẫu mã
Plugin:TạoThanhCôngCụ
plugin:CreateToolbar("VíDụThanhCôngCụ")Deactivate
Plugin:Deactivate():()
Lợi Nhuận
()
GetMouse
Lợi Nhuận
Mẫu mã
Plugin:GetMouse
local mouse = plugin:GetMouse()
local function button1Down()
print("Nút 1 được nhấn từ PluginMouse")
end
mouse.Button1Down:Connect(button1Down)GetSelectedRibbonTool
Lợi Nhuận
Mẫu mã
Plugin:LấyCôngCụRuyBăngĐãChọn
plugin:SelectRibbonTool(Enum.RibbonTool.Move, UDim2.new())
task.wait() -- chờ khung hình tiếp theo
local selectedRibbonTool = plugin:GetSelectedRibbonTool()
print("Công cụ Ruy Băng đã chọn là", selectedRibbonTool)GetSetting
Tham Số
Lợi Nhuận
Variant
Mẫu mã
Plugin: Lấy Cài Đặt
local RAN_BEFORE_KEY = "RanBefore"
local didRunBefore = plugin:GetSetting(RAN_BEFORE_KEY)
if didRunBefore then
print("Chào mừng bạn trở lại!")
else
plugin:SetSetting(RAN_BEFORE_KEY, true)
print("Chào mừng! Cảm ơn bạn đã cài đặt plugin này!")
endGetStudioUserId
ImportFbxAnimation
ImportFbxAnimationAsync
ImportFbxRig
ImportFbxRigAsync
Negate
Plugin:Negate(objects:Instances):Instances
Tham Số
objects:Instances |
Lợi Nhuận
Instances
OpenScript
OpenWikiPage
PromptForExistingAssetId
PromptForExistingAssetIdAsync
PromptSaveSelection
PromptSaveSelectionAsync
SaveSelectedToRoblox
Plugin:SaveSelectedToRoblox():()
Lợi Nhuận
()
SelectRibbonTool
Tham Số
Lợi Nhuận
()
Separate
Plugin:Separate(objects:Instances):Instances
Tham Số
objects:Instances |
Lợi Nhuận
Instances
SetSetting
Tham Số
value:Variant |
Lợi Nhuận
()
Mẫu mã
Plugin:GetSetting và Plugin:SetSetting
local RAN_BEFORE_KEY = "RunBefore"
local hasRunBefore = plugin:GetSetting(RAN_BEFORE_KEY)
if hasRunBefore then
print("Chào mừng trở lại!")
else
print("Cảm ơn bạn đã cài đặt plugin này!")
plugin:SetSetting(RAN_BEFORE_KEY, true)
endStartDrag
Tham Số
Lợi Nhuận
()
Mẫu mã
Tiện ích Kéo và Thả
assert(plugin, "Script này phải được chạy như một plugin trong Studio")
local widgetInfo = DockWidgetPluginGuiInfo.new(Enum.InitialDockState.Float, true, true, 300, 200)
local dragSourceWidget = plugin:CreateDockWidgetPluginGuiAsync("Nguồn Kéo", widgetInfo)
dragSourceWidget.Title = "Nguồn Kéo"
local textBox = Instance.new("TextBox")
textBox.Parent = dragSourceWidget
textBox.Size = UDim2.new(1, 0, 0, 32)
textBox.Text = "Xin chào, kéo plugin"
local dragButton = Instance.new("TextButton")
dragButton.Size = UDim2.new(1, 0, 1, -32)
dragButton.Position = UDim2.new(0, 0, 0, 32)
dragButton.Text = "Chỉnh sửa văn bản ở trên, sau đó bắt đầu kéo ở đây"
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)
-- Widget này sẽ nhận drops
local dragTargetWidget = plugin:CreateDockWidgetPluginGuiAsync("Mục Tiêu Thả", widgetInfo)
dragTargetWidget.Title = "Mục Tiêu Thả"
-- TextLabel này sẽ hiển thị những gì đã được thả
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(1, 0, 1, 0)
textLabel.Text = "Thả ở đây..."
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)Sự Kiện