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 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 Editor de Avatar também pode acessar o inventário do usuário e o Mercado para salvar roupas e comprar itens de avatar para a conta do usuário.

Recomendamos a implementação do 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 lugar de referência Simples Avatar Editor Demo para um exemplo dessa funcionalidade.

Para começar a usar o Serviço de Editor de Avatar, você deve primeiro solicitar acesso ao inventário do usuário. Depois que o acesso for 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.
  • Pesquise o Mercado, usando uma variedade de propriedades para filtrar e ordenar / classificar.
  • Equipar itens de avatar e salvar roupas para o avatar do usuário.
  • Solicite o usuário para comprar um item do Mercado.

Pedindo Acesso

Para começar a acessar o inventário de um usuário, você precisa solicitar ao usuário que permita acesso através de PromptAllowInventoryReadAccess() . Você precisa realizar esse pedido uma vez por sessão.

Use o seguinte código de exemplo 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.

Lendo 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 uma matriz de AvatarAssetTypes para filtrar. Essa função retorna um objeto InventoryPages que contém os itens de propriedade do usuário.

Use o seguinte código de exemplo 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

Procurando no Mercado

AvatarEditorService inclui funções e eventos que permitem que você pesquise no catálogo do Roblox. Para pesquisar, forneça sua consulta com um objeto CatalogSearchParams que inclui uma ou mais das seguintes propriedades:

PropriedadeDescrição
Tipos de RecursosUm array de Enum.AvatarAssetType tais como Entity.AvatarAssetType.BackAccessory.
Tipos de PacoteUm array de Enum.BundleType tais como Enum.BundleType .
Filtro de CategoriaUm Enum.CatalogCategoryFilter descrevendo as várias categorias de catálogo, como "Featured" ou "Criações da Comunidade". Por padrão, isso é definido como Enum.CatalogCategoryFilter.None
Preço MáximoUm número inteiro descrevendo o preço máximo para filtro.
Preço MínimoUm inteiro descrevendo o preço mínimo para filtro. Por padrão, MinPrice é 0 .
Busca por Palavra-ChaveUma string para consultar contra descrições de itens no catálogo.
Tipo de dadoUm Enum.CatalogSortType que descreve como os resultados são ordenados. Por padrão, isso é definido como Enum.CatalogSortType.Relevance.
Incluir fora de vendaUm boolo que descreve se os resultados da pesquisa incluem itens fora de venda. Por padrão, isso é definido como falso.
CriadorIdUm inteiro para especificar um criador dado. Você pode usar um UserId ou um GroupId.
Nome do CriadorUma string usada para procurar por itens criados por um criador dado. Você pode usar tanto um Nome de Usuário quanto um Nome de Grupo.

O seguinte código de exemplo CatalogSearchParams construído para Back e Shoulder tipos de recursos, e passes que atravessam por uma 2> Class.AvatarEditorService:SearchCatalog()|SearchCatalog() chamada:


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 contendo os resultados.
AvatarEditorService:SearchCatalog(catalogSearchParams)
local currentPage = pagesObject:GetCurrentPage()
for _, item in currentPage do
print(item)
end

Salvando Avatares e Roupas

Quando usado ao lado de um editor de avatar no jogo, AvatarEditorService pode salvar e atualizar itens de avatar e roupas à plataforma Roblox. Os usuários não recebem itens do 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 do catálogo existentes.
  • Qualquer configuração que o usuário tenha escolhido através de um editor de avatar no jogo.

Como AvatarEditorService:PromptSaveAvatar() não é gerado, você pode obter o resultado ouvindo o evento Class.AvatarEditorService.PromptSaveAvatarCompleted ".

O seguinte código salvará um HumanoidDescription atual 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 uma roupa (sem sobrescrever o avatar atual do usuário), use AvatarEditorService:PromptCreateOutfit() .

Uma vez chamado, você pode obter o resultado de AvatarEditorService:PromptCreateOutfit() ao ouvir o evento AvatarEditorService.PromptCreateOutfitCompleted.

O seguinte código de exemplo 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

Comprando Itens

Ao salvar um avatar ou uma roupa que usa itens do catálogo, o usuário não recebe nenhum item que eles 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 para comprar o item com MarketplaceService:PromptPurchase() .

Se você não quiser implementar compras de itens, você pode permitir que os usuários favoritos itens não possuídos com AvatarEditorService:PromptSetFavorite() .