Służba Edytora Avatar

*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 pozwala na dostęp do i zmiany awatara użytkownika w doświadczeniu. Usługa Edytora Avatar może również uzyskać dostęp do ekwipunku użytkownika i Rynku, aby zapisać strój ubrać i kupić przedmioty dla awatara do kontoużytkownika.

Zalecamy wdrożenie usługi Edytora Awatary z wbudowanym w grę edytorem awatary dla kompleksowego doświadczenia dostosowywania postaci. Zobacz miejsce referencyjne Simple Avatar Editor Demo dla przykładu tego funkcja.

Aby zacząć używać usługi Edytora Avatar, musisz najpierw żądać dostępu do wyposażenieużytkownika. Po przyznaniu dostępu, możesz wykonać następujące działania:

Żądanie dostępu

Aby zacząć uzyskiwać dostęp do ekwipunku wyposażenie, musisz poprosić użytkownika o zezwolenie na dostęp poprzez PromptAllowInventoryReadAccess() . Musisz wykonać ten wniosek jeden raz za sesja.

Użyj poniższego przykładu kodu, aby zainicjować prośbę o dostęp i sł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 polecenie:

Gdy użytkownik zaakceptuje prośbę, AvatarEditorService może zacząć uzyskiwać dostęp do wyposażenieużytkownika.

Czytanie ekwipunku użytkownika

Gdy użytkownik udzieli dostępu, możesz przeczytać ich ekwipunek za pomocą funkcji GetInventory(), dostarczając arkusz AvatarAssetTypes do filtrowania. Ta funkcja zwraca obiekt InventoryPages zawierający posiadane przez użytkownika przedmi

Użyj poniższego 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

Poszukiwanie na rynku

AvatarEditorService включает funkcje i wydarzenia, które poзволяют вам検索 каталог Roblox. wyszukiwać, załóż zapytanie z объектом CatalogSearchParams , który zawiera одну или более следующих свойств:

WłasnośćOpis
Typy zasobówMateriały Enum.AvatarAssetType takie jak Encyklopedia.AvatarAssetType.BackAccessory.
Typy zestawówMateriały Enum.BundleType takie jak Entity.String BodyParts.
Filtr kategoriiA Enum.CatalogCategoryFilter opisujące różne kategorie katalogowe, takie jak "Featured" lub "Community Creations". Domyślnie ustawione jest na Enum.CatalogCategoryFilter.None
Maksymalna cenaLiczba maksymalna ceny do filtrowania.
Cena minimalnaLiczba opisująca minimalną cenę do filtrowania. Domyślnie MinPrice wynosi 0 .
Słowo kluczoweString do zapytania o opisy przedmiotów w katalogu.
TypSortowaniaA Enum.CatalogSortType, który opisuje sposób sortowania wyników. Domyślnie ustawiony na Enum.CatalogSortType.Relevance .
WłączNieWyprzedażBoolean określający, czy wyniki wyszukiwania zawierają usunięte przedmioty w sprzedaży. Domyślnie ustawiony na false.
TwórcaIdLiczby, aby określić danych twórca. Możesz użyć either a UserId or a GroupId.
NazwaTwórcyString używany do wyszukiwania przez danych twórca. Możesz użyć zarówno imienia użytkownika, jak i nazwy grupy.

Poniższy kod przykładu konstruuje obiekt CatalogSearchParams dla Back i Shoulder typów zasobów, i przesyłanych poprzez wezwanie 2>Class.AvatarEditorService:SearchCatalog()|SearchCatalog()2> poprzez:


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 KatalogPages zawierający wyniki.
AvatarEditorService:SearchCatalog(catalogSearchParams)
local currentPage = pagesObject:GetCurrentPage()
for _, item in currentPage do
print(item)
end

Zapisywanie awatarów i ubrań

Gdy używany jest wraz z edytorem awatarów w grze, AvatarEditorService może zapisać i zaktualizować przedmioty awatary i ubrania na platformaRoblox. Użytkownicy nie otrzymują katalogowych przedmiotów, które nie posiadają, gdy zapisują awatar lub strój.

Każdy HumanoidDescription można zapisać na obecnym awatarze użytkownika z użyciem PromptSaveAvatar() . Może to obejmować:

  • Gotowe konfiguracje awatara, które stworzyłeś używając istniejących elementów katalogu.
  • Konfiguracja, którą użytkownik wybrał za pośrednictwem edytora awatara w grze.

Ponieważ AvatarEditorService:PromptSaveAvatar() nie wygrywa, możesz uzyskać wynik słuchając wydarzenia AvatarEditorService.PromptSaveAvatarCompleted.

Poniższy kod zapisze obecny HumanoidDescription używając PromptSaveAvatar() i sprawdza pomyślny AvatarEditorService.PromptSaveAvatarCompleted wydarzenie:


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

Aby zapisać dowolną HumanoidDescription jako strój (bez przeciągania obecnego awatara użytkownika), użyj AvatarEditorService:PromptCreateOutfit().

Po wezwaniu możesz uzyskać wynik z AvatarEditorService:PromptCreateOutfit() poprzez słuchanie wydarzenia AvatarEditorService.PromptCreateOutfitCompleted .

Poniższy kod przykładu tworzy strój z AvatarEditorService:PromptCreateOutfit() i słucha na sukcesy AvatarEditorService.PromptCreateOutfitCompleted wydarzenia:


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

Kupowanie przedmiotów

Podczas zapisywania obiektu lub ubra, które używają katalogowych pozycji katalogowych, użytkownik nie otrzymuje żadnych przedmiotów, które nie posiadać. Przed zapisem obiektu lub ubra sprawdź, czy użytkownik posiada MarketplaceService:PlayerOwnsAsset() i daj im opcję zakupu przedmiotu za pomocą Class.MarketplaceService:PromptPurchase

Jeśli nie chcesz wdrożenia zakupów przedmiotów, możesz zamiast tego pozwolić użytkownikom na ulubienie nieposiadanych przedmiotów z AvatarEditorService:PromptSetFavorite() .