Usługa Edytora Awatara pozwala uzyskać dostęp i wprowadzać zmiany w awatarze użytkownika w doświadczeniu.Usługa Edytora Awatara może również uzyskać dostęp do ekwipunku użytkownika i Rynku, aby zapisać stroje i kupić przedmioty awatara dla kontoużytkownika.
Polecamy wdrożenie usługi edytora awatara z edytorem awatara w grze, aby uzyskać pełne doświadczenie dostosowywania postaci.Zobacz miejsce odniesienia Pokaz prostego edytora awatarów, aby uzyskać przykład tej funkcja.
Aby rozpocząć korzystanie z usługi edytora awatarów, musisz najpierw żądać dostępu do zapasu wyposażenie.Po pomyślnym przyznaniu dostępu możesz wykonać następujące działania:
- Przeczytaj ekwipunek użytkownika, aby uzyskać listę przedmiotów posiadanych przez użytkownika.
- Wyszukaj na rynku , używając różnych właściwości do filtrowania i sortować.
- Wyposaż przedmioty awatara i zapisz stroje na awatarze użytkownika.
- Poproś użytkownika o zakup przedmiotu na rynku.
Żądaj dostępu
Aby rozpocząć dostęp do wyposażenieużytkownika, musisz poprosić użytkownika o zezwolenie dostępu poprzez PromptAllowInventoryReadAccess() .Musisz wykonać tę prośbę raz na sesja.
Użyj następującego przykładu kodu, aby zainicjować monit o dostęp i wysł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 powiadomienie:

Gdy użytkownik zaakceptuje monit, AvatarEditorService może rozpocząć dostęp do wyposażenieużytkownika.
Przeczytaj wyposażenieużytkownika
Gdy dostęp zostanie przyznany przez użytkownika, możesz przeczytać jego ekwipunek za pomocą funkcji GetInventory(), dostarczając tablicę AvatarAssetTypes do przefiltrowania.Funkcja ta zwraca obiekt InventoryPages zawierający przedmioty należące do użytkownika.
Użyj następującego 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
Wyszukaj na rynku
AvatarEditorService obejmuje funkcje i wydarzenia, które pozwalają Ci wyszukać katalog Roblox.Aby wyszukiwać, dostarcz swoje zapytanie za pomocą obiektu CatalogSearchParams, który zawiera jedną lub więcej następujących właściwości:
Właściwość | Opis |
---|---|
Typy zasobów | Mała liczba Enum.AvatarAssetType takich jak Enum.AvatarAssetType.BackAccessory. |
Rodzaje pakietów | Zbiór Enum.BundleType takich jak Enum.BundleType.BodyParts. |
Filtr kategorii | A Enum.CatalogCategoryFilter opisujący różne kategorie katalogowe, takie jak "Wyróżniony" lub "Tworzenia społeczności". Domyślnie jest to ustawione na Enum.CatalogCategoryFilter.None |
Maksymalna cena | Całkowita liczba opisująca maksymalną cenę do filtrowania. |
Cena minimalna | Całkowita liczba opisująca minimalną cenę do przefiltrowania. Domyślnie MinPrice wynosi 0. |
Szukaj słowa kluczowego | Sznurek do zapytania o opisy przedmiotów w katalogu. |
Sortuj typ | A Enum.CatalogSortType opisująca, w jaki sposób wyniki są sortowane. Domyślnie jest to ustawione na Enum.CatalogSortType.Relevance . |
Włącz wyprzedaż | Boolean określający, czy wyniki wyszukiwania obejmują przedmioty wyprzedane. Domyślnie jest to ustawione na fałsz. |
Id twórcy | Całkowita liczba, aby określić danego twórca. Możesz użyć UserId lub GroupId. |
Nazwa twórcy | Sznurek używany do wyszukiwania przez przedmioty stworzone przez danego twórca. Możesz użyć nazwy użytkownika lub nazwy grupy. |
Poniższe przykłady kodu konstruują obiekt CatalogSearchParams dla typów zasobów Powrót i Ramię , a następnie przekazują go za pomocą wezwania SearchCatalog():
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 CatalogPages zawierający wyniki.AvatarEditorService:SearchCatalog(catalogSearchParams)local currentPage = pagesObject:GetCurrentPage()for _, item in currentPage doprint(item)end
Zapisz awatary i stroje
Gdy jest używany wraz z edytorem awatara w grze, AvatarEditorService może zapisać i aktualizować przedmioty i stroje awatara na platformaRoblox.Użytkownicy nie otrzymują przedmiotów katalogowych, których nie posiadają, podczas zapisywania awatara lub stroju.
Każdy HumanoidDescription może być zapisany w aktualnym awatarze użytkownika za pomocą PromptSaveAvatar() . Może to obejmować:
- Wstępnie zdefiniowane konfiguracje awatara, które stworzyłeś za pomocą istniejących przedmiotów katalogu.
- Każda konfiguracja, którą użytkownik wybrał za pośrednictwem edytora awatara w grze.

Ponieważ AvatarEditorService:PromptSaveAvatar() nie zwraca wyniku, możesz uzyskać wynik, słuchając wydarzenia AvatarEditorService.PromptSaveAvatarCompleted.
Poniższy kod zapisze obecny HumanoidDescription używając PromptSaveAvatar() i sprawdzi o udane wydarzenie AvatarEditorService.PromptSaveAvatarCompleted:
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-- Awatar zapisany!end
Aby zapisać dowolną HumanoidDescription jako strój (bez zastąpienia obecnego awatara użytkownika), użyj AvatarEditorService:PromptCreateOutfit().

Po wezwaniu możesz uzyskać wynik AvatarEditorService:PromptCreateOutfit() poprzez wysłuchanie wydarzenia AvatarEditorService.PromptCreateOutfitCompleted.
Poniższy przykład kodu tworzy strój z AvatarEditorService:PromptCreateOutfit() i słucha udanego wydarzenia AvatarEditorService.PromptCreateOutfitCompleted:
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-- Stroje zapisane!end
Kup przedmioty
Podczas zapisywania awatara lub stroju, który używa przedmiotów z katalogu, użytkownik nie otrzymuje żadnych przedmiotów, których nie posiadać.Zanim zapiszesz awatar lub strój, sprawdź, czy użytkownik posiada zasób za pomocą MarketplaceService:PlayerOwnsAsset() i dostarcz mu opcję kupienia przedmiotu za pomocą MarketplaceService:PromptPurchase().
Jeśli nie chcesz wdrażać zakupów przedmiotów, możesz zamiast tego pozwolić użytkownikom na ulubienie niezakupionych przedmiotów za pomocą AvatarEditorService:PromptSetFavorite() .