Usługa Edytora Avataró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 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:

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!
end

Uż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
end

Przeszukaj 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
AssetTypesTablica Enum.AvatarAssetType, taka jak Enum.AvatarAssetType.BackAccessory.
BundleTypesTablica Enum.BundleType, taka jak Enum.BundleType.BodyParts.
CategoryFilterEnum.CatalogCategoryFilter opisujący różne kategorie katalogu, jak "Wyróżnione" lub "Stworzenia Społeczności". Domyślnie jest to ustawione na Enum.CatalogCategoryFilter.None.
MaxPriceCałkowita liczba opisująca maksymalną cenę do filtrowania.
MinPriceCałkowita liczba opisująca minimalną cenę do filtrowania. Domyślnie, MinPrice wynosi 0.
SearchKeywordŁańcuch do zapytania w opisie przedmiotów w katalogu.
SortTypeEnum.CatalogSortType, który opisuje, jak wyniki są uporządkowane. Domyślnie, jest to ustawione na Enum.CatalogSortType.Relevance.
IncludeOffSaleWartość logiczna opisująca, czy wyniki wyszukiwania powinny obejmować przedmioty, które nie są na sprzedaż. Domyślnie jest to ustawione na fałsz.
CreatorIdLiczba 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)
end

Zapisz 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!
end

Aby 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!
end

Zakup 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().

©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.