PluginGui
*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.
PluginGui, çeşitli Roblox Studio düzenleyicilerinde GuiObjects görüntülenmesine izin veren GUI'ler için soyut bir sınıftır.Şu anda mevcut tek PluginGui türü DockWidgetPluginGui , ancak gelecekte daha fazlası olabilir!
Özet
Özellikler
İçeriğin üzerinde görüntülenen PluginGui başlığı.
Bu LayerCollector 'nin görünürlüğünü değiştirir.
Oyuncunun karakteri her yeniden doğduğunda sıfırlar (kendini sildi ve oyuncunun karakterini yeniden klonladı) ve oyuncunun karakteri her yeniden doğduğunda sıfırlar.
GuiObject.ZIndex nin bu LayerCollector 'nin tüm yan ürünlerinde nasıl davrandığını kontrol eder.
Bir GuiBase2d öğesinin gerçek ekran konumunu, piksel olarak tanımlar.
Bir GuiBase2d öğesinin gerçek ekran dönüşünü derecelerle tanımlar.
Bir GuiBase2d öğesinin gerçek ekran boyutunu, piksel olarak tanımlar.
true olarak ayarlanırsa, yerelleştirme bu GuiBase2d ve onun soyundakilere uygulanacaktır.
Bu GuiBase2d ve onun soyundakilere otomatik yerelleştirme uygulamak için kullanılacak bir LocalizationTable.
Aşağı yönünde oyun kolu seçim davranışını özelleştirir.
Oyun kolu seçim davranışını sol yönde özelleştirir.
Oyun kolu seçim davranışını doğru yönde özelleştirir.
Oyun kolu seçim davranışını yukarı yönünde özelleştirir.
Oyun kolu seçim hareketinin özelleştirilmesine izin verir.
Yöntemler
Bir işlevi PluginGui kapatma düğmesine bağlar ve varsayılan davranışı geçersiz kılar.
Farenin PluginGui'ye göre konumunu döndürür.
Etkinlikler
Kullanıcı, bir PluginGui üzerinde gezinirken fareyi serbest bıraktığında ateş eder, Plugin:StartDrag() tarafından başlatılan bir sürükleme işlemi sırasında.
Kullanıcının farenin bir PluginGui'ye girdiğinde bir sürükleme işlemi başlatıldığında ateş eder Plugin:StartDrag() .
Kullanıcının fare, Plugin:StartDrag() tarafından başlatılan bir sürükleme işlemi sırasında bir PluginGui'den ayrıldığında ateş eder.
Kullanıcının fareninin bir PluginGui içinde hareket ettiğinde, Plugin:StartDrag() tarafından başlatılan bir sürükleme işlemi sırasında ateş eder.
Kullanıcı, PluginGui penceresiyle etkileşim kurmayı bıraktığında ateş eder.
Kullanıcı, PluginGui penceresiyle etkileşime başladığında ateş eder.
- SelectionChanged(amISelected : boolean,previousSelection : GuiObject,newSelection : GuiObject):RBXScriptSignal
Oyun kolu seçimi, hareket eder, değişir veya bağlantılı GuiBase2d veya herhangi bir altın içinde değişir, bağlantılı GuiObjects .
Özellikler
Yöntemler
BindToClose
Bu işlev, bir işlevi PluginGui kapatma düğmesine bağlar ve varsayılan davranışı geçersiz kılar.
Varsayılan olarak, kullanıcı sağ üst köşede bulunan 'x' düğmesine tıkladığında, PluginGui özelliğinin Enabled değeri false olarak ayarlanır ve pencere kapatılır.Özel bir işlev BindToClose kullanılarak bağlandığında, bu davranış üzer yazılır ve kullanıcının gerçekten pencereyi kapatmak istediğini veya çalışmalarını kaydetme fırsatı verdiğini kontrol etmenize izin verir.
Varsayılan kapatma davranışı bu işlev tarafından yeniden yazıldığından, PluginGui kapatmak için PluginGui.Enabledfalse 'e ayarlanarak manuel olarak kapatmak için yapılandırmanız gerekecek.Örneğin, aşağıdaki kısımdaki kullanıcılar, GUI'yi kapatmak için bir onay düğmesine tıklamak zorundadır:
local closing = false
pluginGui:BindToClose(function()
-- zaten bir düğme yapmadığımızdan emin olun
if closing then
return
end
closing = true
-- oluştur onay düğmesi
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
-- tıklama için dinle
confirmButton.Activated:Connect(function()
-- gui'yi kapat
pluginGui.Enabled = false
-- onay düğmesini kaldır
confirmButton:Destroy()
end)
end)
BindToClose'a hiçbir argümanla 'çözme' ve yukarıda açıklanan varsayılan davranışa geri dönmek için çağırabilirsiniz. Örneğin:
pluginGui:BindToClose()
Ayrıca bakın:
- Plugin:CreateDockWidgetPluginGui() bir PluginGui oluşturmak için çalıştırın
- DataModel:BindToClose() , bir işlevi oyun bitimine bağlamak için kullanılabilir ve bu işlevle karıştırılmamalıdır
Parametreler
Yakın düğmeye bağlama işlevi. Eğer bir işlev belirtilmezse, önceden belirlenmiş herhangi bir işlev bağlantıdan kaldırılacaktır.
Dönüşler
GetRelativeMousePosition
GetRelativeMousePosition, farenin sol üst kısmına göre konumunu döndürür PluginGui .Döndürülen değer yalnızca bir fare girişi PluginGui'de başladığında veya fare şu anda pencere üzerinde geziniyorsa değişir.
Dönüşler
Farenin ekran konumu, PluginGui'ye piksel olarak göre.
Kod Örnekleri
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()
Etkinlikler
PluginDragDropped
PluginDragDropped bir kullanıcı, bir sürükleme işlemi başlatıldığında fareyi bıraktığında ateşlenir PluginGui , çünkü Plugin:StartDrag() tarafından başlatılan bir sürükleme işlemi sırasında.
Ayrıca bakın:
Parametreler
Kod Örnekleri
This code sample creates two plugin widget windows: a drag source and a drop target. In the source window, the script creates a TextBox and TextButton to allow the user to begin a plugin drag action. The drop target window will display the MimeType of whatever is dragged into it using a TextLabel. If the MimeType is text/plain, it will display the plain text data instead.
To run this code sample as a plugin, paste it into a Script. Then, right-click the script in the Explorer window and choose "Save as Local Plugin".
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 , kullanıcının mouse'u PluginGui sırasında bir sürükleme işlemi başlatıldığında ateş eder Plugin:StartDrag() .
Bu etkinlik, bir sürükleme işlemi bırakılabilecek PluginGuis'te bir "Buraya Bırak" arayüzünü görüntülemek için yararlıdır.Böyle bir UI, PluginDragLeft veya PluginDragDropped ateş edildiğinde gizlenmelidir.
Ayrıca bakın:
Parametreler
Verilerin orijinal olarak geçtiği bir kopyası Plugin:StartDrag() .
Kod Örnekleri
This code sample creates two plugin widget windows: a drag source and a drop target. In the source window, the script creates a TextBox and TextButton to allow the user to begin a plugin drag action. The drop target window will display the MimeType of whatever is dragged into it using a TextLabel. If the MimeType is text/plain, it will display the plain text data instead.
To run this code sample as a plugin, paste it into a Script. Then, right-click the script in the Explorer window and choose "Save as Local Plugin".
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 , kullanıcının mouse'u bir sürükleme işlemi sırasında PluginGui bıraktığında ateş eder Plugin:StartDrag() .
Bu olay ve PluginDragDropped bir sürükleme işlemi bırakılabilecek PluginGuis'te bir "Buraya Bırak" arayüzünü gizlemek için yararlıdır.Böyle bir UI, herhangi bir PluginDragEntered ateşlenirken gösterilmelidir.
Ayrıca bakın:
Parametreler
Verilerin orijinal olarak geçtiği bir kopyası Plugin:StartDrag() .
Kod Örnekleri
This code sample creates two plugin widget windows: a drag source and a drop target. In the source window, the script creates a TextBox and TextButton to allow the user to begin a plugin drag action. The drop target window will display the MimeType of whatever is dragged into it using a TextLabel. If the MimeType is text/plain, it will display the plain text data instead.
To run this code sample as a plugin, paste it into a Script. Then, right-click the script in the Explorer window and choose "Save as Local Plugin".
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 , kullanıcının fare çubuğu bir sürükleme işlemi sırasında PluginGui içinde hareket ettiğinde ateş eder Plugin:StartDrag() .
Ayrıca bakın:
Parametreler
WindowFocusReleased
Pencere odaklanma serbest bırakıldı kullanıcı, PluginGui'nin penceresiyle etkileşime son verdiğinde, genellikle pencerede bulunmayan bir şeye tıklayarak hemen ateş eder.Bu işlevler, benzer şekilde adlandırılan UserInputService.WindowFocusReleased etkinliğine benzer şekilde çalışır.
Kullanıcı odaklanmışken bu PluginGui'ye sahipken odak diğerine taşınırsa, bu olay diğerininkinden önce ateşlenir .Ancak, ana oyun penceresi odaklanmışsa, bu olay sonra atar.
Kod Örnekleri
This code sample demonstrates how the focus state of a PluginGui can be tracked using the WindowFocused() and WindowFocusReleased() events. It changes the Title() as the focus state changes.
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
Pencere odaklı kullanıcı, PluginGui'nin penceresiyle etkileşime başladığında hemen ateş eder, genellikle ona tıklayarak.Bu işlevler, benzer şekilde adlandırılan UserInputService.WindowFocused etkinliğine benzer şekilde çalışır.Fare düğmleriyle ilgili herhangi bir GuiObject.InputBegan etkinlikten önce ateş eder.
Başka bir PluginGui odaklanmışsa ve kullanıcı bu PluginGui'ye odaklanırsa, bu olay diğerinin WindowFocusReleased olayından sonra ateşlenir.Ancak, ana oyun penceresi odaklanmışsa, bu etkinlik sonra atlar.
Kod Örnekleri
This code sample demonstrates how the focus state of a PluginGui can be tracked using the WindowFocused() and WindowFocusReleased() events. It changes the Title() as the focus state changes.
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)