Mengambil foto adalah cara yang sempurna untuk mengabadikan pengalaman yang luar biasa. Modul PhotoBooth pengembang modul adalah alat penataan foto yang mudah digunakan yang memungkinkan pemain untuk berpose unik dengan latar belakang yang mewakili pengalaman mereka.
Penggunaan modul
Instalasi
Untuk menggunakan modul PhotoBooth dalam sebuah pengalaman:
Dari menu Window Studio atau toolbar tab Home, buka Toolbox dan pilih tab Creator Store.

Pastikan pengurutan Models dipilih, kemudian klik tombol See All untuk Categories.

Temukan dan klik ubin Packages.
Temukan modul Photo Booth dan klik, atau seret dan jatuhkan ke dalam tampilan 3D.

Di jendela Explorer, pindahkan seluruh model PhotoBooth ke dalam ReplicatedStorage. Setelah menjalankan pengalaman, modul akan mulai berjalan.
Posisi booth
Modul ini dilengkapi dengan satu model PhotoBooth yang dapat Anda posisikan di dunia 3D. Model ini adalah yang akan berinteraksi dengan pemain untuk menyiapkan foto.
Temukan mesh PhotoBooth di dalam folder Workspace dari folder utama modul.

Pindahkan ke hirarki Workspace tingkat atas dan posisikan di tempat yang diinginkan.

Konfigurasi
Modul ini telah dikonfigurasi sebelumnya untuk bekerja di sebagian besar kasus penggunaan, tetapi dapat dengan mudah disesuaikan melalui fungsi configure. Misalnya, untuk mengubah pesan default di bagian bawah foto:
Di StarterPlayerScripts, buat LocalScript baru dan ganti namanya menjadi ConfigurePhotoBooth.

