Animasyonda, tweenleme iki anahtar nokta arasındaki ara kareleri oluşturma sürecidir. Bir kullanıcı arayüzü tasarlarken, tweenleme kullanarak bir GuiObject'ı bir durumdan diğerine sorunsuz bir şekilde geçirebilirsiniz; örneğin:
- Bir kullanıcı butona tıkladığında butonun boyutunu sorunsuz bir şekilde artırmak.
- UI menülerini ekran kenarlarından içeri ve dışarı kaydırmak.
- Bir kullanıcı sağlık artırdığında sağlık çubuğunu iki genişlik arasında yavaşça animasyon yapmak.
Tek özellik tweens
Konum
Bir GuiObject'ın konumunu tweenleme için:
- Nesne için AnchorPoint'ı ayarlayın.
- TweenInfo ve hedef konumu TweenService:Create()'e geçirin.
- Tween'i Tween:Play() ile oynatın.
Aşağıdaki kod örneği, bir ImageLabel'ı bir ScreenGui içinde ekranın tam ortasına taşır:
UI Tween - Konumlocal TweenService = game:GetService("TweenService")local Players = game:GetService("Players")local PlayerGui = Players.LocalPlayer:WaitForChild("PlayerGui")local ScreenGui = PlayerGui:WaitForChild("ScreenGui")local object = ScreenGui:WaitForChild("ImageLabel")object.AnchorPoint = Vector2.new(0.5, 0.5)local targetPosition = UDim2.new(0.5, 0, 0.5, 0)local tweenInfo = TweenInfo.new(2)local tween = TweenService:Create(object, tweenInfo, {Position = targetPosition})tween:Play()
Boyut
Bir GuiObject'ın boyutunu tweenleme için:
- Tweenleme sırasında tasarlanan en boy oranını korumak için nesneye bir UIAspectRatioConstraint ekleyin.
- TweenInfo ve hedef boyutu TweenService:Create()'e geçirin.
- Tween'i Tween:Play() ile oynatın.
Aşağıdaki kod örneği, bir ImageLabel'ı bir ScreenGui içinde ekran genişliğinin veya yüksekliğinin %40'ına (hangisi daha küçükse) nesnenin merkezden üçgenlendirilerek ölçeklendirir:
UI Tween - Boyutlocal TweenService = game:GetService("TweenService")local Players = game:GetService("Players")local PlayerGui = Players.LocalPlayer:WaitForChild("PlayerGui")local ScreenGui = PlayerGui:WaitForChild("ScreenGui")local object = ScreenGui:WaitForChild("ImageLabel")object.AnchorPoint = Vector2.new(0.5, 0.5)local aspectRatioConstraint = Instance.new("UIAspectRatioConstraint")aspectRatioConstraint.Parent = objectlocal targetSize = UDim2.new(0.4, 0, 0.4, 0)local tweenInfo = TweenInfo.new(2)local tween = TweenService:Create(object, tweenInfo, {Size = targetSize})tween:Play()
Dönme
Bir GuiObject'ın dönmesini tweenleme için:
- Nesnenin döneceği için AnchorPoint'ı ayarlayın.
- Nesne için hedef Rotation değerini belirleyin.
- TweenInfo ve hedef rotasyonu TweenService:Create()'e geçirin.
- Tween'i Tween:Play() ile oynatın.
UI Tween - Boyutlocal TweenService = game:GetService("TweenService")local Players = game:GetService("Players")local PlayerGui = Players.LocalPlayer:WaitForChild("PlayerGui")local ScreenGui = PlayerGui:WaitForChild("ScreenGui")local object = ScreenGui:WaitForChild("ImageLabel")object.AnchorPoint = Vector2.new(0.5, 0.5)local targetRotation = 45local tweenInfo = TweenInfo.new(2)local tween = TweenService:Create(object, tweenInfo, {Rotation = targetRotation})tween:Play()
Şeffaflık
UI şeffaflığını kontrol eden birden fazla özellik vardır; bu özellikler, nesne türüne bağlı olarak değişir. Bu özelliklerin her birini ayrı ayrı veya çoklu özellik tweens ile birleştirerek tweenleyebilirsiniz. Alternatif olarak, bir nesnenin genel şeffaflığını CanvasGroup içine yerleştirerek ve grubun GroupTransparency değerini tweenleyerek ayarlayabilirsiniz.
UI Tween - Resim Şeffaflığılocal TweenService = game:GetService("TweenService")local Players = game:GetService("Players")local PlayerGui = Players.LocalPlayer:WaitForChild("PlayerGui")local ScreenGui = PlayerGui:WaitForChild("ScreenGui")local object = ScreenGui:WaitForChild("ImageLabel")local targetTransparency = 0.8local tweenInfo = TweenInfo.new(2)local tween = TweenService:Create(object, tweenInfo, {ImageTransparency = targetTransparency})tween:Play()
UI Tween - Canvas Grubu Şeffaflığılocal TweenService = game:GetService("TweenService")local Players = game:GetService("Players")local PlayerGui = Players.LocalPlayer:WaitForChild("PlayerGui")local ScreenGui = PlayerGui:WaitForChild("ScreenGui")local canvasGroup = ScreenGui:WaitForChild("CanvasGroup")local targetTransparency = 0.8local tweenInfo = TweenInfo.new(2)local tween = TweenService:Create(canvasGroup, tweenInfo, {GroupTransparency = targetTransparency})tween:Play()
Renk
Birden fazla özellik, UI rengini kontrol eder; bu özellikler, nesne türüne bağlı olarak değişir. Bu özelliklerin her birini ayrı ayrı veya çoklu özellik tweens ile birleştirerek tweenleyebilirsiniz. Alternatif olarak, bir nesnenin genel rengini CanvasGroup içine yerleştirerek ve grubun GroupColor3 değerini tweenleyerek ayarlayabilirsiniz.
UI Tween - Resim Rengilocal TweenService = game:GetService("TweenService")local Players = game:GetService("Players")local PlayerGui = Players.LocalPlayer:WaitForChild("PlayerGui")local ScreenGui = PlayerGui:WaitForChild("ScreenGui")local object = ScreenGui:WaitForChild("ImageLabel")local targetColor = Color3.fromRGB(255, 0, 0)local tweenInfo = TweenInfo.new(2)local tween = TweenService:Create(object, tweenInfo, {ImageColor3 = targetColor})tween:Play()
UI Tween - Canvas Grubu Rengilocal TweenService = game:GetService("TweenService")local Players = game:GetService("Players")local PlayerGui = Players.LocalPlayer:WaitForChild("PlayerGui")local ScreenGui = PlayerGui:WaitForChild("ScreenGui")local canvasGroup = ScreenGui:WaitForChild("CanvasGroup")local targetColor = Color3.fromRGB(255, 0, 0)local tweenInfo = TweenInfo.new(2)local tween = TweenService:Create(canvasGroup, tweenInfo, {GroupColor3 = targetColor})tween:Play()
Stroke
Birden fazla özellik, UI kenarlıklarını kontrol eder; bu özellikler, nesne türüne bağlı olarak değişir.
Alternatif olarak, bir UIStroke çocuğu uygulayabilir ve kalınlığını, rengini ve/veya şeffaflığını tweenleyebilirsiniz.
| UI Nesnesi | Özellikler |
|---|---|
| UIStroke | Color, Thickness, Transparency |
UI Tween - UIStroke Rengi & Kalınlığılocal TweenService = game:GetService("TweenService")local Players = game:GetService("Players")local PlayerGui = Players.LocalPlayer:WaitForChild("PlayerGui")local ScreenGui = PlayerGui:WaitForChild("ScreenGui")local object = ScreenGui:WaitForChild("TextLabel")local stroke = Instance.new("UIStroke")stroke.Color = Color3.fromRGB(255, 255, 255)stroke.Thickness = 5stroke.Parent = objectlocal targetColor = Color3.fromRGB(255, 0, 0)local targetThickness = 10local tweenInfo = TweenInfo.new(2)local tween = TweenService:Create(stroke, tweenInfo, {Color = targetColor, Thickness = targetThickness})tween:Play()
Çoklu özellik tweens
Herhangi bir tek özellik tween'i birden fazla hedef özelliği TweenService:Create()'e geçerek daha karmaşık tweenlere birleştirebilirsiniz; örneğin konum + dönme veya boyut + şeffaflık.
UI Tween - Konum & Dönmelocal TweenService = game:GetService("TweenService")local Players = game:GetService("Players")local PlayerGui = Players.LocalPlayer:WaitForChild("PlayerGui")local ScreenGui = PlayerGui:WaitForChild("ScreenGui")local object = ScreenGui:WaitForChild("ImageLabel")object.AnchorPoint = Vector2.new(0.5, 0.5)local targetPosition = UDim2.new(0.5, 0, 0.5, 0)local targetRotation = 45local tweenInfo = TweenInfo.new(2)local tween = TweenService:Create(object, tweenInfo, {Position = targetPosition, Rotation = targetRotation})tween:Play()
UI Tween - Boyut & Şeffaflıklocal TweenService = game:GetService("TweenService")local Players = game:GetService("Players")local PlayerGui = Players.LocalPlayer:WaitForChild("PlayerGui")local ScreenGui = PlayerGui:WaitForChild("ScreenGui")local object = ScreenGui:WaitForChild("ImageLabel")object.AnchorPoint = Vector2.new(0.5, 0.5)local aspectRatioConstraint = Instance.new("UIAspectRatioConstraint")aspectRatioConstraint.Parent = objectlocal targetSize = UDim2.new(0.4, 0, 0.4, 0)local targetTransparency = 0.8local tweenInfo = TweenInfo.new(2)local tween = TweenService:Create(object, tweenInfo, {Size = targetSize, ImageTransparency = targetTransparency})tween:Play()
Tween dizileri
UI animasyonlarını biri diğerinin ardından gelebilecek şekilde birleştirmek için önceki tween'in Completed olayında sonraki tween'leri oynatabilirsiniz. Örneğin, aşağıdaki script bir nesneyi ekranın merkezine taşır ve ardından 45° döndürür.
UI Tween Dizisi
local TweenService = game:GetService("TweenService")
local Players = game:GetService("Players")
local PlayerGui = Players.LocalPlayer:WaitForChild("PlayerGui")
local ScreenGui = PlayerGui:WaitForChild("ScreenGui")
local object = ScreenGui:WaitForChild("ImageLabel")
object.AnchorPoint = Vector2.new(0.5, 0.5)
local targetPosition = UDim2.new(0.5, 0, 0.5, 0)
local targetRotation = 45
local tweenInfo = TweenInfo.new(2)
local positionTween = TweenService:Create(object, tweenInfo, {Position = targetPosition})
local rotationTween = TweenService:Create(object, tweenInfo, {Rotation = targetRotation})
-- İlk olarak konum tween'ini oynat
positionTween:Play()
-- Konum tween'i tamamlandığında döndürme tween'ini oynat
positionTween.Completed:Connect(function()
rotationTween:Play()
end)
Stil geçişleri
UI nesneleri ayrıca, StyleRule tanımları aracılığıyla tweenlenerek animasyonlu hale getirilebilir; bu, bir veya birden fazla UI özelliğinin tweenlenmesiyle CSS geçişlerine benzer. Detaylar için Stil Editörü kılavuzuna bakın.

