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 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:

Żą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 do
print(item)
end
end

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ówMała liczba Enum.AvatarAssetType takich jak Enum.AvatarAssetType.BackAccessory.
Rodzaje pakietówZbiór Enum.BundleType takich jak Enum.BundleType.BodyParts.
Filtr kategoriiA 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 cenaCałkowita liczba opisująca maksymalną cenę do filtrowania.
Cena minimalnaCałkowita liczba opisująca minimalną cenę do przefiltrowania. Domyślnie MinPrice wynosi 0.
Szukaj słowa kluczowegoSznurek do zapytania o opisy przedmiotów w katalogu.
Sortuj typA 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órcyCałkowita liczba, aby określić danego twórca. Możesz użyć UserId lub GroupId.
Nazwa twórcySznurek 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 = assetTypes
local pagesObject =
--Funkcja ta 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 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.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ć 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.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
-- 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() .