Robienie zdjęcia to doskonały sposób na uwiecznienie wspaniałego doświadczenia. Moduł PhotoBooth moduł dewelopera to prosty w użyciu narzędzie do aranżacji zdjęć, które pozwala graczom przyjąć unikalną pozę z tłem, które reprezentuje ich przeżycia.
Użycie modułu
Instalacja
Aby użyć modułu PhotoBooth w doświadczeniu:
Z menu Okno w Studio lub z paska narzędzi na karcie Strona główna, otwórz Zasobnik i wybierz zakładkę Sklep twórcy.

Upewnij się, że wybrano sortowanie Modele, a następnie kliknij przycisk Zobacz wszystko dla Kategorii.

Zlokalizuj i kliknij kafelek Pakiety.
Zlokalizuj moduł Budka fotograficzna i kliknij go lub przeciągnij go do widoku 3D.

W oknie Eksplorator przenieś cały model PhotoBooth do ReplicatedStorage. Po uruchomieniu doświadczenia moduł zacznie działać.
Pozycjonowanie budki
Moduł zawiera jeden model Budka fotograficzna, który możesz umieścić w świecie 3D. Ten model to to, z czym będą wchodzić w interakcję gracze, aby ustawić zdjęcie.
Zlokalizuj siatkę Budka fotograficzna wewnątrz folderu Workspace głównego folderu modułu.

Przenieś go do najwyższego poziomu hierarchii Workspace i umieść w pożądanym miejscu.

Konfiguracja
Moduł jest wstępnie skonfigurowany do działania w większości przypadków użycia, ale można go łatwo dostosować za pomocą funkcji konfiguracji. Na przykład, aby zmienić domyślny komunikat na dole zdjęcia:
W StarterPlayerScripts utwórz nowy LocalScript i zmień jego nazwę na ConfigurePhotoBooth.