Easing seçenekleri
TweenInfo'nun easing seçeneklerini kullanarak UI animasyonlarının easing stili ve yönünü kontrol edebilirsiniz.
Stil
Enum.EasingStyle, başlangıçtan sona kadar enterpolasyon oranını belirler. Varsayılan olarak, easing stili Enum.EasingStyle.Quad olarak ayarlanmıştır.
| Stil | Açıklama |
|---|---|
| Doğrusal | Sabit bir hızda hareket eder. |
| Sine | Hafif bir easing hareketi için hız, bir sine dalgası ile belirlenir. |
| Quad | Sine'ye benzer ama ikincil olarak daha dik bir eğri ile kare enterpolasyonu temelindedir. |
| Cubic | Quad'ya benzer ama daha dik bir eğri ile kübik enterpolasyonu temelindedir. |
| Quart | Cubic'e benzer ama daha da dik bir eğri ile dördüncü dereceden enterpolasyonu temelindedir. |
| Quint | Quart'ya benzer ama daha da dik bir eğri ile beşinci dereceden enterpolasyonu temelindedir. |
| Üssel | En dik eğri, üssel enterpolasyona dayanır. |
| Dairesel | Dairesel bir yay takip eder, böylece hızlanma daha ani ve yavaşlama Quint veya Üssel'e göre daha yavaş olur. |
| Geri | Hedefi hafifçe aşar, ardından yerine geri gelir. |
| Sıçrama | Hedefe ulaştıktan sonra geriye doğru birden fazla kez sıçrar, sonunda durur. |
| Elastik | Bir lastik ip gibi hareket eder, hedefi birkaç kez aşar. |

