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 doprint(item)endend
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:
Propriedade | Descrição |
---|---|
Tipos de Recursos | Um array de Enum.AvatarAssetType tais como Entity.AvatarAssetType.BackAccessory. |
Tipos de Pacote | Um array de Enum.BundleType tais como Enum.BundleType . |
Filtro de Categoria | Um 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áximo | Um número inteiro descrevendo o preço máximo para filtro. |
Preço Mínimo | Um inteiro descrevendo o preço mínimo para filtro. Por padrão, MinPrice é 0 . |
Busca por Palavra-Chave | Uma string para consultar contra descrições de itens no catálogo. |
Tipo de dado | Um Enum.CatalogSortType que descreve como os resultados são ordenados. Por padrão, isso é definido como Enum.CatalogSortType.Relevance. |
Incluir fora de venda | Um boolo que descreve se os resultados da pesquisa incluem itens fora de venda. Por padrão, isso é definido como falso. |
CriadorId | Um inteiro para especificar um criador dado. Você pode usar um UserId ou um GroupId. |
Nome do Criador | Uma 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 = assetTypeslocal pagesObject =--Essa função retorna um objeto CatalogPages contendo os resultados.AvatarEditorService:SearchCatalog(catalogSearchParams)local currentPage = pagesObject:GetCurrentPage()for _, item in currentPage doprint(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.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 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.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
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() .