GuiObject

Artık kullanılmayanları göster

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Oluşturulamaz
Gezilemez

GuiObject bir 2D kullanıcı arayüzü nesnesidir. Tüm grafik kullanıcı arayüzü nes

Özel GUI nesnelerinin dizaynını özelleştirmek için, list/flex veya grid gibi bir dizayn yapısını kullanabilirsiniz ve onları görünüm modifikatörleri aracılığıyla özelleştirebilirsiniz.

Herhangi bir GUI nesnesinde tıklama butonu olaylarını InputBegan ve InputEnded kullanarak tespit etmek mümkündür, ancak sadece Class.ImageButton ve

Özet

Özellikler

Şuradan alınan Özellikler: GuiBase2d

Yöntemler

Etkinlikler

Şuradan alınan Etkinlikler: GuiBase2d

Özellikler

Active

Paralel oku

Bu özellik, bu GuiObject ın çekirdek modelleri gibi 3D alanına girecek girişleri belirler, tıpkı ClickDetector gibi aktif bir UI elemanının üzerinde fareyi gezdiren oyuncular gibi. Diğer bir deyişle, oyuncu aktif bir UI elemanına fare

For GuiButton 对象 ( ImageButton ve Class.TextButton

Kod Örnekleri

TextButton Active Debounce

-- Place this LocalScript within a TextButton (or ImageButton)
local textButton = script.Parent
textButton.Text = "Click me"
textButton.Active = true
local function onActivated()
-- This acts like a debounce
textButton.Active = false
-- Count backwards from 5
for i = 5, 1, -1 do
textButton.Text = "Time: " .. i
task.wait(1)
end
textButton.Text = "Click me"
textButton.Active = true
end
textButton.Activated:Connect(onActivated)

AnchorPoint

Paralel oku

AnchorPoint özelliği, bir GuiObject ın kesin boyutlarına dayanan orijinal noktasını belirler. Orijinal nokta, öğenin yerini belirlemek için (GuiObject.Position aracılığıyla) yerleştirildiği yerden belirlenir. İçindeki öğelerin boyutlarını

Açıklık ve ayrıntılar için buraya bakın.

Kod Örnekleri

AnchorPoint Demo

local guiObject = script.Parent
while true do
-- Top-left
guiObject.AnchorPoint = Vector2.new(0, 0)
guiObject.Position = UDim2.new(0, 0, 0, 0)
task.wait(1)
-- Top
guiObject.AnchorPoint = Vector2.new(0.5, 0)
guiObject.Position = UDim2.new(0.5, 0, 0, 0)
task.wait(1)
-- Top-right
guiObject.AnchorPoint = Vector2.new(1, 0)
guiObject.Position = UDim2.new(1, 0, 0, 0)
task.wait(1)
-- Left
guiObject.AnchorPoint = Vector2.new(0, 0.5)
guiObject.Position = UDim2.new(0, 0, 0.5, 0)
task.wait(1)
-- Dead center
guiObject.AnchorPoint = Vector2.new(0.5, 0.5)
guiObject.Position = UDim2.new(0.5, 0, 0.5, 0)
task.wait(1)
-- Right
guiObject.AnchorPoint = Vector2.new(1, 0.5)
guiObject.Position = UDim2.new(1, 0, 0.5, 0)
task.wait(1)
-- Bottom-left
guiObject.AnchorPoint = Vector2.new(0, 1)
guiObject.Position = UDim2.new(0, 0, 1, 0)
task.wait(1)
-- Bottom
guiObject.AnchorPoint = Vector2.new(0.5, 1)
guiObject.Position = UDim2.new(0.5, 0, 1, 0)
task.wait(1)
-- Bottom-right
guiObject.AnchorPoint = Vector2.new(1, 1)
guiObject.Position = UDim2.new(1, 0, 1, 0)
task.wait(1)
end

AutomaticSize

Paralel oku

Bu özellik, aşağıdaki nesillerin boyutuna göre ebeveyn UI objelerinin otomatik olarak boyutlandırılması için kullanılır. Bu özellik, düzenleme veya çalışma zamanında UI'ye metin ve diğer içerik eklemek için dinamik olarak metni ve diğer içerikleri ayarlar ve boyut ayarlanır.

AutomaticSize değeri Enum.AutomaticSize değerine ayarlandığında, bu UI öğesi çocuk içeriğine bağlı olarak yeniden boyutlandırılabilir.

Bu özelliğin nasıl kullanılacağı ve işlediği hakkında daha fazla bilgi için buraya bakın.

Kod Örnekleri

LocalScript in a ScreenGui

-- Array of text labels/fonts/sizes to output
local labelArray = {
{ text = "Lorem", font = Enum.Font.Creepster, size = 50 },
{ text = "ipsum", font = Enum.Font.IndieFlower, size = 35 },
{ text = "dolor", font = Enum.Font.Antique, size = 55 },
{ text = "sit", font = Enum.Font.SpecialElite, size = 65 },
{ text = "amet", font = Enum.Font.FredokaOne, size = 40 },
}
-- Create an automatically-sized parent frame
local parentFrame = Instance.new("Frame")
parentFrame.AutomaticSize = Enum.AutomaticSize.XY
parentFrame.BackgroundColor3 = Color3.fromRGB(90, 90, 90)
parentFrame.Size = UDim2.fromOffset(25, 100)
parentFrame.Position = UDim2.fromScale(0.1, 0.1)
parentFrame.Parent = script.Parent
-- Add a list layout
local listLayout = Instance.new("UIListLayout")
listLayout.Padding = UDim.new(0, 5)
listLayout.Parent = parentFrame
-- Set rounded corners and padding for visual aesthetics
local roundedCornerParent = Instance.new("UICorner")
roundedCornerParent.Parent = parentFrame
local uiPaddingParent = Instance.new("UIPadding")
uiPaddingParent.PaddingTop = UDim.new(0, 5)
uiPaddingParent.PaddingLeft = UDim.new(0, 5)
uiPaddingParent.PaddingRight = UDim.new(0, 5)
uiPaddingParent.PaddingBottom = UDim.new(0, 5)
uiPaddingParent.Parent = parentFrame
for i = 1, #labelArray do
-- Create an automatically-sized text label from array
local childLabel = Instance.new("TextLabel")
childLabel.AutomaticSize = Enum.AutomaticSize.XY
childLabel.Size = UDim2.fromOffset(75, 15)
childLabel.Text = labelArray[i]["text"]
childLabel.Font = labelArray[i]["font"]
childLabel.TextSize = labelArray[i]["size"]
childLabel.TextColor3 = Color3.new(1, 1, 1)
childLabel.Parent = parentFrame
-- Visual aesthetics
local roundedCorner = Instance.new("UICorner")
roundedCorner.Parent = childLabel
local uiPadding = Instance.new("UIPadding")
uiPadding.PaddingTop = UDim.new(0, 5)
uiPadding.PaddingLeft = UDim.new(0, 5)
uiPadding.PaddingRight = UDim.new(0, 5)
uiPadding.PaddingBottom = UDim.new(0, 5)
uiPadding.Parent = childLabel
task.wait(2)
end

BackgroundColor3

Paralel oku

Bu özellik, bir GuiObject arka planının rengini belirler (doldurma rengi). Eğer öğenizdeki bir yazı varsa, örneğin bir TextBox , TextButton veya 1> Class.TextLabel1> , arka planınızın rengiyle aynı olmalıdır.

Arka planın görsel özelliklerini belirleyen başka bir özellik de GuiObject.BackgroundTransparency ; eğer bu 1 olarak ayarlandıysa, hem arka plan hem de sınır renderi yapmaz.

Ayrıca bakın BorderColor3.

Kod Örnekleri

Rainbow Frame

-- Put this code in a LocalScript in a Frame
local frame = script.Parent
while true do
for hue = 0, 255, 4 do
-- HSV = hue, saturation, value
-- If we loop from 0 to 1 repeatedly, we get a rainbow!
frame.BorderColor3 = Color3.fromHSV(hue / 256, 1, 1)
frame.BackgroundColor3 = Color3.fromHSV(hue / 256, 0.5, 0.8)
task.wait()
end
end

BackgroundTransparency

Paralel oku

Bu özellik, GuiObject arka planı ve sınırının transparansını belirler. Bu, GUI bir TextBox , TextButton veya 2>

Bu özellik 1 olarak ayarlandıysa, arka plan veya sınır görünmez olacak ve GUI arka planının tamamen透明 olması sağlanacaktır.

BorderColor3

Paralel oku

Çizgili kenarın rengini belirler (genellikle çizgi rengi olarak bilinir). Bu, nesnenin Class.GuiObject.BackgroundColor3 özelliği ile ayrılır. 8 ile nesnenin kenarını göremazsınız. 1> 11 ile nesnenin kenarını göreb

Not edin ki UIStroke bileşen daha gelişmiş sınır efektlerine izin verir.

Kod Örnekleri

Button Highlight

-- Put me inside some GuiObject, preferrably an ImageButton/TextButton
local button = script.Parent
local function onEnter()
button.BorderSizePixel = 2
button.BorderColor3 = Color3.new(1, 1, 0) -- Yellow
end
local function onLeave()
button.BorderSizePixel = 1
button.BorderColor3 = Color3.new(0, 0, 0) -- Black
end
-- Connect events
button.MouseEnter:Connect(onEnter)
button.MouseLeave:Connect(onLeave)
-- Our default state is "not hovered"
onLeave()

BorderMode

Paralel oku

Bu özellik, GuiObject sınırının boyutlarına kıyasla bakrak olarak Enum.BorderMode kullanarak yerleştirildiğini belirtir.

Class.UIStroke'un bu özellik üzerinde çözgü olabilir ve daha gelişmiş sınır efektlerine izin verebilir.

BorderSizePixel

Paralel oku

Bu özellik, GuiObject sınırının, piksel olarak ne kadar geniş olduğunu belirler. Bu değeri 0 olarak ayarlayarak, sınırın tümüne erişiminizi devre dışı bırakırsınız.

Class.UIStroke'un bu özellik üzerinde çözgü olabilir ve daha gelişmiş sınır efektlerine izin verebilir.

Kod Örnekleri

Button Highlight

-- Put me inside some GuiObject, preferrably an ImageButton/TextButton
local button = script.Parent
local function onEnter()
button.BorderSizePixel = 2
button.BorderColor3 = Color3.new(1, 1, 0) -- Yellow
end
local function onLeave()
button.BorderSizePixel = 1
button.BorderColor3 = Color3.new(0, 0, 0) -- Black
end
-- Connect events
button.MouseEnter:Connect(onEnter)
button.MouseLeave:Connect(onLeave)
-- Our default state is "not hovered"
onLeave()

ClipsDescendants

Paralel oku

Bu özellik, GuiObject 'in dış kenarlarda görünmez hale getireceği kalıcı GUI öğelerinin herhangi bir kısmını kesip kesmez (görünmez hale getirir) belirler.

Not that GuiObject.Rotation bu özellik tarafından desteklenmiyor. Bu veya ataları GUI'lerinin bir non-zero GuiObject.Rotation ile destekleniyorsa, bu özellik görüntülenir ve aşağıdaki GUI elemanları değerine bağlı olarak görüntülenir.

Salt Okunur
Çoğaltılmamış
Paralel oku

oyuncuparmakları GuiObject üzerinde tutulduğunda, Class

Interactable

Paralel oku

Class.GuiButton ile etkileşime geçilebilir mi yoksa değil, GuiState ile GuiObject arasındaki şekli değiştirilebilir mi yoksa değil.

Bir GuiButton üzerinde:

  • Class.GuiButton üzerindeki GuiButton ayarı false olarak ayarlandığında, 1>Class.GuiButton1> artık basılabilir veya tıklanabilir değildir ve 4>
  • Class.GuiButton üzerindeki GuiButton ayarı true olarak belirlenmişken, 1> Class.GuiButton1> normal olarak davranır ve 4> Class.GuiObject.GuiState|GuiState4> normal olarak davranır.

Bir GuiObject üzerinde:

  • Class.GuiButton üzerindeki GuiButton ayarı false olarak belirlenmişken, 1>Class.GuiObject.GuiState|GuiState1> sürekli olarak 4> Envanter.GuiState.NonInteractable|NonInteractable4> olarak ayarlanacaktır.
  • Class.GuiButton üzerindeki GuiButton ayarı true olarak belirlenmişken, 1> Class.GuiObject.GuiState|GuiState1> normal olarak davranır.

LayoutOrder

Paralel oku

Bu özellik, bir GuiObject (örneğin, UIGridStyleLayout veya UIListLayout gibi) kullanıyorsa 2>Sıralama2> düzenini kont

GuiObjectslar, daha düşük değerlerin yüksek değerlerin üstünde önceliği alması nedeniyle yükselenme sırasında sıralanır. Eşit değerleri olan nesneler eklenen sıraya döner.

Gelecekteki iki mevcut eleman arasında bir eleman eklemek gerektiğinden emin değilseniz, 100 (0 , 100 , 1> 2001> vb.) ile katlar kullanarak geniş bir yazı tipi alanı sağlayabilirsiniz. Bu, diğer eleman

Ayrıca, ZIndex ı görüntülenme sırasını belirleyen, sıralama sırası yerine nesnenin rendering sırasını belirleyen öğedir.

NextSelectionDown

Paralel oku

Bu özellik, kullanıcının oyunpad'i seçerken seçili GuiObject değerini ayarlar. Bu özellik boşsa, oyunpad'i aşağı hareket ettirerek seçili GUI'yi değiştirmez.

Gamepad seçiciyi aşağıya hareket ettirerek GuiService.SelectedObject bu objeyi GUI olmadan bu objete ayarlar. GUI'nin Selectable olmadığı durumda bu özellik değerini garanti ettiğinizden emin olun. Not edin ki bu özellik değeri bir

Ayrıca bakın NextSelectionUp , NextSelectionLeft ve NextSelectionRight .

Kod Örnekleri

Creating a Gamepad Selection Grid

-- Setup the Gamepad selection grid using the code below
local container = script.Parent:FindFirstChild("Container")
local grid = container:GetChildren()
local rowSize = container:FindFirstChild("UIGridLayout").FillDirectionMaxCells
for _, gui in pairs(grid) do
if gui:IsA("GuiObject") then
local pos = gui.Name
-- Left edge
gui.NextSelectionLeft = container:FindFirstChild(pos - 1)
-- Right edge
gui.NextSelectionRight = container:FindFirstChild(pos + 1)
-- Above
gui.NextSelectionUp = container:FindFirstChild(pos - rowSize)
-- Below
gui.NextSelectionDown = container:FindFirstChild(pos + rowSize)
end
end
-- Test the Gamepad selection grid using the code below
local GuiService = game:GetService("GuiService")
local UserInputService = game:GetService("UserInputService")
GuiService.SelectedObject = container:FindFirstChild("1")
function updateSelection(input)
if input.UserInputType == Enum.UserInputType.Keyboard then
local key = input.KeyCode
local selectedObject = GuiService.SelectedObject
if not selectedObject then
return
end
if key == Enum.KeyCode.Up then
if not selectedObject.NextSelectionUp then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Down then
if not selectedObject.NextSelectionDown then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Left then
if not selectedObject.NextSelectionLeft then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Right then
if not selectedObject.NextSelectionRight then
GuiService.SelectedObject = selectedObject
end
end
end
end
UserInputService.InputBegan:Connect(updateSelection)

NextSelectionLeft

Paralel oku

Bu özellik, kullanıcının oyunpad'i seçiciyi sola hareket ettirdiğinde seçili GuiObjectyı ayarlar. Bu özellik boşsa, oyunpad'i sola hareket ettirerek seçili GUI'yi değiştirmez.

Gamepad seçiciyi sola hareket ettirerek GuiService.SelectedObject bu objeyi GUI olmadan bu objete ayarlar. GUI'nin Selectable olmadığı durumda bu özellik değerini garanti ettiğinizden emin olun. GUI'nin seçili özelliğinin değeri

Ayrıca bakın NextSelectionUp , NextSelectionDown ve NextSelectionRight .

Kod Örnekleri

Creating a Gamepad Selection Grid

-- Setup the Gamepad selection grid using the code below
local container = script.Parent:FindFirstChild("Container")
local grid = container:GetChildren()
local rowSize = container:FindFirstChild("UIGridLayout").FillDirectionMaxCells
for _, gui in pairs(grid) do
if gui:IsA("GuiObject") then
local pos = gui.Name
-- Left edge
gui.NextSelectionLeft = container:FindFirstChild(pos - 1)
-- Right edge
gui.NextSelectionRight = container:FindFirstChild(pos + 1)
-- Above
gui.NextSelectionUp = container:FindFirstChild(pos - rowSize)
-- Below
gui.NextSelectionDown = container:FindFirstChild(pos + rowSize)
end
end
-- Test the Gamepad selection grid using the code below
local GuiService = game:GetService("GuiService")
local UserInputService = game:GetService("UserInputService")
GuiService.SelectedObject = container:FindFirstChild("1")
function updateSelection(input)
if input.UserInputType == Enum.UserInputType.Keyboard then
local key = input.KeyCode
local selectedObject = GuiService.SelectedObject
if not selectedObject then
return
end
if key == Enum.KeyCode.Up then
if not selectedObject.NextSelectionUp then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Down then
if not selectedObject.NextSelectionDown then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Left then
if not selectedObject.NextSelectionLeft then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Right then
if not selectedObject.NextSelectionRight then
GuiService.SelectedObject = selectedObject
end
end
end
end
UserInputService.InputBegan:Connect(updateSelection)

NextSelectionRight

Paralel oku

Bu özellik, kullanıcının oyunpad'i seçiciyi sağa hareket ettirdiğinde seçilen GuiObject öğesini ayarlar. Bu özellik boşsa, oyunpad'i sağa hareket ettirerek seçilen GUI'yi değiştirmez.

Oyunpad seçiciyi sağa hareket ettirerek GuiService.SelectedObject bu objeyi GUI olmadan bu objete ayarlar, aksi takdirde bu özellik GUI'nin Selectable olmasını sağlar. GUI'nin seçilebilir özelliğinin değerini garanti etti

Ayrıca bakın NextSelectionUp , NextSelectionDown ve NextSelectionLeft .

Kod Örnekleri

Creating a Gamepad Selection Grid

-- Setup the Gamepad selection grid using the code below
local container = script.Parent:FindFirstChild("Container")
local grid = container:GetChildren()
local rowSize = container:FindFirstChild("UIGridLayout").FillDirectionMaxCells
for _, gui in pairs(grid) do
if gui:IsA("GuiObject") then
local pos = gui.Name
-- Left edge
gui.NextSelectionLeft = container:FindFirstChild(pos - 1)
-- Right edge
gui.NextSelectionRight = container:FindFirstChild(pos + 1)
-- Above
gui.NextSelectionUp = container:FindFirstChild(pos - rowSize)
-- Below
gui.NextSelectionDown = container:FindFirstChild(pos + rowSize)
end
end
-- Test the Gamepad selection grid using the code below
local GuiService = game:GetService("GuiService")
local UserInputService = game:GetService("UserInputService")
GuiService.SelectedObject = container:FindFirstChild("1")
function updateSelection(input)
if input.UserInputType == Enum.UserInputType.Keyboard then
local key = input.KeyCode
local selectedObject = GuiService.SelectedObject
if not selectedObject then
return
end
if key == Enum.KeyCode.Up then
if not selectedObject.NextSelectionUp then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Down then
if not selectedObject.NextSelectionDown then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Left then
if not selectedObject.NextSelectionLeft then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Right then
if not selectedObject.NextSelectionRight then
GuiService.SelectedObject = selectedObject
end
end
end
end
UserInputService.InputBegan:Connect(updateSelection)

NextSelectionUp

Paralel oku

Bu özellik, kullanıcının oyun şeçiciyi yukarı hareket ettirirken seçili GuiObjectyı ayarlar. Bu özellik boşsa, oyun şeçiciyi yukarı hareket ettirerek seçili GUI'yı değiştirmez.

Oyunpad seçici yukarı hareketi, GUI'nin GuiService.SelectedObject ına bu öğeyi ayırır, aksi takdirde GUI'nin Selectable ı olmayan bir öğeye ayarlanır. Bu özellik, seçilebilir bir öğenin değerini G

Ayrıca bakınız NextSelectionDown, NextSelectionLeft, NextSelectionRight.

Kod Örnekleri

Creating a Gamepad Selection Grid

-- Setup the Gamepad selection grid using the code below
local container = script.Parent:FindFirstChild("Container")
local grid = container:GetChildren()
local rowSize = container:FindFirstChild("UIGridLayout").FillDirectionMaxCells
for _, gui in pairs(grid) do
if gui:IsA("GuiObject") then
local pos = gui.Name
-- Left edge
gui.NextSelectionLeft = container:FindFirstChild(pos - 1)
-- Right edge
gui.NextSelectionRight = container:FindFirstChild(pos + 1)
-- Above
gui.NextSelectionUp = container:FindFirstChild(pos - rowSize)
-- Below
gui.NextSelectionDown = container:FindFirstChild(pos + rowSize)
end
end
-- Test the Gamepad selection grid using the code below
local GuiService = game:GetService("GuiService")
local UserInputService = game:GetService("UserInputService")
GuiService.SelectedObject = container:FindFirstChild("1")
function updateSelection(input)
if input.UserInputType == Enum.UserInputType.Keyboard then
local key = input.KeyCode
local selectedObject = GuiService.SelectedObject
if not selectedObject then
return
end
if key == Enum.KeyCode.Up then
if not selectedObject.NextSelectionUp then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Down then
if not selectedObject.NextSelectionDown then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Left then
if not selectedObject.NextSelectionLeft then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Right then
if not selectedObject.NextSelectionRight then
GuiService.SelectedObject = selectedObject
end
end
end
end
UserInputService.InputBegan:Connect(updateSelection)

Position

Paralel oku

Bu özellik, bir GuiObject piksel ve skalar pozisyonunu belirlerken UDim2 kullanır. Piyasa merkezi olarak nesnenin GuiObject.AnchorPoint etrafındadır.

Salar pozisyonu, eğer varsa, ebeveyn GUI öğesi boyutuna göre değiştirilebilir.

Datatype.UDim2 değerinin piksel bölümleri, ebeveyn GUI'nin büyüklüğüne bağlı olarak aynıdır. Değerler, pikseldeki nesnenin konumunu temsil eder. Bir nesnenin asıl piksel konumu, GuiBase2d.AbsolutePosition özelliğinden okunabilir.

Rotation

Paralel oku

Bu özellik, GuiObject 'in döndürülmesinin kaç derece olduğunu belirler. Döndürme, nesnenin merkezine dayanarak Class.GuiObject.AnchorPoint|AnchorPoint ile, yani döndürme noktasını değiştiremezsiniz, kom

Selectable

Paralel oku

Bu özellik, bir oyun cihazı kullanarak GUI'leri gezinti ederken seçilebilir GuiObject ile seçilebilir olup olmadığını belirler.

Bu özellik doğruysa, bir GUI seçilebilir. Seçilen bir GUI'yi seçmek ayrıca GuiService.SelectedObject özelliğini oluşturur.

Bu doğru değilse, GUI seçilemez. Ancak, bir GUI seçildiğinde bu değeri GuiService.SelectedObject özelliğine ayarlayarak seçilmez veya değerini değiştirmez.

Class.GuiObject.SelectionGained ve GuiObject.SelectionLost öğesi için öğe için yanlışlık yapmaz. Bir GuiObjeyi seçmek için GuiService.SelectedObject özelliğini değiştirmeniz gerekir.

Bu özellik, bir GUI'yu birkaç GUI'ye bağlayan özellikler aracılığıyla Class.GuiObject.NextSelectionUp , Class.GuiObj.NextSelectionDown , Class.GuiObj.NextSelectionRight veya Class

Kod Örnekleri

Limiting TextBox Selection

local GuiService = game:GetService("GuiService")
local textBox = script.Parent
local function gainFocus()
textBox.Selectable = true
GuiService.SelectedObject = textBox
end
local function loseFocus(_enterPressed, _inputObject)
GuiService.SelectedObject = nil
textBox.Selectable = false
end
-- The FocusLost and FocusGained event will fire because the textBox
-- is of type TextBox
textBox.Focused:Connect(gainFocus)
textBox.FocusLost:Connect(loseFocus)

SelectionImageObject

Paralel oku

Bu özellik, oyun aracıları için kullanılan varsayılan seçim süslemesini geçersiz kılar.

Seçili SelectionImageObject ile seçili GuiObject arasındaki seçilmiş Size ile öğe boyutlandırılır. En iyi sonuçlar için, öğenin ölçeğini 1> Datatype.UDim21> ile aş

Class.GuiObject öğesi için SelectionImageObject değiştirilmesi sadece o öğeyi etkiler. Tüm bir kullanıcının GUI öğelerine etki etmek için, Class.PlayerGui.SelectionImageObject özelliğini ayarlayın.

Kullanıcının hangi GUI öğesi seçildiğini belirlemek veya ayarlamak için, GuiService.SelectedObject özelliğini kullanabilirsiniz. Oyuncu, oyunpad'ı kullanarak farklı

SelectionOrder

Paralel oku

Daha düşük bir SeçimSırası ile GuiObjects seçilir, yüksek bir SeçimSırası ile GuiObjects'ın başlangıcında veya GuiService:Select() çağrılırken. Bu özellik yönlendirmeyi etkilemez.Varsayılan değer 0'dır.

Size

Paralel oku

Bu özellik, bir GuiObject skalar ve piksel büyüklüğünü kullanarak belirlenen şu özellikleri belirler: UDim2.

Salar boyutu, ebeveyn GUI öğesi boyutuna göre küçüktür, varsa.

Datatype.UDim2 değerinin piksel bölümleri, ebeveyn GUI'nin büyüklüğüne bağlı olarak aynıdır. Değerler, piksel büyüklüğünü temsil eder. Bir nesnenin asıl piksel büyüklüğü GuiBase2d.AbsoluteSize özelliğinden okunabilir.

Class.GuiObjectnın bir ebeği varsa, her eksenin boyutu ayrıca ebeğin SizeConstraint ile etkilenir.

Kod Örnekleri

Health Bar

local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- Paste script into a LocalScript that is
-- parented to a Frame within a Frame
local frame = script.Parent
local container = frame.Parent
container.BackgroundColor3 = Color3.new(0, 0, 0) -- black
-- This function is called when the humanoid's health changes
local function onHealthChanged()
local human = player.Character.Humanoid
local percent = human.Health / human.MaxHealth
-- Change the size of the inner bar
frame.Size = UDim2.new(percent, 0, 1, 0)
-- Change the color of the health bar
if percent < 0.1 then
frame.BackgroundColor3 = Color3.new(1, 0, 0) -- black
elseif percent < 0.4 then
frame.BackgroundColor3 = Color3.new(1, 1, 0) -- yellow
else
frame.BackgroundColor3 = Color3.new(0, 1, 0) -- green
end
end
-- This function runs is called the player spawns in
local function onCharacterAdded(character)
local human = character:WaitForChild("Humanoid")
-- Pattern: update once now, then any time the health changes
human.HealthChanged:Connect(onHealthChanged)
onHealthChanged()
end
-- Connect our spawn listener; call it if already spawned
player.CharacterAdded:Connect(onCharacterAdded)
if player.Character then
onCharacterAdded(player.Character)
end

SizeConstraint

Paralel oku

Bu özellik, Size eksenlerini belirler ki, GuiObject üzerine dayanacakları hakkında, ebeveynlerinin boyutlarına göre.

Bu özellik, bir ebeveyn nesneyin genişliği ile yüksekliği arasındaki skalama için yaratılmış GUI nesneleri oluşturmak için kullanışlıdır, ancak her ikisi de etkili olarak özellik oranını korur.

Transparency

Gizli
Çoğaltılmamış
Paralel oku

Class.GuiObject.BackgroundTransparency|BackgroundTransparency ile TextTransparency arasındaki karışık bir özellik.

Visible

Paralel oku

Bu özellik, GuiObject ve onun çıkışlarının görüntülenmesi olacaktır.

Bir GuiObject 'in bileşenleri, tranzparency özellikleri aracılığıyla bireysel olarak kontrol edilebilir GuiObject.BackgroundTransparency, TextLabel.TextTransparency ve 1>Class.ImageLabel.ImageTransparency1> .

Bu öğün false olduğunda, GuiObject , UIListLayout ve 1> Class.UITableLayout1> gibi yerleşim yapıları tarafından görmezden gelinecektir. Diğer bir deyişle, öğenin normalde yerini alacağı yerleş

Kod Örnekleri

UI Window

local gui = script.Parent
local window = gui:WaitForChild("Window")
local toggleButton = gui:WaitForChild("ToggleWindow")
local closeButton = window:WaitForChild("Close")
local function toggleWindowVisbility()
-- Flip a boolean using the `not` keyword
window.Visible = not window.Visible
end
toggleButton.Activated:Connect(toggleWindowVisbility)
closeButton.Activated:Connect(toggleWindowVisbility)

ZIndex

Paralel oku

Bu özellik, bir GuiObject ın diğerlerine göre hangi sırayla görüntülenmesini sağlar.

Varsayılan olarak, GuiObjects``ZIndex değerlerine sahip olanların önceliği yükseltilmiş önceliği olanların üzerinde ortaya çıkarılır. Class.ScreenGui

Gelecekteki iki mevcut öğeler arasında bir eleman eklemek ihtiyacınız olduğundan emin değilseniz, bu iki öğenin çift katına kadar kullanmak iyi bir pratikdir. ( 100 ( 0 , 100 , 1> 200

Ayrıca, LayoutOrder , bir sıralama düzeninin GuiObject sırasını kontrol eden bir 12> Class.GuiObject2> ile kullanıldığında, bir 5>sıralama5> düzenini kullanıyorsa, bir 8>sıralama8> düzenini kull

Yöntemler

TweenPosition

Yeni bir UDim2 pozisyonuna GUI'yu düzgün bir şekilde hareket ettirir, kullanıcının belirlenen Enum.EasingDirection ve Enum.EasingStyle iletişimini kullanarak.

Bu işlev, tween'in oynayıp oynayacağını döndürecek. GuiObject ve üst çizgi parametresi sahteysa oynayacaktır.

Ayrıca bakınız:

Parametreler

endPosition: UDim2

GUI'nin nereye hareket etmesi gerektiği.

easingDirection: Enum.EasingDirection

GUI'yi endPosition yönlendirmesi için kolaylaştırmanın yönü.

Varsayılan değer: "Out"
easingStyle: Enum.EasingStyle

GUI'yi endPosition 'e kolaylaştırma stilinde.

Varsayılan değer: "Quad"
time: number

tweetin bir kısmını oluşturmak için kaç saniye sürecek.

Varsayılan değer: 1
override: bool

Eğer tween geliştirmeyi geçersiz kılacak mı?

Varsayılan değer: false
callback: function

Çizgi tamamlandığında çalıştırılacak bir dönüşüm işlevi.

Varsayılan değer: "nil"

Dönüşler

Çizgi film oynayacak mı yoksa hayvanlarını oynayacak mı.

Kod Örnekleri

Tween a GUI's Position

local START_POSITION = UDim2.new(0, 0, 0, 0)
local GOAL_POSITION = UDim2.new(1, 0, 1, 0)
local guiObject = script.Parent
local function callback(state)
if state == Enum.TweenStatus.Completed then
print("The tween completed uninterrupted")
elseif state == Enum.TweenStatus.Canceled then
print("Another tween cancelled this one")
end
end
-- Initialize the GuiObject position, then start the tween:
guiObject.Position = START_POSITION
local willPlay = guiObject:TweenPosition(
GOAL_POSITION, -- Final position the tween should reach
Enum.EasingDirection.In, -- Direction of the easing
Enum.EasingStyle.Sine, -- Kind of easing to apply
2, -- Duration of the tween in seconds
true, -- Whether in-progress tweens are interrupted
callback -- Function to be callled when on completion/cancelation
)
if willPlay then
print("The tween will play")
else
print("The tween will not play")
end

TweenSize

Güvenli bir şekilde, belirlenen UDim2 ile belirlenen yeni bir GUI'yi, belirlenen Enum.EasingDirection ve Enum.EasingStyle ile yeniden boyutlandırır.

Bu işlev, eğilme oynatacağını gösterir. Normalde bu her zaman doğru olacaktır, ancak başka bir eğilme aktif ve üstesinden geçersiz olacaktır.

Ayrıca bakınız:

Parametreler

endSize: UDim2

GUI'nin yeniden boyutlandırılması gereken boyutu.

easingDirection: Enum.EasingDirection

GUI'yi endSize yana kolaylaştırmanın yönü.

Varsayılan değer: "Out"
easingStyle: Enum.EasingStyle

GUI'yi endSize 'e kolaylaştırma stilinde.

Varsayılan değer: "Quad"
time: number

tweetin bir kısmını oluşturmak için kaç saniye sürecek.

Varsayılan değer: 1
override: bool

Eğer tween geliştirmeyi geçersiz kılacak mı?

Varsayılan değer: false
callback: function

Çizgi tamamlandığında çalıştırılacak bir dönüşüm işlevi.

Varsayılan değer: "nil"

Dönüşler

Çizgi film oynayacak mı yoksa hayvanlarını oynayacak mı.

Kod Örnekleri

Tween a GuiObject's Size

local guiObject = script.Parent
local function callback(didComplete)
if didComplete then
print("The tween completed successfully")
else
print("The tween was cancelled")
end
end
local willTween = guiObject:TweenSize(
UDim2.new(0.5, 0, 0.5, 0), -- endSize (required)
Enum.EasingDirection.In, -- easingDirection (default Out)
Enum.EasingStyle.Sine, -- easingStyle (default Quad)
2, -- time (default: 1)
true, -- should this tween override ones in-progress? (default: false)
callback -- a function to call when the tween completes (default: nil)
)
if willTween then
print("The GuiObject will tween")
else
print("The GuiObject will not tween")
end

TweenSizeAndPosition

Güvenli bir şekilde, belirli bir GUI'yu yeni bir UDim2 boyutuna ve pozisyonuna belirli süre içinde belirli bir yere taşır veya hareket ettirir.

Bu işlev, eğilme oynatacağını gösterir. Normalde bu her zaman doğru olacaktır, ancak başka bir eğilme aktif ve üstesinden geçersiz olacaktır.

Ayrıca bakınız:

Parametreler

endSize: UDim2

GUI'nin yeniden boyutlandırılması gereken boyutu.

endPosition: UDim2

GUI'nin nereye hareket etmesi gerektiği.

easingDirection: Enum.EasingDirection

GUI'yi endSize ve endPosition yönlerine kolaylaştırmak için yönlendirme.

Varsayılan değer: "Out"
easingStyle: Enum.EasingStyle

GUI'yi endSize ve endPosition 'e kolaylaştırmak için kullanılan tarz.

Varsayılan değer: "Quad"
time: number

tweetin bir kısmını oluşturmak için kaç saniye sürecek.

Varsayılan değer: 1
override: bool

Eğer tween geliştirmeyi geçersiz kılacak mı?

Varsayılan değer: false
callback: function

Çizgi tamamlandığında çalıştırılacak bir dönüşüm işlevi.

Varsayılan değer: "nil"

Dönüşler

Çizgi film oynayacak mı yoksa hayvanlarını oynayacak mı.

Kod Örnekleri

Tween a GUI's Size and Position

local frame = script.Parent.Frame
frame:TweenSizeAndPosition(UDim2.new(0, 0, 0, 0), UDim2.new(0, 0, 0, 0))

Etkinlikler

InputBegan

Bu etkinlik, bir kullanıcının insan-bilgisayar arayüzü cihazı (Mouse button down, touch begin, keyboard button down, vb) ile etkileşime başladığında başlar.

Class.UserInputService ın aynı adımlı etkinliği, belirli bir UI öğesi için sınırlı değildir: UserInputService.InputBegan .

Bu olay her oyun durumuna bağlı olarak her zaman ateşlenir.

Ayrıca bakınız:

Parametreler

Bir InputObject, kullanıcının girişini sorgulamak için yararlı veriler içerir, örneğin type of input, state of input ve 1> Class.InputObjekt.Position|giriş koordinatları1> .


Kod Örnekleri

Tracking the Beginning of Input on a GuiObject

-- In order to use the InputBegan event, you must specify the GuiObject
local gui = script.Parent
-- A sample function providing multiple usage cases for various types of user input
local function inputBegan(input)
if input.UserInputType == Enum.UserInputType.Keyboard then
print("A key is being pushed down! Key:", input.KeyCode)
elseif input.UserInputType == Enum.UserInputType.MouseButton1 then
print("The left mouse button has been pressed down at", input.Position)
elseif input.UserInputType == Enum.UserInputType.MouseButton2 then
print("The right mouse button has been pressed down at", input.Position)
elseif input.UserInputType == Enum.UserInputType.Touch then
print("A touchscreen input has started at", input.Position)
elseif input.UserInputType == Enum.UserInputType.Gamepad1 then
print("A button is being pressed on a gamepad! Button:", input.KeyCode)
end
end
gui.InputBegan:Connect(inputBegan)

InputChanged

Bu etkinlik, bir kullanıcının bir İnsan-Bilgisayar Arayüzü cihazı (Mouse button down, touch begin, keyboard button down, vb) aracılığıyla nasıl etkileşim kurduğunu değiştirdiğinde başlar.

Class.UserInputService'in aynı adımlı etkinliği, belirli bir UI öğesi için sınırlı değildir: UserInputService.InputChanged.

Bu olay her oyun durumuna bağlı olarak her zaman ateşlenir.

Ayrıca bakınız:

Parametreler

Bir InputObject, kullanıcının girişini sorgulamak için yararlı veriler içerir, örneğin type of input, state of input ve 1> Class.InputObjekt.Position|giriş koordinatları1> .


Kod Örnekleri

GuiObject InputChanged Demo

local UserInputService = game:GetService("UserInputService")
local gui = script.Parent
local function printMovement(input)
print("Position:", input.Position)
print("Movement Delta:", input.Delta)
end
local function inputChanged(input)
if input.UserInputType == Enum.UserInputType.MouseMovement then
print("The mouse has been moved!")
printMovement(input)
elseif input.UserInputType == Enum.UserInputType.MouseWheel then
print("The mouse wheel has been scrolled!")
print("Wheel Movement:", input.Position.Z)
elseif input.UserInputType == Enum.UserInputType.Gamepad1 then
if input.KeyCode == Enum.KeyCode.Thumbstick1 then
print("The left thumbstick has been moved!")
printMovement(input)
elseif input.KeyCode == Enum.KeyCode.Thumbstick2 then
print("The right thumbstick has been moved!")
printMovement(input)
elseif input.KeyCode == Enum.KeyCode.ButtonL2 then
print("The pressure being applied to the left trigger has changed!")
print("Pressure:", input.Position.Z)
elseif input.KeyCode == Enum.KeyCode.ButtonR2 then
print("The pressure being applied to the right trigger has changed!")
print("Pressure:", input.Position.Z)
end
elseif input.UserInputType == Enum.UserInputType.Touch then
print("The user's finger is moving on the screen!")
printMovement(input)
elseif input.UserInputType == Enum.UserInputType.Gyro then
local _rotInput, rotCFrame = UserInputService:GetDeviceRotation()
local rotX, rotY, rotZ = rotCFrame:toEulerAnglesXYZ()
local rot = Vector3.new(math.deg(rotX), math.deg(rotY), math.deg(rotZ))
print("The rotation of the user's mobile device has been changed!")
print("Position", rotCFrame.p)
print("Rotation:", rot)
elseif input.UserInputType == Enum.UserInputType.Accelerometer then
print("The acceleration of the user's mobile device has been changed!")
printMovement(input)
end
end
gui.InputChanged:Connect(inputChanged)

InputEnded

InputEnded etkinliği, bir kullanıcının bir İnsan-Bilgisayar Arayüzü cihazı (Farenin aşağı çekilmesi, dokunma başlangıcı, klavye düğmesi vb.) aracılığıyla etkileşimi sona erdiğinde başlar.

Class.UserInputService ın aynı adımlı etkinliği, belirli bir UI öğesi için sınırlı değildir: UserInputService.InputEnded.

Bu olay her oyun durumuna bağlı olarak her zaman ateşlenir.

Ayrıca bakınız:

Parametreler

Bir InputObject, kullanıcının girişini sorgulamak için yararlı veriler içerir, örneğin type of input, state of input ve 1> Class.InputObjekt.Position|giriş koordinatları1> .


Kod Örnekleri

Tracking the End of Input on a GuiObject

-- In order to use the InputChanged event, you must specify a GuiObject
local gui = script.Parent
-- A sample function providing multiple usage cases for various types of user input
local function inputEnded(input)
if input.UserInputType == Enum.UserInputType.Keyboard then
print("A key has been released! Key:", input.KeyCode)
elseif input.UserInputType == Enum.UserInputType.MouseButton1 then
print("The left mouse button has been released at", input.Position)
elseif input.UserInputType == Enum.UserInputType.MouseButton2 then
print("The right mouse button has been released at", input.Position)
elseif input.UserInputType == Enum.UserInputType.Touch then
print("A touchscreen input has been released at", input.Position)
elseif input.UserInputType == Enum.UserInputType.Gamepad1 then
print("A button has been released on a gamepad! Button:", input.KeyCode)
end
end
gui.InputEnded:Connect(inputEnded)

MouseEnter

MouseEnter etkinliği, bir kullanıcının mouse'ını bir GUI elemanına hareket ettirdiğinde başlar.

Lütfen bu etkinliğin x ve y 参与çlarının geçtiği saçma bir yol olarak kullanıcının farenin nerede olduğunu belirlemek için kullanılan bu argümanlara güvenmeyin. Bu koordinatlar, aynı kenar aracılı

Bu olay, GUI elemanının başka bir elemanın altında renderlenmesi durumunda bile başlar.

Bir kullanıcının farenin bir GUI elemanından ayrıldığında izlemek istiyorsanız, GuiObject.MouseLeave etkinliğini kullanabilirsiniz.

Ayrıca bakınız:

Parametreler

Farenin x ekran koordinatı, ekranın sol üst köşesine görekte ölçeksel olarak.

Farenin y ekran koordinatı, ekranın sol üst köşesine göre piksel olarak.


Kod Örnekleri

Printing where a Mouse Enters a GuiObject

local guiObject = script.Parent
guiObject.MouseEnter:Connect(function(x, y)
print("The user's mouse cursor has entered the GuiObject at position", x, ",", y)
end)

MouseLeave

MouseLeave olayı, bir kullanıcının mouse'ını bir GUI elemanından çıkarttığında başlar.

Lütfen bu etkinliğin x ve y 参与çlarının geçtiği saçma bir yol olarak kullanıcının farenin nerede olduğunu belirlemek için kullanılan bu argümanlara güvenmeyin. Bu koordinatlar, aynı kenar üzerinden ayr

Bu olay, GUI elemanının başka bir elemanın altında renderlenmesi durumunda bile başlar.

Ayrıca bakınız:

Parametreler

Farenin x ekran koordinatı, ekranın sol üst köşesine görekte ölçeksel olarak.

Farenin y ekran koordinatı, ekranın sol üst köşesine göre piksel olarak.


MouseMoved

Bir kullanıcının mouse'ını herhangi bir GUI elemanın içinde hareket ettirirken ateş eder. Bu, kullanıcının mouse'ının GUI elemanının üzerinde olup olmadığına bağlı olarak aynıdır.

Not, bu olay, fare'nin konumu güncellendiğinde başlar, bu nedenle hareket edilirken tekrar başlar.

The x ve y</y> arguments indicate the updated screen coordinates of the user's mouse in pixels. These can be useful to determine the fare's location on the GUI, screen, and delta since the fare's previous position if it is being tracked in a global variable.

Aşağıdaki kod, kullanıcının bir GUI öğesiyle ilgili bir Datatype.Vector2 ofsaytını nasıl belirleyeceğini gösteriyor:


local CustomScrollingFrame = script.Parent
local SubFrame = CustomScrollingFrame:FindFirstChild("SubFrame")
local mouse = game.Players.LocalPlayer:GetMouse()
function getPosition(X, Y)
local gui_X = CustomScrollingFrame.AbsolutePosition.X
local gui_Y = CustomScrollingFrame.AbsolutePosition.Y
local pos = Vector2.new(math.abs(X - gui_X), math.abs(Y - gui_Y - 36))
print(pos)
end
CustomScrollingFrame.MouseMoved:Connect(getPosition)

Not: Bu olay, kullanıcının bir GUI öğesi giripya da çıktığında doğru olarak ateşlenmeyebilir. Bu nedenle, x ve y argumentları, kenetlerin kenetlerine doğru olarak eşleşmeyebilir.

Ayrıca bakınız:

Parametreler

Farenin x ekran koordinatı, ekranın sol üst köşesine görekte ölçeksel olarak.

Farenin y ekran koordinatı, ekranın sol üst köşesine göre piksel olarak.


MouseWheelBackward

Kullanıcı, bir GUI elemanının üzerinde bir fare yüzüğüyle ilgili bir etkinliği oynatırken, bir kullanıcının fare yüzüğünü geri çevirme etkinliği başlar. Bu, kullanıcının fare yüzüğünü GUI elemanının üzerinde oynatırken yapmasına izin verir.

Bu olay sadece tekerleğin arka hareketinin bir göstergesi olarak başlar. Bu, x ve y mouse koordinatlarının bu olay sonucu olarak değişmediğini意味着. Bu koordinatlar sadece fare hareketi ile değişir, which can be tracked by the GuiObject.MouseMoved olayı.

Ayrıca bakınız:

Parametreler

Farenin x ekran koordinatı, ekranın sol üst köşesine görekte ölçeksel olarak.

Farenin y ekran koordinatı, ekranın sol üst köşesine göre piksel olarak.


MouseWheelForward

Class.GuiObject|Gui elemanın üzerindeyken kullanıcının fare yuvarlaklarını ileriye çektiğinde, Mouse.WheelForward etkinleştirilir. Bu, kullanıcının fare yuvarlaklarını GUI elemanının üzerindeyken de etkinleştirir.

Bu olay sadece tekerleğin ileri hareketinin bir göstergesi olarak başlar. Bu, x ve y mouse koordinatlarının bu olay sonucu olarak değişmediğini意味着. Bu koordinatlar sadece fare hareketi hakkında değişir, which can be tracked by the GuiObject.MouseMoved olayı.

Ayrıca bakınız:

Parametreler

Farenin x ekran koordinatı, ekranın sol üst köşesine görekte ölçeksel olarak.

Kullanıcının farenin y koordinatı.


SelectionGained

Bu olay, Gamepad seçici GuiObject üzerinde odaklanmaya başladığında başlar.

Oyunpad'dan kontrol etmek istiyorsanız, GUI öğesi üzerinde duran durumları seçmeyi seçin, GuiObject.SelectionLost etkinliğini kullanabilirsiniz.

Bir GUI seçimi odaklanınca, SelectedObject özelliğinin değeri de seçimi odaklayan değere değiştirilir. Seçimi odaklayan GUI'yu belirlemek için bu özelliğin değerini kontrol edin.


Kod Örnekleri

Handling GUI Selection Gained

local guiObject = script.Parent
local function selectionGained()
print("The user has selected this button with a gamepad.")
end
guiObject.SelectionGained:Connect(selectionGained)

SelectionLost

Bu olay, Gamepad seçiciyi GUI üzerinde odaklanmayı bırakınca başlar.

Oyunpad'dan kontrol etmek istiyorsanız, GUI öğesi üzerinde odaklanmaya başlayın, GuiObject.SelectionGained etkinliğini kullanabilirsiniz.

Bir GUI seçimi odaklanırsa, SelectionObject özelliğinin değeri hiçbir zaman seçimi odaklanan GUI'ya veya seçimi kazanan GUI'ya değişir. Seçimi kazanan GUI'yı belirlemek için, veya hiçbir GUI seçilmediyse, bu özelliğin değerini kontrol edin.


Kod Örnekleri

Handling GUI Selection Lost

local guiObject = script.Parent
local function selectionLost()
print("The user no longer has this selected with their gamepad.")
end
guiObject.SelectionLost:Connect(selectionLost)

TouchLongPress

Oyunun TouchLongPress etkinliği, oyunun UI öğesi üzerindeki parmakların ilgili ekran pozisyonlarını açıklayan bir Datatype.

Bu olay sadece bir parmak gerektirir, bu olay Studio'da emülatör ve bir fare kullanarak simüle edilebilir.

Parametreler

touchPositions: Array

Hareketin içindeki parmakların Vector2 pozisyonlarını tanıtan bir matris.

Bir Enum.UserInputState ile hareketin durumunu açıklayan bir Enum.UserInputState :

  • Hareketin başlangıcında yanıyorlar bir kez (kısa gecikmeden sonra)
  • Oyuncu parmaklarını aşağıya basarken ateşleri değiştir
  • Parmaklarını serbest bıraktığında hareketin sonunda yangınları sona erdir.

Kod Örnekleri

Move UI Element with TouchLongPress

local frame = script.Parent
frame.Active = true
local dragging = false
local basePosition
local startTouchPosition
local borderColor3
local backgroundColor3
local function onTouchLongPress(touchPositions, state)
if state == Enum.UserInputState.Begin and not dragging then
-- Start a drag
dragging = true
basePosition = frame.Position
startTouchPosition = touchPositions[1]
-- Color the frame to indicate the drag is happening
borderColor3 = frame.BorderColor3
backgroundColor3 = frame.BackgroundColor3
frame.BorderColor3 = Color3.new(1, 1, 1) -- White
frame.BackgroundColor3 = Color3.new(0, 0, 1) -- Blue
elseif state == Enum.UserInputState.Change then
local touchPosition = touchPositions[1]
local deltaPosition = UDim2.new(
0,
touchPosition.X - startTouchPosition.X,
0,
touchPosition.Y - startTouchPosition.Y
)
frame.Position = basePosition + deltaPosition
elseif state == Enum.UserInputState.End and dragging then
-- Stop the drag
dragging = false
frame.BorderColor3 = borderColor3
frame.BackgroundColor3 = backgroundColor3
end
end
frame.TouchLongPress:Connect(onTouchLongPress)

TouchPan

Oyuncu bir dokunmatik cihaz kullanarak UI'ye parmaklarını hareket ettiğinde etkinleştirilen olay patlar. Bu olay TouchPan ile önce etkinleştirilecek ve GuiObject.TouchSwipe ile de yanlış yapılabilir. Bu etkinliği, oyuncu ekranda UI elemanları

Bu etkinlik, hareketin içindeki parmakların ilgili ekran pozisyonlarını tarif eden bir tabla ile Vector2 ile başlar. Ayrıca, birkaç kez başlar: Enum.UserInputState.Begin kısa bir bekleyişten sonra, num.UserInputState.Change</

Bu olay, emülatör ve bir fare kullanılarak Studio'da simüle edilemez; ateşlemek için gerçek bir dokunmatik cihazınız olmalıdır.

Parametreler

touchPositions: Array

Bir Lua matrisi, Vector2 nesneleri, her biri hareketin içindeki tüm parmakların konumunu gösteren.

totalTranslation: Vector2

Panosun başlangıç noktasından panosunun ne kadar ilerlediğini gösterir.

velocity: Vector2

Hareketin her boyutta ne kadar hızlı yapıldığını gösterir.

Hareketin Enum.UserInputState'sını gösterir.


Kod Örnekleri

Panning UI Element

local innerFrame = script.Parent
local outerFrame = innerFrame.Parent
outerFrame.BackgroundTransparency = 0.75
outerFrame.Active = true
outerFrame.Size = UDim2.new(1, 0, 1, 0)
outerFrame.Position = UDim2.new(0, 0, 0, 0)
outerFrame.AnchorPoint = Vector2.new(0, 0)
outerFrame.ClipsDescendants = true
local dragging = false
local basePosition
local function onTouchPan(_touchPositions, totalTranslation, _velocity, state)
if state == Enum.UserInputState.Begin and not dragging then
dragging = true
basePosition = innerFrame.Position
outerFrame.BackgroundTransparency = 0.25
elseif state == Enum.UserInputState.Change then
innerFrame.Position = basePosition + UDim2.new(0, totalTranslation.X, 0, totalTranslation.Y)
elseif state == Enum.UserInputState.End and dragging then
dragging = false
outerFrame.BackgroundTransparency = 0.75
end
end
outerFrame.TouchPan:Connect(onTouchPan)

TouchPinch

Oyuncu iki parmak kullanarak UI öğesi üzerinde bir çapa veya çekme hareketi yapmak için iki parmaklara sahip olduğunda etkinleştirilen bir etkinlik ile bağlantı kurar. Bir çapa oluşturulduğunda,

Bu olay, bağlantının parmaklarının hareketiyle ilgili kayıtlı ekran pozisyonlarını açıklayan Vector2 tabelosuyla başlar. Ayrıca, birkaç saniye sonra Enu

Bu olay en az iki parmak gerektirir, bu yüzden emülatör ve bir fare kullanarak Studio'da simüle etmek mümkün değildir; gerçek bir dokunma etkinleştirilmiş cihazınız olmalıdır.

Parametreler

touchPositions: Array

Bir Lua matrisi, Vector2 nesneleri, her biri pinch gesti içindeki tüm parmakların konumunu gösteren bir matris.

scale: number

Çizgi hareketinin başlangıcından itibaren farkı gösteren bir yüz.

velocity: number

Çıkma işaretinin ne kadar hızlı olduğunu gösteren bir yüz.

Hareketin Enum.UserInputState'sını gösterir.


Kod Örnekleri

Pinch/Pull Scaling

local innerFrame = script.Parent
local outerFrame = innerFrame.Parent
outerFrame.BackgroundTransparency = 0.75
outerFrame.Active = true
outerFrame.Size = UDim2.new(1, 0, 1, 0)
outerFrame.Position = UDim2.new(0, 0, 0, 0)
outerFrame.AnchorPoint = Vector2.new(0, 0)
outerFrame.ClipsDescendants = true
local dragging = false
local uiScale = Instance.new("UIScale")
uiScale.Parent = innerFrame
local baseScale
local function onTouchPinch(_touchPositions, scale, _velocity, state)
if state == Enum.UserInputState.Begin and not dragging then
dragging = true
baseScale = uiScale.Scale
outerFrame.BackgroundTransparency = 0.25
elseif state == Enum.UserInputState.Change then
uiScale.Scale = baseScale * scale -- Notice the multiplication here
elseif state == Enum.UserInputState.End and dragging then
dragging = false
outerFrame.BackgroundTransparency = 0.75
end
end
outerFrame.TouchPinch:Connect(onTouchPinch)

TouchRotate

Oyuncu iki parmak kullanarak ezme veya çekme hareketi yapmak için UI cihazdokunma yapıldığında etkinliği TouchRotate tetiklenir. Rotasyon, hattın iki parmak arasındaki açısının değişmesiyle oluşur. Bu etkinliği GuiObject.TouchPan

Bu etkinlik, hareketin içindeki parmakların ilgili ekran pozisyonlarını tarif eden bir tabla ile Vector2 ile başlar. Ayrıca, birkaç kez başlar: Enum.UserInputState.Begin kısa bir bekleyişten sonra, num.UserInputState.Change</

Bu olay en az iki parmak gerektirir, Studio'da emülatör ve bir fare kullanılarak simüle edilemez; gerçek bir dokunma etkinleştirilmiş cihazınız olmalıdır.

Parametreler

touchPositions: Array

Bir Lua matrisi, Vector2 nesneleri, her biri hareketin içindeki tüm parmakların konumunu gösteren.

rotation: number

Döndürmeyi başlangıç ​​noktasından itibaren ne kadar ilerlediğini gösteren bir yüz.

velocity: number

Hareketin ne kadar hızlı yapıldığını gösteren bir yüz.

Hareketin Enum.UserInputState'sını gösterir.


Kod Örnekleri

Touch Rotation

local innerFrame = script.Parent
local outerFrame = innerFrame.Parent
outerFrame.BackgroundTransparency = 0.75
outerFrame.Active = true
outerFrame.Size = UDim2.new(1, 0, 1, 0)
outerFrame.Position = UDim2.new(0, 0, 0, 0)
outerFrame.AnchorPoint = Vector2.new(0, 0)
outerFrame.ClipsDescendants = true
local dragging = false
local baseRotation = innerFrame.Rotation
local function onTouchRotate(_touchPositions, rotation, _velocity, state)
if state == Enum.UserInputState.Begin and not dragging then
dragging = true
baseRotation = innerFrame.Rotation
outerFrame.BackgroundTransparency = 0.25
elseif state == Enum.UserInputState.Change then
innerFrame.Rotation = baseRotation + rotation
elseif state == Enum.UserInputState.End and dragging then
dragging = false
outerFrame.BackgroundTransparency = 0.75
end
end
outerFrame.TouchRotate:Connect(onTouchRotate)

TouchSwipe

Dokunmatik etkinliği, oyuncu bir dokunmatik cihaz kullanarak UI elementinde bir swipe hareketi yaptığında başlar. Bu, hareketin yönü (Yukarı, Aşağı, Sol veya Sağ) ve hareketin etkili sayısı (Dokunmatik nokta sayısı) ile ilgili yönlendirme olarak yapılır. Dokunmatik etkinlikleri genellikle mobil UIs'lerdeki kartları değiştirmek için k

Bu olay sadece bir parmak gerektirir, Studio'da emülatör ve bir fare kullanılarak simüle edilebilir.

Parametreler

swipeDirection: Enum.SwipeDirection

Bir Enum.SwipeDirection ile, hareketin yönünü gösterir (Yukarı, Aşağı, Sol veya Sağ).

numberOfTouches: number

Hareketin içinde bulunan dokunma noktalarının sayısı (genellikle 1).


Kod Örnekleri

Bouncing Color Picker

local frame = script.Parent
frame.Active = true
-- How far the frame should bounce on a successful swipe
local BOUNCE_DISTANCE = 50
-- Current state of the frame
local basePosition = frame.Position
local hue = 0
local saturation = 128
local function updateColor()
frame.BackgroundColor3 = Color3.fromHSV(hue / 256, saturation / 256, 1)
end
local function onTouchSwipe(swipeDir, _touchCount)
-- Change the BackgroundColor3 based on the swipe direction
local deltaPos
if swipeDir == Enum.SwipeDirection.Right then
deltaPos = UDim2.new(0, BOUNCE_DISTANCE, 0, 0)
hue = (hue + 16) % 255
elseif swipeDir == Enum.SwipeDirection.Left then
deltaPos = UDim2.new(0, -BOUNCE_DISTANCE, 0, 0)
hue = (hue - 16) % 255
elseif swipeDir == Enum.SwipeDirection.Up then
deltaPos = UDim2.new(0, 0, 0, -BOUNCE_DISTANCE)
saturation = (saturation + 16) % 255
elseif swipeDir == Enum.SwipeDirection.Down then
deltaPos = UDim2.new(0, 0, 0, BOUNCE_DISTANCE)
saturation = (saturation - 16) % 255
else
deltaPos = UDim2.new()
end
-- Update the color and bounce the frame a little
updateColor()
frame.Position = basePosition + deltaPos
frame:TweenPosition(basePosition, Enum.EasingDirection.Out, Enum.EasingStyle.Bounce, 0.7, true)
end
frame.TouchSwipe:Connect(onTouchSwipe)
updateColor()

TouchTap

Dokunmatik etkinliği, kullanıcının dokunmatik hareketi yapmasının UI elemanında kullanılan bir dokunmatik hareketi yaparak gerçekleşmesi durumunda başlar. Bir dokunmatik hareketi, hareketin il

Bu olay sadece bir parmak gerektirir, Studio'da emülatör ve bir fare kullanılarak simüle edilebilir.

Parametreler

touchPositions: Array

Hareketin içindeki parmakların Vector2 pozisyonlarını tanıtan bir matris.


Kod Örnekleri

Tap Transparency Toggle

local frame = script.Parent
frame.Active = true
local function onTouchTap()
-- Toggle background transparency
if frame.BackgroundTransparency > 0 then
frame.BackgroundTransparency = 0
else
frame.BackgroundTransparency = 0.75
end
end
frame.TouchTap:Connect(onTouchTap)