Serviço de Editor de Avatar

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

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:

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

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:

PropriedadeDescrição
Tipos de RecursoUm conjunto de Enum.AvatarAssetType como Enum.AvatarAssetType.BackAccessory.
Tipos de PacoteUm conjunto de Enum.BundleType como Enum.BundleType.BodyParts.
Filtro de CategoriaUm 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áximoUm inteiro que descreve o preço máximo para filtro.
Preço MínimoUm inteiro que descreve o preço mínimo para filtro. Por padrão, o MinPrice é 0.
PesquisarPalavra-ChaveUma string para consultar contra as descrições de itens no catálogo.
Tipo de OrdenaçãoUm Enum.CatalogSortType que descreve como os resultados são ordenados. Por padrão, isso é definido como Enum.CatalogSortType.Relevance .
IncluirFora de VendaUm booleano que descreve se os resultados da busca incluem itens fora de venda. Por padrão, isso é definido como falso.
Id do CriadorUm inteiro para especificar um criador dado. Você pode usar um UserId ou um GroupId.
Nome do CriadorUma 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 = assetTypes
local pagesObject =
--Essa função retorna um objeto CatalogPages que contém os resultados.
AvatarEditorService:SearchCatalog(catalogSearchParams)
local currentPage = pagesObject:GetCurrentPage()
for _, item in currentPage do
print(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.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
-- 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.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
-- 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() .