Usługa Edytora Avatar pozwala na dostęp do i zmiany awatara użytkownika w doświadczeniu. Usługa Edytora Avatar może również uzyskać dostęp do ekwipunku użytkownika i Rynku, aby zapisać strój ubrać i kupić przedmioty dla awatara do kontoużytkownika.
Zalecamy wdrożenie usługi Edytora Awatary z wbudowanym w grę edytorem awatary dla kompleksowego doświadczenia dostosowywania postaci. Zobacz miejsce referencyjne Simple Avatar Editor Demo dla przykładu tego funkcja.
Aby zacząć używać usługi Edytora Avatar, musisz najpierw żądać dostępu do wyposażenieużytkownika. Po przyznaniu dostępu, możesz wykonać następujące działania:
- Przeczytaj ekwipunek użytkownika, aby uzyskać listę posiadanych przez użytkownika przedmiotów.
- Szukaj Marketplace'a , używając różnych właściwości do filtrowania i sortować.
- Ubierz przedmioty dla awatara i zapisz strój do awatara użytkownika.
- Zachęć użytkownika do kupna Marketplace-u przedmiotu.
Żądanie dostępu
Aby zacząć uzyskiwać dostęp do ekwipunku wyposażenie, musisz poprosić użytkownika o zezwolenie na dostęp poprzez PromptAllowInventoryReadAccess() . Musisz wykonać ten wniosek jeden raz za sesja.
Użyj poniższego przykładu kodu, aby zainicjować prośbę o dostęp i słuchać odpowiedzi użytkownika:
local AvatarEditorService = game:GetService("AvatarEditorService")AvatarEditorService:PromptAllowInventoryReadAccess()local result = AvatarEditorService.PromptAllowInventoryReadAccessCompleted:Wait()if result == Enum.AvatarPromptResult.Success then-- Dostęp udzielony!end
Użytkownik otrzymuje następujące polecenie:
Gdy użytkownik zaakceptuje prośbę, AvatarEditorService może zacząć uzyskiwać dostęp do wyposażenieużytkownika.
Czytanie ekwipunku użytkownika
Gdy użytkownik udzieli dostępu, możesz przeczytać ich ekwipunek za pomocą funkcji GetInventory(), dostarczając arkusz AvatarAssetTypes do filtrowania. Ta funkcja zwraca obiekt InventoryPages zawierający posiadane przez użytkownika przedmi
Użyj poniższego przykładu kodu, aby wydrukować listę konkretnych akcesoriów w wyposażenieużytkownika:
local AvatarEditorService = game:GetService("AvatarEditorService")AvatarEditorService:PromptAllowInventoryReadAccess()local result = AvatarEditorService.PromptAllowInventoryReadAccessCompleted:Wait()if result == Enum.AvatarPromptResult.Success then-- Dostęp udzielony!local assetTypes = {Enum.AvatarAssetType.BackAccessory,Enum.AvatarAssetType.ShoulderAccessory,Enum.AvatarAssetType.WaistAccessory}local pagesObject = AvatarEditorService:GetInventory(assetTypes)local currentPage = pagesObject:GetCurrentPage()for _, item in currentPage doprint(item)endend
Poszukiwanie na rynku
AvatarEditorService включает funkcje i wydarzenia, które poзволяют вам検索 каталог Roblox. wyszukiwać, załóż zapytanie z объектом CatalogSearchParams , który zawiera одну или более следующих свойств:
Własność | Opis |
---|---|
Typy zasobów | Materiały Enum.AvatarAssetType takie jak Encyklopedia.AvatarAssetType.BackAccessory. |
Typy zestawów | Materiały Enum.BundleType takie jak Entity.String BodyParts. |
Filtr kategorii | A Enum.CatalogCategoryFilter opisujące różne kategorie katalogowe, takie jak "Featured" lub "Community Creations". Domyślnie ustawione jest na Enum.CatalogCategoryFilter.None |
Maksymalna cena | Liczba maksymalna ceny do filtrowania. |
Cena minimalna | Liczba opisująca minimalną cenę do filtrowania. Domyślnie MinPrice wynosi 0 . |
Słowo kluczowe | String do zapytania o opisy przedmiotów w katalogu. |
TypSortowania | A Enum.CatalogSortType, który opisuje sposób sortowania wyników. Domyślnie ustawiony na Enum.CatalogSortType.Relevance . |
WłączNieWyprzedaż | Boolean określający, czy wyniki wyszukiwania zawierają usunięte przedmioty w sprzedaży. Domyślnie ustawiony na false. |
TwórcaId | Liczby, aby określić danych twórca. Możesz użyć either a UserId or a GroupId. |
NazwaTwórcy | String używany do wyszukiwania przez danych twórca. Możesz użyć zarówno imienia użytkownika, jak i nazwy grupy. |
Poniższy kod przykładu konstruuje obiekt CatalogSearchParams dla Back i Shoulder typów zasobów, i przesyłanych poprzez wezwanie 2>Class.AvatarEditorService:SearchCatalog()|SearchCatalog()2> poprzez:
local AvatarEditorService = game:GetService("AvatarEditorService")local catalogSearchParams = CatalogSearchParams.new()local assetTypes = {Enum.AvatarAssetType.BackAccessory,Enum.AvatarAssetType.ShoulderAccessory}catalogSearchParams.AssetTypes = assetTypeslocal pagesObject =--Funkcja ta zwraca obiekt KatalogPages zawierający wyniki.AvatarEditorService:SearchCatalog(catalogSearchParams)local currentPage = pagesObject:GetCurrentPage()for _, item in currentPage doprint(item)end
Zapisywanie awatarów i ubrań
Gdy używany jest wraz z edytorem awatarów w grze, AvatarEditorService może zapisać i zaktualizować przedmioty awatary i ubrania na platformaRoblox. Użytkownicy nie otrzymują katalogowych przedmiotów, które nie posiadają, gdy zapisują awatar lub strój.
Każdy HumanoidDescription można zapisać na obecnym awatarze użytkownika z użyciem PromptSaveAvatar() . Może to obejmować:
- Gotowe konfiguracje awatara, które stworzyłeś używając istniejących elementów katalogu.
- Konfiguracja, którą użytkownik wybrał za pośrednictwem edytora awatara w grze.
Ponieważ AvatarEditorService:PromptSaveAvatar() nie wygrywa, możesz uzyskać wynik słuchając wydarzenia AvatarEditorService.PromptSaveAvatarCompleted.
Poniższy kod zapisze obecny HumanoidDescription używając PromptSaveAvatar() i sprawdza pomyślny AvatarEditorService.PromptSaveAvatarCompleted wydarzenie:
local AvatarEditorService = game:GetService("AvatarEditorService")local Players = game:GetService("Players")local player = Players.LocalPlayerlocal character = player.Character or player.CharacterAdded:Wait()local humanoid = character:WaitForChild("Humanoid")local currentDescription = humanoid:GetAppliedDescription()AvatarEditorService:PromptSaveAvatar(currentDescription, humanoid.RigType)local result = AvatarEditorService.PromptSaveAvatarCompleted:Wait()if result == Enum.AvatarPromptResult.Success then-- Zapisany awatar!end
Aby zapisać dowolną HumanoidDescription jako strój (bez przeciągania obecnego awatara użytkownika), użyj AvatarEditorService:PromptCreateOutfit().
Po wezwaniu możesz uzyskać wynik z AvatarEditorService:PromptCreateOutfit() poprzez słuchanie wydarzenia AvatarEditorService.PromptCreateOutfitCompleted .
Poniższy kod przykładu tworzy strój z AvatarEditorService:PromptCreateOutfit() i słucha na sukcesy AvatarEditorService.PromptCreateOutfitCompleted wydarzenia:
local AvatarEditorService = game:GetService("AvatarEditorService")local Players = game:GetService("Players")local player = Players.LocalPlayerlocal character = player.Character or player.CharacterAdded:Wait()local humanoid = character:WaitForChild("Humanoid")local currentDescription = humanoid:GetAppliedDescription()AvatarEditorService:PromptCreateOutfit(currentDescription, humanoid.RigType)local result = AvatarEditorService.PromptCreateOutfitCompleted:Wait()if result == Enum.AvatarPromptResult.Success then-- Ubranie zapisane!end
Kupowanie przedmiotów
Podczas zapisywania obiektu lub ubra, które używają katalogowych pozycji katalogowych, użytkownik nie otrzymuje żadnych przedmiotów, które nie posiadać. Przed zapisem obiektu lub ubra sprawdź, czy użytkownik posiada MarketplaceService:PlayerOwnsAsset() i daj im opcję zakupu przedmiotu za pomocą Class.MarketplaceService:PromptPurchase
Jeśli nie chcesz wdrożenia zakupów przedmiotów, możesz zamiast tego pozwolić użytkownikom na ulubienie nieposiadanych przedmiotów z AvatarEditorService:PromptSetFavorite() .