Easing Stili - Kübiklocal tweenInfo = TweenInfo.new(2, Enum.EasingStyle.Cubic)local tween = TweenService:Create(object, tweenInfo, {Rotation = 45})
Yön
Enum.EasingDirection, easing stilinin enterpolasyonunun bir nesneye nasıl uygulandığını tanımlar; varsayılan olarak Dışarı'dır. Unutmayın ki Doğrusal easing stiline sahip bir tween etkilenmez, çünkü doğrusal enterpolasyon başlangıçtan sona sabittir.
| Yön | Açıklama |
|---|---|
| İçeri | Easing stili ileri yönde uygulanır. |
| Dışarı | Easing stili ters yönde uygulanır. |
| İç-Dış | İlk yarıda ileri, ikinci yarıda ters yönde uygulanır. |
Easing yönü - İç-Dışlocal tweenInfo = TweenInfo.new(2, Enum.EasingStyle.Cubic, Enum.EasingDirection.InOut)local tween = TweenService:Create(object, tweenInfo, {Rotation = 45})
Yazı tipi etkisi
Metin tabanlı UI'yı, kesit banner'ları, oyuncu talimatları ve istemleri gibi animasyonlu efektlerle kolayca geliştirebilirsiniz. "Yazı tipi" etkisi, bir hikaye anlatan veya NPC konuşmalarını ortaya koyan TextLabel için idealdir.
ReplicatedStorage içinde yeni bir ModuleScript oluşturun.
Yeni script'i AnimateUI olarak yeniden adlandırın.

