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, Roblox Studio'daki çeşitli GUI'lerin görüntülenmesini sağlayan abstrakt bir klasördür. Şu anda mevcut olan tek bir PluginGui türü GuiObjects , ancak gelecekte daha fazlası olabilir!
Özet
Özellikler
PluginGui içeriklerinin üstünde gösterilen başlık.
Bu LayerCollector 'in görünürlüğünü değiştirir.
Oyuncunun karakterinin her yeniden doğduğunda LayerCollector sıfırlanıp kendini siler ve oyuncunun PlayerGui 'ine yeniden klonlanır.
Class.GuiObject.ZIndex ile bu LayerCollector ın tüm soyundan nasıl davranacağını kontrol eder.
Bir UI öğesinin gerçek ekran pozisyonunu, piksel olarak açıklar.
Bir UI öğesinin asıl ekran dönüşümünü, dereceler olarak açıklar.
Bir UI öğesi'nin aslındaki ekran büyüklüğünü,像 olarak tanımlar.
Açık olarak ayarlandığında, yerelleştirme bu GuiBase2d ve onun aşağıdaki soyundaki tüm benzerlerine uygulanacaktır.
Bu GuiBase2d ve onun aşağıdaki soyundaki otomatik yerelleştirmeyi uygulamak için kullanılan bir referans.
Aşağı yönlü gamepad seçimi davranışını özelleştirir.
Sol yönlü gamepad seçimi davranışını özelleştirir.
Oyun direği seçim davranışını özelleştirir.
Yukarı yönlendirme içinde oyun aracı seçim davranışını özelleştirir.
Oyun başlantısı seçimi hareketinin özelleştirilmesini sağlar.
Yöntemler
Bir işlevi PluginGui kapatma düğmesine bağlar, varsayılan davranışı üst üste geçersiz kılar.
PluginGui'ye ilişkin farenin konumunu geri döndürür.
Etkinlikler
Kullanıcı, bir PluginGui'yi kaydırmak için başlatılan kayırma işleminin üzerinde fareyi serbest bırakırken ateş eder. Fire when the user releases their mouse when hovering over a PluginGui during a drag operation started by Plugin:StartDrag() .
Kullanıcının farenin PluginGui'yi şu şekilde başlatan bir kaydırma işleminin içinde girerse ateş eder. Fires when the user's mouse enters a PluginGui during a drag operation started by Plugin:StartDrag() .
Kullanıcının farezi Plugin:StartDrag() ile başlatılan bir kayıt işlemini terk ettiğinde ateş eder.
Plugin:StartDrag() içindeki bir kayıt işlemi sırasında kullanıcının mouse'ı hareket ettirildiğinde ateş eder.
PluginGui'nin penceresinde etkileşim kesildiğinde ateş eder.
PluginGui'nin penceresinde etkileşime başladığında ateşlenir.
- SelectionChanged(amISelected : bool,previousSelection : GuiObject,newSelection : GuiObject):RBXScriptSignal
Gamepad seçimi hareket ettiğinde, ayrıldığında veya bağlı GuiBase2d'de veya ilgili herhangi bir GuiObjeleri değiştirdiğinde ateş eder.
Özellikler
Yöntemler
BindToClose
Bu işlev, bir işlevi PluginGui kapatma düğmesine bağlar, varsayılan davranışı üstünü alır.
Varsayılan olarak, kullanıcı PluginGui sağ üst köşesindeki 'x' butonuna tıklayınca Enabled özelliği false olarak ayarlanır, pencereyi kapatır. Bir özelleştirme işlevi kullanıcıyı 2>Class.PluginGui
Varsayılan kapatma davranışı bu işlev tarafından yerleştirildiğinden, PluginGui 'yu manuel olarak kapatmak için PluginGui.Enabled ile kapatmak zorunda kalacaksınız. Örneğin, aşağıdaki kodda kullanıcılar GUI'yi kapatmak için onay düğmesine t
local closing = false
pluginGui:BindToClose(function()
-- düğme yapmadığımızdan emin olun
if closing then
return
end
closing = true
-- olluşturma 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
-- kaldırma onayı düğmesini kaldır
confirmButton:Destroy()
end)
end)
BindToClose'ı 'unbind' yapmak ve aşağıda açıklanan varsayılan davranışa geri dönmek için herhangi bir argüman olmadan çağırabilirsiniz. Örneğin:
pluginGui:BindToClose()
Ayrıca bakınız:
- Plugin:CreateDockWidgetPluginGui() ile bir PluginGui oluştur
- DataModel:BindToClose() , bir işlevi oyunun bitmesine bağlayıp bu işlevle karıştırılmamalıdır
Parametreler
Yakın düğmesine bağlanan işlev. Eğer işlev belirtilmediyse, belirlenmiş herhangi bir işlev bağlanmayacaktır.
Dönüşler
GetRelativeMousePosition
GetRelativeMousePosition, PluginGui 'nin sol üst köşesine ilişkin farklı olan mouse'nin konumunu içerir. Sunulan değer sadece PluginGui'de bir mouse'nin girme başladığında veya mouse'nin şimdi pencere üzerinde bulunduğunda değişir.
Dönüşler
Mouse'un PluginGui'ye kadar olan ekran pozisyonu.
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 çalıştığında kullanıcı bir PluginGui ile fareyi bir Plugin:StartDrag() içinde başlatan bir kaydırma işlemini etkisi altına alır.
Ayrıca bakınız:
Parametreler
Kod Örnekleri
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 çıktığında kullanıcının mouse'u PluginGui'e girdiğinde bir çekme işlemi başlatıldığında ateş edilir.
Bu etkinlik, bir "Drop Here" UI'ini PluginGuis'te gösteren bir "Buraya Bırak" ekranının kullanıcılar tarafından gösterilmesine yararlıdır. Bu tür bir UI, bir çekme işleminin bırakıldığında gizlenmelidir. Errors: Error: Drop Here Severity: major --- Error: bırakıldığında gizlenmelidir Severity
Ayrıca bakınız:
Parametreler
Verilerin orijinal olarak Plugin:StartDrag() 'a kopyalanması.
Kod Örnekleri
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 bir PluginGui ile etkileşim kurarken çalışır. Plugin:StartDrag() ile etkileşim kurarken kullanıcının bir 0>Class.PluginGui0> ı bırakması durumunda.
Bu etkinlik ve PluginDragDropped bir "Drop Here" UI'ini PluginGuis'te gizlemek için yararlıdır. Bu bir UI, PluginDragEntered ile yan yana yayınlandığında gösterilmelidir.
Ayrıca bakınız:
Parametreler
Verilerin orijinal olarak Plugin:StartDrag() 'a kopyalanması.
Kod Örnekleri
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 çıktığında kullanıcının mouse'u bir PluginGui içinde kaydırma işleminin başladığında ateş edilir.
Ayrıca bakınız:
Parametreler
WindowFocusReleased
WindowFocusRelease PluginGui'nin penceresine etkileşim kesildiğinde derhal ateşlenir, genellikle pencerenin dışında bir şeye tıklayarak. Bu, UserInputService.WindowFocusReleased adlı eşdeğer adlandırılmış bir etkinliğe çalışır.
Eğer kullanıcının bu PluginGui'yi kullanırken odaklanıyorsa, PluginGui içindeki kullanıcı sayısını artırır ve bu olay, WindowFocused etkinliğinden önce ortak olayı başlatır. Ancak, ana oyun penceresi odaklan
Kod Örnekleri
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
WindowFocused PluginGui'nin penceresine etkileşim başlatıldığında derhal ateşlenir, genellikle etkileşim başlatıldığında. Bu, aynı şekilde adlandırılan UserInputService.WindowFocused etkinliğiyle aynı işlevi görür. Bu, fare düğmeleriyle ilgili herhangi bir Class.GuiObject.
Başka bir PluginGui ın odak içinde ve kullanıcı bu PluginGui'yı odaklandıysa, bu etkinlik kullanıcının WindowFocusReleased etkinliğinden sonra başlar. Ancak, ana oyun penceresi odaklandıysa, bu etkinlik başladı
Kod Örnekleri
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)