Usługa Edytora Avatarów umożliwia dostęp i wprowadzenie zmian w awatarze użytkownika w grze. Usługa Edytora Avatarów może również uzyskać dostęp do inwentarza użytkownika oraz Rynku, aby zapisać stroje i zakupić przedmioty do konta użytkownika.
Zalecamy wdrożenie Usługi Edytora Avatarów z edytorem avatarów w grze, aby zapewnić kompletną obsługę personalizacji postaci. Zobacz referencyjny obiekt Demo Prosty Edytor Avatarów jako przykład tej funkcji.
Aby zacząć korzystać z Usługi Edytora Avatarów, musisz najpierw poprosić o dostęp do inwentarza użytkownika. Po przyznaniu dostępu, możesz wykonać następujące czynności:
- Przeczytaj inwentarz użytkownika, aby uzyskać listę przedmiotów posiadanych przez użytkownika.
- Przeszukaj Rynek, używając różnych właściwości do filtrowania i sortowania.
- Wyposaż przedmioty awatara i zapisz stroje dla awatara użytkownika.
- Zachęć użytkownika do zakupu przedmiotu na rynku.
Poproś o dostęp
Aby uzyskać dostęp do inwentarza użytkownika, musisz poprosić użytkownika o zezwolenie na dostęp poprzez PromptAllowInventoryReadAccess(). Musisz wykonać tę prośbę raz na sesję.
Użyj poniższego próbkowego kodu, aby zainicjować prośbę o dostęp i nasłuchiwać odpowiedzi użytkownika:
local AvatarEditorService = game:GetService("AvatarEditorService")
AvatarEditorService:PromptAllowInventoryReadAccess()
local result = AvatarEditorService.PromptAllowInventoryReadAccessCompleted:Wait()
if result == Enum.AvatarPromptResult.Success then
-- Dostęp przyznany!
endUżytkownik otrzyma następującą prośbę:

Gdy użytkownik zaakceptuje prośbę, AvatarEditorService może zaczynać dostępować do inwentarza użytkownika.
Przeczytaj inwentarz użytkownika
Gdy dostęp zostanie przyznany przez użytkownika, możesz odczytać jego inwentarz za pomocą funkcji GetInventory(), podając tablicę AvatarAssetTypes do filtrowania. Ta funkcja zwraca obiekt InventoryPages, zawierający przedmioty posiadane przez użytkownika.
Użyj poniższego przykładowego kodu, aby wydrukować listę określonych akcesoriów w inwentarzu użytkownika:
local AvatarEditorService = game:GetService("AvatarEditorService")
AvatarEditorService:PromptAllowInventoryReadAccess()
local result = AvatarEditorService.PromptAllowInventoryReadAccessCompleted:Wait()
if result == Enum.AvatarPromptResult.Success then
-- Dostęp przyznany!
local assetTypes = {
Enum.AvatarAssetType.BackAccessory,
Enum.AvatarAssetType.ShoulderAccessory,
Enum.AvatarAssetType.WaistAccessory
}
local pagesObject = AvatarEditorService:GetInventory(assetTypes)
local currentPage = pagesObject:GetCurrentPage()
for _, item in currentPage do
print(item)
end
endPrzeszukaj Rynek
AvatarEditorService zawiera funkcje i zdarzenia, które pozwalają na przeszukiwanie katalogu Roblox. Aby przeszukać, przekaż swoje zapytanie z obiektem CatalogSearchParams, który zawiera jedną lub więcej z poniższych właściwości:
| Właściwość | Opis |
|---|---|
| AssetTypes | Tablica Enum.AvatarAssetType, taka jak Enum.AvatarAssetType.BackAccessory. |
| BundleTypes | Tablica Enum.BundleType, taka jak Enum.BundleType.BodyParts. |
| CategoryFilter | Enum.CatalogCategoryFilter opisujący różne kategorie katalogu, jak "Wyróżnione" lub "Stworzenia Społeczności". Domyślnie jest to ustawione na Enum.CatalogCategoryFilter.None. |
| MaxPrice | Całkowita liczba opisująca maksymalną cenę do filtrowania. |
| MinPrice | Całkowita liczba opisująca minimalną cenę do filtrowania. Domyślnie, MinPrice wynosi 0. |
| SearchKeyword | Łańcuch do zapytania w opisie przedmiotów w katalogu. |
| SortType | Enum.CatalogSortType, który opisuje, jak wyniki są uporządkowane. Domyślnie, jest to ustawione na Enum.CatalogSortType.Relevance. |
| IncludeOffSale | Wartość logiczna opisująca, czy wyniki wyszukiwania powinny obejmować przedmioty, które nie są na sprzedaż. Domyślnie jest to ustawione na fałsz. |
| CreatorId | Liczba całkowita do określenia danego twórcy. Możesz użyć identyfikatora Użytkownika lub identyfikatora Grupy. |
| CreatorName | Łańcuch używany do wyszukiwania przedmiotów stworzonych przez danego twórcę. Możesz użyć zarówno nazwy użytkownika, jak i nazwy grupy. |
Poniższy kod tworzy obiekt CatalogSearchParams dla typów aktywów Back i Shoulder, a następnie przekazuje go przez wywołanie SearchCatalog():
local AvatarEditorService = game:GetService("AvatarEditorService")
local catalogSearchParams = CatalogSearchParams.new()
local assetTypes = {
Enum.AvatarAssetType.BackAccessory,
Enum.AvatarAssetType.ShoulderAccessory
}
catalogSearchParams.AssetTypes = assetTypes
local pagesObject =
--Ta funkcja zwraca obiekt CatalogPages zawierający wyniki.
AvatarEditorService:SearchCatalog(catalogSearchParams)
local currentPage = pagesObject:GetCurrentPage()
for _, item in currentPage do
print(item)
endZapisz awatary i stroje
Gdy używany jest wraz z edytorem avatarów w grze, AvatarEditorService może zapisać i aktualizować przedmioty awatara i stroje na platformie Roblox. Użytkownicy nie otrzymują przedmiotów katalogowych, których nie posiadają, gdy zapisują awatar lub strój.
Każdy HumanoidDescription może być zapisany na bieżącego awatara użytkownika za pomocą PromptSaveAvatar(). Może to obejmować:
- Predefiniowane konfiguracje awatara, które stworzyłeś za pomocą istniejących przedmiotów katalogowych.
- Każda konfiguracja, którą użytkownik wybrał przez edytor avatarów w grze.