Wklej następujący kod do nowego skryptu.
LocalScript - ConfigurePhotoBoothlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local PhotoBooth = require(ReplicatedStorage.PhotoBooth)PhotoBooth.configure({frameMessage = "Pierwsze zdjęcie w Budce!",})
Połączenie z wydarzeniami
Za każdym razem, gdy budka fotograficzna wyświetla nowy ekran dla lokalnego klienta, wyzwalane jest odpowiednie wydarzenie. Te wydarzenia mogą być połączone w LocalScript, aby można było odpowiedzieć własną logiką.
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
PhotoBooth.countdownStarted:Connect(function()
print("Odmierzanie czasu się rozpoczęło")
end)
PhotoBooth.printoutShown:Connect(function()
print("Wydruk jest wyświetlany")
end)
PhotoBooth.promptShown:Connect(function()
print("Wyświetlany jest komunikat z kamerą")
end)
Widoczność GUI
Domyślnie budka fotograficzna ukrywa wszystkie ScreenGuis i CoreGuis, gdy zdjęcie jest aranżowane. Jeśli chcesz nadpisać to automatyczne ukrywanie i programowo zdecydować, które GUI powinny pozostać widoczne, dodaj wywołania hideOtherGuis i showOtherGuis i odpowiedz własną logiką.
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 = {}
-- Utwórz GUI ekranowe, które nie będzie ukrywane
local specialGuiInstance = Instance.new("ScreenGui")
-- Rysuj GUI ekranowe nad GUI budki fotograficznej
specialGuiInstance.DisplayOrder = 1
specialGuiInstance.Parent = playerGui
-- Ustaw atrybut na GUI ekranowym, aby zapobiec ukrywaniu
specialGuiInstance:SetAttribute("ShowInPhotoBooth", true)
-- Dodaj etykietę tekstową do GUI
local specialLabel = Instance.new("TextLabel")
specialLabel.Size = UDim2.fromScale(1, 0.1)
specialLabel.Text = "Pozostaje widoczne przy robieniu zdjęcia"
specialLabel.Font = Enum.Font.GothamMedium
specialLabel.TextSize = 24
specialLabel.Parent = specialGuiInstance
PhotoBooth.hideOtherGuis(function()
-- Ukryj wszystkie zdefiniowane przez dewelopera GUI ekranowe, z wyjątkiem tych oznaczonych atrybutem
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
-- Ukryj określone GUI rdzenne
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)
end)
PhotoBooth.showOtherGuis(function()
-- Pokaż wszystkie zdefiniowane przez dewelopera GUI ekranowe, które były ukryte
for _, instance in hiddenInstances do
instance.Enabled = true
end
hiddenInstances = {}
-- Pokaż określone GUI rdzenne, które były ukryte
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, true)
end)
Referencje API
Funkcje
configure
configure(config: table)
Nadpisuje domyślne opcje konfiguracyjne za pomocą następujących kluczy/wartości w tabeli config. Ta funkcja może być wywoływana tylko z LocalScript.
| Klucz | Opis | Domyślna |
|---|---|---|
| frameMessage | Wiadomość wyświetlana na dole zdjęcia. Jej czas trwania można kontrolować za pomocą właściwości fadeUiDelay. | "Użyj swojego urządzenia do zrobienia zrzutu ekranu i podziel się!" |
| fadeUiDelay | Czas, przez jaki wyświetlana jest wiadomość w ramce przed jej zniknięciem, w sekundach. Ustaw na liczbę ujemną, aby nigdy nie znikała. | 3 |
| closeButtonImage | Obraz do użycia na przycisku zamknięcia zdjęcia, umieszczony na obrazie closeButtonBackgroundImage. | "rbxassetid://7027440823" |
| closeButtonBackgroundImage | Obraz tła do użycia na przycisku zamknięcia zdjęcia. | "rbxassetid://7027440891" |
| cameraLandscapePosition | Odległość kamery budki fotograficznej, na przód i do góry od postaci, podczas robienia zdjęcia w trybie poziomym (Vector2). | (5, 2) |
| cameraPortraitPosition | Odległość kamery budki fotograficznej, na przód i do góry od postaci, podczas robienia zdjęcia w trybie pionowym (Vector2). | (10, 1) |
| countdownFont | Czcionka używana dla cyfr w odmierzaniu czasu (Enum.Font). | GothamBlack |
| countdownTextColor | Kolor cyfr w odmierzaniu czasu (Color3). | [255, 255, 255] |
| printoutCharacterPosition | Pozycja postaci na ekranie, gdy wydruk jest wyświetlany (UDim2). | (0.5, 0, 0.5, 0) |
| printoutCharacterSize | Ilość miejsca na ekranie zajmowanego przez postać na wydruku (UDim2). | (1, 0, 1, 0) |
| characterAnimation | ID zasobu animacji, w której postać wykonuje zdjęcie, zatrzymana na klatce startowej. | "rbxassetid://6899663224" |
| filterImage | Obraz do zastosowania na zdjęciu jako filtr. Jeśli nil, zastosowany zostanie domyślny filtr, który przyciemnia krawędzie obrazu. | nil |
LocalScript - ConfigurePhotoBoothlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local PhotoBooth = require(ReplicatedStorage.PhotoBooth)PhotoBooth.configure({frameMessage = "Jakie fajne ujęcie!",fadeUiDelay = 5,maxActivationDistance = 5,printoutCharacterSize = UDim2.fromScale(1.5, 1.5),})
setBackgrounds
setBackgrounds(backgrounds: table)
Nadpisuje domyślne tła dostarczone przez budkę fotograficzną. Obrazy tła powinny mieć proporcje 16:9 (1024×576) dla optymalnego doświadczenia, a ich ID zasobów powinny być zawarte w tablicy z tłem. Można dostarczyć od 1 do 4 (włącznie) tła.
LocalScriptlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local PhotoBooth = require(ReplicatedStorage.PhotoBooth)PhotoBooth.setBackgrounds({"rbxassetid://7018713114","rbxassetid://950538356",})
Wydarzenia
countdownStarted
Wyzwala, gdy odmierzanie czasu się rozpoczyna. To wydarzenie może być połączone tylko w LocalScript.
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
PhotoBooth.countdownStarted:Connect(function()
print("Odmierzanie czasu się rozpoczęło")
end)
printoutShown
Wyzwala, gdy wydruk jest pokazywany użytkownikowi. To wydarzenie może być połączone tylko w LocalScript.
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
PhotoBooth.printoutShown:Connect(function()
print("Wydruk jest wyświetlany")
end)
promptShown
Wyzwala, gdy wydruk jest zamknięty, a przycisk kamery znów jest wyświetlany. To wydarzenie może być połączone tylko w LocalScript.
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
PhotoBooth.promptShown:Connect(function()
print("Wyświetlany jest komunikat z kamerą")
end)
Wywołania zwrotne
hideOtherGuis
hideOtherGuis(callback: function)
Ten wywołanie zwrotne wykonuje się natychmiast przed wyświetleniem wydruku, pozwalając na wyłączenie całych ScreenGuis lub elementów w nich przed wyświetleniem wydruku. GUI używane przez budkę fotograficzną mają atrybut ShowInPhotoBooth ustawiony na true. Zobacz Widoczność GUI dla szczegółów i przykładowego kodu.
showOtherGuis
showOtherGuis(callback: function)
Ten wywołanie zwrotne wykonuje się po zamknięciu wydruku, pozwalając ponownie włączyć całe ScreenGuis lub elementy w nich. GUI używane przez budkę fotograficzną mają atrybut ShowInPhotoBooth ustawiony na true. Zobacz Widoczność GUI dla szczegółów i przykładowego kodu.