O Serviço de Editor de Avatar permite que você acesse e faça alterações no avatar de um usuário dentro de uma experiência.O Serviço de Editor de Avatar também pode acessar o inventário de um usuário e o Mercado para salvar roupas e comprar itens de avatar para a conta do usuário.
Recomendamos implementar o Serviço de Editor de Avatar com um editor de avatar no jogo para uma experiência completa de personalização de personagens.Veja o local de referência Simples Demonstração do Editor de Avatar para um exemplo dessa funcionalidade.
Para começar a usar o Serviço de Editor de Avatar, você deve primeiro requisitar acesso ao inventário do usuário.Após o acesso ser concedido com sucesso, você pode executar as seguintes ações:
- Leia o inventário do usuário para obter uma lista de itens possuídos pelo usuário.
- Procure no Mercado, usando uma variedade de propriedades para filtrar e ordenar / classificar.
- Equipar itens de avatar e salvar roupas no avatar do usuário.
- Solicite ao usuário para comprar um item do Mercado.
Solicitar acesso
Para começar a acessar o inventário de um usuário, você precisa solicitar ao usuário que permita o acesso através de PromptAllowInventoryReadAccess() .Você precisa fazer esse pedido uma vez por sessão.
Use o seguinte exemplo de código para iniciar o prompt de acesso e ouvir a resposta do usuário:
local AvatarEditorService = game:GetService("AvatarEditorService")AvatarEditorService:PromptAllowInventoryReadAccess()local result = AvatarEditorService.PromptAllowInventoryReadAccessCompleted:Wait()if result == Enum.AvatarPromptResult.Success then-- Acesso concedido!end
O usuário recebe o seguinte prompt:

Uma vez que o usuário aceita o prompt, o AvatarEditorService pode começar a acessar o inventário do usuário.
Ler inventário do usuário
Uma vez que o acesso é concedido pelo usuário, você pode ler seu inventário com a função GetInventory(), fornecendo um array de AvatarAssetTypes para filtrar.Essa função retorna um objeto InventoryPages que contém os itens pertencentes ao usuário.
Use o seguinte exemplo de código para imprimir uma lista de acessórios específicos no inventário de um usuário:
local AvatarEditorService = game:GetService("AvatarEditorService")AvatarEditorService:PromptAllowInventoryReadAccess()local result = AvatarEditorService.PromptAllowInventoryReadAccessCompleted:Wait()if result == Enum.AvatarPromptResult.Success then-- Acesso concedido!local assetTypes = {Enum.AvatarAssetType.BackAccessory,Enum.AvatarAssetType.ShoulderAccessory,Enum.AvatarAssetType.WaistAccessory}local pagesObject = AvatarEditorService:GetInventory(assetTypes)local currentPage = pagesObject:GetCurrentPage()for _, item in currentPage doprint(item)endend
Pesquise o Mercado
AvatarEditorService inclui funções e eventos que permitem que você pesquise o catálogo do Roblox.Para pesquisar, forneça sua consulta com um objeto CatalogSearchParams que inclua uma ou mais das seguintes propriedades:
Propriedade | Descrição |
---|---|
Tipos de Recurso | Um conjunto de Enum.AvatarAssetType como Enum.AvatarAssetType.BackAccessory. |
Tipos de Pacote | Um conjunto de Enum.BundleType como Enum.BundleType.BodyParts. |
Filtro de Categoria | Um Enum.CatalogCategoryFilter descrevendo as várias categorias de catálogo como "Destaque" ou "Criações da Comunidade". Por padrão, isso é definido como Enum.CatalogCategoryFilter.None |
Preço Máximo | Um inteiro que descreve o preço máximo para filtro. |
Preço Mínimo | Um inteiro que descreve o preço mínimo para filtro. Por padrão, o MinPrice é 0. |
PesquisarPalavra-Chave | Uma string para consultar contra as descrições de itens no catálogo. |
Tipo de Ordenação | Um Enum.CatalogSortType que descreve como os resultados são ordenados. Por padrão, isso é definido como Enum.CatalogSortType.Relevance . |
IncluirFora de Venda | Um booleano que descreve se os resultados da busca incluem itens fora de venda. Por padrão, isso é definido como falso. |
Id do Criador | Um inteiro para especificar um criador dado. Você pode usar um UserId ou um GroupId. |
Nome do Criador | Uma string usada para pesquisar por itens criados por um dado criador. Você pode usar um Nome de Usuário ou um Nome de Grupo. |
Os seguintes exemplos de código constroem um objeto CatalogSearchParams para Volta e Tipo de ombro tipos de recurso, e passam isso através de uma chamada SearchCatalog():
local AvatarEditorService = game:GetService("AvatarEditorService")local catalogSearchParams = CatalogSearchParams.new()local assetTypes = {Enum.AvatarAssetType.BackAccessory,Enum.AvatarAssetType.ShoulderAccessory}catalogSearchParams.AssetTypes = assetTypeslocal pagesObject =--Essa função retorna um objeto CatalogPages que contém os resultados.AvatarEditorService:SearchCatalog(catalogSearchParams)local currentPage = pagesObject:GetCurrentPage()for _, item in currentPage doprint(item)end
Salvar avatares e roupas
Ao usar junto com um editor de avatar no jogo, AvatarEditorService pode salvar e atualizar itens e conjuntos de avatar na plataforma Roblox.Os usuários não recebem itens de catálogo que não possuem ao salvar um avatar ou roupa.
Qualquer HumanoidDescription pode ser salvo no avatar atual do usuário com PromptSaveAvatar() . Isso pode incluir:
- Configurações de avatar pré-definidas que você construiu usando itens de catálogo existentes.
- Qualquer configuração que o usuário escolheu através de um editor de avatar no jogo.

Como AvatarEditorService:PromptSaveAvatar() não produz resultado, você pode obter o resultado ao ouvir o evento AvatarEditorService.PromptSaveAvatarCompleted.
O seguinte código salvará um atual HumanoidDescription usando PromptSaveAvatar() e verificará um evento de sucesso AvatarEditorService.PromptSaveAvatarCompleted:
local AvatarEditorService = game:GetService("AvatarEditorService")local Players = game:GetService("Players")local player = Players.LocalPlayerlocal 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-- Avatar salvo!end
Para salvar qualquer HumanoidDescription como um conjunto (sem substituir o avatar atual do usuário), use AvatarEditorService:PromptCreateOutfit().

Uma vez chamado, você pode obter o resultado de AvatarEditorService:PromptCreateOutfit() ouvindo o evento AvatarEditorService.PromptCreateOutfitCompleted.
O seguinte exemplo de código cria uma roupa com AvatarEditorService:PromptCreateOutfit() e ouve um evento de sucesso AvatarEditorService.PromptCreateOutfitCompleted:
local AvatarEditorService = game:GetService("AvatarEditorService")local Players = game:GetService("Players")local player = Players.LocalPlayerlocal 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-- Roupa salva!end
Compre itens
Ao salvar um avatar ou uma roupa que usa itens de catálogo, o usuário não recebe nenhum item que não possuir.Antes de salvar um avatar ou roupa, verifique se o usuário possui o recurso com MarketplaceService:PlayerOwnsAsset() e forneça uma opção de compra do item com MarketplaceService:PromptPurchase() .
Se você não deseja implementar compras de itens, pode permitir que os usuários favoritem itens não possuídos com AvatarEditorService:PromptSetFavorite() .