Ponieważ AvatarEditorService:PromptSaveAvatar() nie czeka, możesz uzyskać wynik, nasłuchując zdarzenia AvatarEditorService.PromptSaveAvatarCompleted.
Poniższy kod zapisuje bieżący HumanoidDescription używając PromptSaveAvatar() i sprawdza, czy zdarzenie AvatarEditorService.PromptSaveAvatarCompleted zakończyło się sukcesem:
local AvatarEditorService = game:GetService("AvatarEditorService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local 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!
endAby zapisać dowolny HumanoidDescription jako strój (bez nadpisywania bieżącego awatara użytkownika), użyj AvatarEditorService:PromptCreateOutfit().

Po wywołaniu, możesz uzyskać wynik AvatarEditorService:PromptCreateOutfit() nasłuchując na zdarzenie AvatarEditorService.PromptCreateOutfitCompleted.
Poniższy przykładowy kod tworzy strój za pomocą AvatarEditorService:PromptCreateOutfit() i nasłuchuje na pomyślne zdarzenie AvatarEditorService.PromptCreateOutfitCompleted:
local AvatarEditorService = game:GetService("AvatarEditorService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local 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
-- Strój zapisany!
endZakup przedmiotów
Podczas zapisywania zarówno awatara, jak i stroju, które używają przedmiotów katalogowych, użytkownik nie otrzymuje żadnych przedmiotów, których nie posiada. Przed zapisaniem awatara lub stroju, sprawdź, czy użytkownik posiada dany przedmiot za pomocą MarketplaceService:PlayerOwnsAsset() i daj mu możliwość zakupu przedmiotu za pomocą MarketplaceService:PromptPurchase().
Jeśli nie chcesz wdrażać zakupów przedmiotów, możesz zamiast tego pozwolić użytkownikom dodać do ulubionych przedmioty, których nie posiadają, za pomocą AvatarEditorService:PromptSetFavorite().