Usługa Edytora Awatarów

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Usługa Edytora Awatarów pozwala na dostęp i wprowadzanie zmian w awatarze użytkownika w ramach doświadczenia. Usługa Edytora Awatarów może również uzyskać dostęp do ekwipunku użytkownika oraz do Rynku, aby zapisać stroje i kupić przedmioty dla awatara na konto użytkownika.

Zalecamy implementację Usługi Edytora Awatarów wraz z edytorem awatarów w grze, aby uzyskać pełne doświadczenie personalizacji postaci. Spójrz na Demonstrację Prostej Edycji Awatara jako przykład tej funkcji.

Aby rozpocząć korzystanie z Usługi Edytora Awatarów, musisz najpierw zażądać dostępu do ekwipunku użytkownika. Po pomyślnym przyznaniu dostępu możesz wykonać następujące akcje:

Żądanie dostępu

Aby rozpocząć dostęp do ekwipunku użytkownika, musisz zachęcić użytkownika do zezwolenia na dostęp przez PromptAllowInventoryReadAccess(). Musisz wykonać to żądanie raz na sesję.

Użyj poniższego przykładu 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!
end

Użytkownik otrzymuje następujące powiadomienie:

Po zaakceptowaniu powiadomienia przez użytkownika, AvatarEditorService może rozpocząć dostęp do ekwipunku użytkownika.

Przeczytaj ekwipunek użytkownika

Gdy dostęp zostanie przyznany przez użytkownika, możesz odczytać jego ekwipunek 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ładu kodu, aby wydrukować listę określonych akcesoriów w ekwipunku 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
end

Wyszukaj na Rynku

AvatarEditorService zawiera funkcje i zdarzenia, które umożliwiają wyszukiwanie w katalogu Roblox. Aby przeprowadzić wyszukiwanie, dostarcz swoje zapytanie za pomocą obiektu CatalogSearchParams, który zawiera jedną lub więcej z poniższych właściwości:

WłaściwośćOpis
AssetTypesTablica Enum.AvatarAssetType takich jak Enum.AvatarAssetType.BackAccessory.
BundleTypesTablica Enum.BundleType takich jak Enum.BundleType.BodyParts.
CategoryFilterEnum.CatalogCategoryFilter, opisujący różne kategorie katalogu, takie jak "Polecane" lub "Twórczość społeczności". Domyślnie ustawiono to na Enum.CatalogCategoryFilter.None
MaxPriceCałkowita liczba określająca maksymalną cenę do filtrowania.
MinPriceCałkowita liczba określająca minimalną cenę do filtrowania. Domyślnie, MinPrice to 0.
SearchKeywordŁańcuch znaków do wyszukiwania w opisach przedmiotów w katalogu.
SortTypeEnum.CatalogSortType, który opisuje, jak wyniki są sortowane. Domyślnie ustawiono to na Enum.CatalogSortType.Relevance.
IncludeOffSaleWartość logiczna określająca, czy wyniki wyszukiwania obejmują przedmioty, które nie są w sprzedaży. Domyślnie ustawiono to na false.
CreatorIdCałkowita liczba, aby określić danego twórcę. Możesz użyć identyfikatora użytkownika lub identyfikatora grupy.
CreatorNameŁańcuch znaków używany do wyszukiwania według przedmiotów stworzonych przez danego twórcę. Możesz użyć nazwy użytkownika lub nazwy grupy.

Poniższy przykład kodu tworzy obiekt CatalogSearchParams dla typów aktywów Plecak i Ramię, i 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)
end

Zapisz awatary i stroje

Kiedy jest używana wraz z edytorem awatarów w grze, AvatarEditorService może zapisywać i aktualizować przedmioty awatara oraz stroje na platformie Roblox. Użytkownicy nie otrzymują przedmiotów katalogu, których nie posiadają podczas zapisywania awatara lub stroju.

Każdy HumanoidDescription może być zapisany na aktualnym awatarze użytkownika za pomocą PromptSaveAvatar(). Może to obejmować:

  • Wstępnie zdefiniowane konfiguracje awatara, które zbudowałeś przy użyciu istniejących przedmiotów katalogu.
  • Dowolna konfiguracja, którą użytkownik wybrał za pomocą edytora awatarów w grze.

Ponieważ AvatarEditorService:PromptSaveAvatar() nie zwraca wyniku, możesz uzyskać rezultat, nasłuchując zdarzenia AvatarEditorService.PromptSaveAvatarCompleted.

Poniższy kod zapisze bieżący HumanoidDescription za pomocą PromptSaveAvatar() i sprawdzi, 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!
end

Aby zapisać dowolny HumanoidDescription jako strój (bez nadpisywania aktualnego awatara użytkownika), użyj AvatarEditorService:PromptCreateOutfit().

Po wywołaniu możesz uzyskać wynik AvatarEditorService:PromptCreateOutfit() nasłuchując zdarzenia AvatarEditorService.PromptCreateOutfitCompleted.

Poniższy przykład kodu tworzy strój z użyciem AvatarEditorService:PromptCreateOutfit() i nasłuchuje na zdarzenie AvatarEditorService.PromptCreateOutfitCompleted, które 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:PromptCreateOutfit(currentDescription, humanoid.RigType)
local result = AvatarEditorService.PromptCreateOutfitCompleted:Wait()
if result == Enum.AvatarPromptResult.Success then
-- Strój zapisany!
end

Zakup przedmiotów

Podczas zapisywania awatara lub stroju, które używa przedmiotów katalogowych, użytkownik nie otrzymuje przedmiotów, których nie posiada. Przed zapisaniem awatara lub stroju, sprawdź, czy użytkownik posiada dany przedmiot za pomocą MarketplaceService:PlayerOwnsAsset(), a następnie daj mu możliwość zakupu przedmiotu za pomocą MarketplaceService:PromptPurchase().

Jeśli nie chcesz wdrażać zakupów przedmiotów, możesz pozwolić użytkownikom na dodawanie nieposiadanych przedmiotów do ulubionych za pomocą AvatarEditorService:PromptSetFavorite().

©2026 Roblox Corporation. Nazwa Roblox, logo Roblox oraz hasło „Powering Imagination” należą do naszych zarejestrowanych i niezarejestrowanych znaków towarowych na terenie Stanów Zjednoczonych oraz w innych krajach.