Roblox menampilkan layar pemuatan default ketika pengguna terhubung ke sebuah permainan, tetapi Anda dapat mempersonalisasi permainan Anda dengan layar pemuatan kustom yang berisi konten statis atau animasi.
Implementasi
Untuk menampilkan layar pemuatan kustom, Anda dapat merancang instance ScreenGui secara langsung di dalam LocalScript, atau Anda dapat merujuk ke objek ScreenGui dalam hierarki tempat Anda. Kedua opsi menggunakan ReplicatedFirst, karena layanan ini mereplikasi instance ke klien sebelum apa pun direplikasi. Ini memastikan bahwa layar pemuatan Anda adalah hal pertama yang dilihat pengguna saat mereka memasuki permainan Anda.
Dari skrip
Untuk merancang dan menampilkan layar pemuatan kustom sepenuhnya dari LocalScript:
- Di ReplicatedFirst, buat sebuah LocalScript.
- Tempelkan kode contoh berikut untuk membuat dan menyesuaikan objek ScreenGui. Anda dapat memodifikasi kode berikut dengan nilai Anda sendiri untuk membuat desain Anda.
Layar Pemuatan yang Dibuat Skriplocal Players = game:GetService("Players")local ReplicatedFirst = game:GetService("ReplicatedFirst")local player = Players.LocalPlayerlocal playerGui = player:WaitForChild("PlayerGui")local loadingScreen = Instance.new("ScreenGui")loadingScreen.IgnoreGuiInset = trueloadingScreen.Parent = playerGui-- Ganti nilai ScreenGui dengan milik Anda sendirilocal textLabel = Instance.new("TextLabel")textLabel.Size = UDim2.new(1, 0, 1, 0)textLabel.BackgroundColor3 = Color3.fromRGB(0, 20, 40)textLabel.Font = Enum.Font.DenkOnetextLabel.TextColor3 = Color3.new(0.8, 0.8, 0.8)textLabel.Text = "Memuat"textLabel.TextSize = 32textLabel.Parent = loadingScreen-- Hapus layar pemuatan defaultReplicatedFirst:RemoveDefaultLoadingScreen()task.wait(5) -- Paksa layar pemuatan kustom muncul selama minimal waktuif not game:IsLoaded() thengame.Loaded:Wait()endloadingScreen:Destroy()
Dari GUI yang ada
Alih-alih membuat layar pemuatan ScreenGui sepenuhnya melalui LocalScript, Anda juga dapat merujuk ke ScreenGui yang ada dalam hierarki tempat Anda. Pastikan bahwa permainan Anda menyertakan ScreenGui yang dirujuk dalam ReplicatedFirst dan bahwa ScreenGui tersebut mencakup elemen UI seperti TextLabels dan ImageLabels.
Untuk mendemonstrasikan proses ini, LocalScript berikut merujuk ke ScreenGui bernama LoadingScreen dalam ReplicatedFirst, kemudian menghapus layar pemuatan default sehingga satu-satunya layar pemuatan yang dapat dilihat pemain adalah layar pemuatan kustom Anda.
Referensi Layar Pemuatan yang Adalocal Players = game:GetService("Players")local ReplicatedFirst = game:GetService("ReplicatedFirst")local player = Players.LocalPlayerlocal playerGui = player:WaitForChild("PlayerGui")local loadingScreen = ReplicatedFirst:FindFirstChild("LoadingScreen")if loadingScreen thenloadingScreen.IgnoreGuiInset = trueloadingScreen.Parent = playerGui-- Hapus layar pemuatan defaultReplicatedFirst:RemoveDefaultLoadingScreen()task.wait(5) -- Paksa layar muncul selama minimal beberapa detikif not game:IsLoaded() thengame.Loaded:Wait()endloadingScreen:Destroy()end
Tambahkan animasi
Selain layar pemuatan kustom statis, Anda dapat menambahkan animasi untuk meningkatkan layar pemuatan dan menunjukkan kemajuan pemuatan. Cara termudah untuk melakukannya adalah dengan membuat elemen UI, seperti TextLabel atau ImageLabel, kemudian menganimasinya menggunakan TweenService. Misalnya, kode contoh berikut membuat ScreenGui baru dengan anak ImageLabel, menghapus layar pemuatan default, kemudian TweenService memudar dan memutar elemen pusat hingga permainan dimuat.
Layar Pemuatan yang Dibuat Skrip (Animasi)local Players = game:GetService("Players")local ReplicatedFirst = game:GetService("ReplicatedFirst")local TweenService = game:GetService("TweenService")local player = Players.LocalPlayerlocal playerGui = player:WaitForChild("PlayerGui")local loadingScreen = Instance.new("ScreenGui")loadingScreen.IgnoreGuiInset = trueloadingScreen.Parent = playerGuilocal textLabel = Instance.new("TextLabel")textLabel.Size = UDim2.new(1, 0, 1, 0)textLabel.BackgroundColor3 = Color3.fromRGB(0, 20, 40)textLabel.Font = Enum.Font.DenkOnetextLabel.TextColor3 = Color3.new(0.8, 0.8, 0.8)textLabel.Text = "Memuat"textLabel.TextSize = 32textLabel.TextTransparency = 1textLabel.Parent = loadingScreenlocal loadingRing = Instance.new("ImageLabel")loadingRing.Size = UDim2.new(0, 256, 0, 256)loadingRing.BackgroundTransparency = 1loadingRing.Image = "rbxassetid://4965945816"loadingRing.AnchorPoint = Vector2.new(0.5, 0.5)loadingRing.Position = UDim2.new(0.5, 0, 0.5, 0)loadingRing.ImageTransparency = 1loadingRing.Parent = loadingScreen-- Hapus layar pemuatan defaultReplicatedFirst:RemoveDefaultLoadingScreen()-- Inisiasi dan mulai tween fade-inlocal fadeTweenInfo = TweenInfo.new(1, Enum.EasingStyle.Quad, Enum.EasingDirection.Out, 0, false, 2)local fadeTween1 = TweenService:Create(textLabel, fadeTweenInfo, {TextTransparency = 0})local fadeTween2 = TweenService:Create(loadingRing, fadeTweenInfo, {ImageTransparency = 0})fadeTween1:Play()fadeTween2:Play()-- Inisiasi dan mulai tween rotasilocal tweenInfo = TweenInfo.new(4, Enum.EasingStyle.Linear, Enum.EasingDirection.In, -1)local tween = TweenService:Create(loadingRing, tweenInfo, {Rotation = 360})tween:Play()task.wait(5) -- Paksa layar muncul selama minimal beberapa detikif not game:IsLoaded() thengame.Loaded:Wait()endloadingScreen:Destroy()