Tempelkan kode berikut ke dalam skrip baru.
LocalScript - ConfigurePhotoBoothlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local PhotoBooth = require(ReplicatedStorage.PhotoBooth)PhotoBooth.configure({frameMessage = "Penangkapan Photo Booth Pertama!",})
Koneksi ke acara
Setiap kali booth foto menampilkan layar baru kepada klien lokal, acara yang sesuai akan dipicu. Acara ini dapat dihubungkan dalam LocalScript sehingga Anda dapat merespons dengan logika kustom Anda sendiri.
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
PhotoBooth.countdownStarted:Connect(function()
print("Hitungan mundur telah dimulai")
end)
PhotoBooth.printoutShown:Connect(function()
print("Cetakan sedang ditampilkan")
end)
PhotoBooth.promptShown:Connect(function()
print("Tanya kamera sedang ditampilkan")
end)
Visibilitas GUI
Secara default, booth foto menyembunyikan semua ScreenGuis dan CoreGuis ketika foto sedang disiapkan. Jika Anda ingin menimpa perilaku auto-hiding ini dan memutuskan secara programatik GUI mana yang harus tetap terlihat, sertakan callback hideOtherGuis dan showOtherGuis dan respons dengan logika kustom Anda sendiri.
LocalScript
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local StarterGui = game:GetService("StarterGui")
local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
local hiddenInstances = {}
-- Buat GUI layar yang tidak akan disembunyikan
local specialGuiInstance = Instance.new("ScreenGui")
-- Gambarkan GUI layar di atas GUI booth foto
specialGuiInstance.DisplayOrder = 1
specialGuiInstance.Parent = playerGui
-- Atur atribut pada GUI layar untuk mencegah penyembunyian
specialGuiInstance:SetAttribute("ShowInPhotoBooth", true)
-- Tambahkan label teks ke dalam GUI
local specialLabel = Instance.new("TextLabel")
specialLabel.Size = UDim2.fromScale(1, 0.1)
specialLabel.Text = "Tetap terlihat saat mengambil foto"
specialLabel.Font = Enum.Font.GothamMedium
specialLabel.TextSize = 24
specialLabel.Parent = specialGuiInstance
PhotoBooth.hideOtherGuis(function()
-- Sembunyikan semua GUI layar yang didefinisikan pengembang kecuali yang diberi tanda atribut
local instances = playerGui:GetChildren()
for _, instance in instances do
if instance:IsA("ScreenGui") and not instance:GetAttribute("ShowInPhotoBooth") and instance.Enabled then
instance.Enabled = false
table.insert(hiddenInstances, instance)
end
end
-- Sembunyikan GUI inti tertentu
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)
end)
PhotoBooth.showOtherGuis(function()
-- Tampilkan semua GUI layar yang didefinisikan pengembang yang disembunyikan
for _, instance in hiddenInstances do
instance.Enabled = true
end
hiddenInstances = {}
-- Tampilkan GUI inti tertentu yang disembunyikan
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, true)
end)
Referensi API
Fungsi
configure
configure(config: table)
Menimpa opsi konfigurasi default melalui kunci/nilai berikut di tabel config. Fungsi ini hanya dapat dipanggil dari LocalScript.
| Kunci | Deskripsi | Default |
|---|---|---|
| frameMessage | Pesan yang ditampilkan di bagian bawah foto. Durasi dapat dikendalikan melalui properti fadeUiDelay. | "Gunakan perangkat Anda untuk mengambil tangkapan layar dan berbagi!" |
| fadeUiDelay | Waktu untuk menampilkan pesan bingkai sebelum memudar, dalam detik. Atur ke angka negatif untuk tidak memudar. | 3 |
| closeButtonImage | Gambar yang digunakan untuk tombol tutup foto, ditempatkan di atas gambar closeButtonBackgroundImage. | "rbxassetid://7027440823" |
| closeButtonBackgroundImage | Gambar latar belakang yang digunakan untuk tombol tutup foto. | "rbxassetid://7027440891" |
| cameraLandscapePosition | Jarak kamera booth foto dari karakter, di depan dan ke atas, saat mengambil foto dalam mode lanskap (Vector2). | (5, 2) |
| cameraPortraitPosition | Jarak kamera booth foto dari karakter, di depan dan ke atas, saat mengambil foto dalam mode potret (Vector2). | (10, 1) |
| countdownFont | Font yang digunakan untuk angka dalam hitungan mundur (Enum.Font). | GothamBlack |
| countdownTextColor | Warna angka dalam hitungan mundur (Color3). | [255, 255, 255] |
| printoutCharacterPosition | Posisi karakter di layar saat cetakan ditampilkan (UDim2). | (0.5, 0, 0.5, 0) |
| printoutCharacterSize | Jumlah ruang layar yang ditempati karakter dalam cetakan (UDim2). | (1, 0, 1, 0) |
| characterAnimation | ID aset dari animasi yang diambil karakter dalam foto, dijeda di bingkai awalnya. | "rbxassetid://6899663224" |
| filterImage | Gambar yang diterapkan di atas foto sebagai filter. Jika nil, filter default yang menggelapkan tepi gambar akan digunakan. | nil |
LocalScript - ConfigurePhotoBoothlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local PhotoBooth = require(ReplicatedStorage.PhotoBooth)PhotoBooth.configure({frameMessage = "Pose yang sangat keren!",fadeUiDelay = 5,maxActivationDistance = 5,printoutCharacterSize = UDim2.fromScale(1.5, 1.5),})
setBackgrounds
setBackgrounds(backgrounds: table)
Menimpa latar belakang default yang disediakan oleh booth foto. Gambar latar belakang harus memiliki rasio aspek 16:9 (1024×576) untuk pengalaman yang optimal dan ID aset mereka harus disertakan dalam array latar belakang. 1–4 (inklusif) latar belakang dapat disediakan.
LocalScriptlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local PhotoBooth = require(ReplicatedStorage.PhotoBooth)PhotoBooth.setBackgrounds({"rbxassetid://7018713114","rbxassetid://950538356",})
Acara
countdownStarted
Dipicu ketika hitungan mundur dimulai. Acara ini hanya dapat dihubungkan dalam LocalScript.
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
PhotoBooth.countdownStarted:Connect(function()
print("Hitungan mundur telah dimulai")
end)
printoutShown
Dipicu ketika cetakan ditampilkan kepada pengguna. Acara ini hanya dapat dihubungkan dalam LocalScript.
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
PhotoBooth.printoutShown:Connect(function()
print("Cetakan sedang ditampilkan")
end)
promptShown
Dipicu ketika cetakan ditutup dan tombol kamera ditampilkan kembali. Acara ini hanya dapat dihubungkan dalam LocalScript.
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
PhotoBooth.promptShown:Connect(function()
print("Tanya kamera sedang ditampilkan")
end)
Callback
hideOtherGuis
hideOtherGuis(callback: function)
Callback ini dijalankan segera sebelum cetakan ditampilkan, memungkinkan Anda untuk menonaktifkan seluruh ScreenGuis atau elemen di dalamnya sebelum cetakan ditampilkan. GUI yang digunakan oleh booth foto memiliki atribut ShowInPhotoBooth yang disetel ke true. Lihat Visibilitas GUI untuk detail dan kode sampel.
showOtherGuis
showOtherGuis(callback: function)
Callback ini dijalankan setelah cetakan ditutup, memungkinkan Anda untuk mengaktifkan kembali seluruh ScreenGuis atau elemen di dalamnya. GUI yang digunakan oleh booth foto memiliki atribut ShowInPhotoBooth yang disetel ke true. Lihat Visibilitas GUI untuk detail dan kode sampel.