Script'ye aşağıdaki kodu yapıştırın:
ModuleScript - AnimateUIlocal LocalizationService = game:GetService("LocalizationService")local Players = game:GetService("Players")local SOURCE_LOCALE = "en"local translator = nillocal AnimateUI = {}function AnimateUI.loadTranslator()pcall(function()translator = LocalizationService:GetTranslatorForPlayerAsync(Players.LocalPlayer)end)if not translator thenpcall(function()translator = LocalizationService:GetTranslatorForLocaleAsync(SOURCE_LOCALE)end)endendfunction AnimateUI.typeWrite(guiObject, text, delayBetweenChars)guiObject.Visible = trueguiObject.AutoLocalize = falselocal displayText = text-- Mümkünse metni çevirif translator thendisplayText = translator:Translate(guiObject, text)end-- Grafik döngüsünün bu karakterleri atlamasını önlemek için satır sonu etiketlerini değiştirdisplayText = displayText:gsub("<br%s*/>", "\n")-- Karakter karakter animasyonunun etiketleri bozmasını önlemek için RichText etiketlerini kaldırdisplayText = displayText:gsub("<[^<>]->", "")-- Çevirilmiş/değiştirilmiş metni ebeveyne ayarlaguiObject.Text = displayTextlocal index = 0for first, last in utf8.graphemes(displayText) doindex += 1guiObject.MaxVisibleGraphemes = indextask.wait(delayBetweenChars)endendreturn AnimateUIEtiketin doğrudan çocuğu olarak yeni bir LocalScript ekleyin ve aşağıdaki kodu yapıştırın. Her mesajın, ebeveyn nesne, çıktı olarak verilecek dizi ve karakterler arasındaki gecikme için AnimateUI.typeWrite()'i çağırarak oluşturulduğuna dikkat edin.
LocalScriptlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local AnimateUI = require(ReplicatedStorage:WaitForChild("AnimateUI"))local label = script.Parent-- Eğer deneyim yerelleştirilmişse çevirmeni yükle--AnimateUI.loadTranslator()local message1 = [[Bu kapının arkasında<br /><font size="46" color="rgb(255,50,25)">Büyük Zorgoth...</font> <font size="40">🗡</font>]]AnimateUI.typeWrite(label, message1, 0.05)task.wait(1)local message2 = [[...bu zindanı <font color="rgb(255,200,50)">karşısında kimse olmadan</font> <font size="30">😈</font> yönetiyor!]]AnimateUI.typeWrite(label, message2, 0.05)