El servicio de editor de avatares te permite acceder y hacer cambios en el avatar de un usuario dentro de una experiencia.El servicio de editor de avatares también puede acceder al inventario de un usuario y al mercado para guardar trajes y comprar artículos de avatar a la cuenta del usuario.
Recomendamos implementar el servicio de editor de avatar con un editor de avatar en el juego para una experiencia de personalización de personajes completa.Vea el lugar de referencia Simple Avatar Editor Demo para un ejemplo de esta función.
Para comenzar a usar el servicio de editor de avatares, debe solicitar primero acceso al inventario del usuario.Después de que se otorgue el acceso con éxito, puedes realizar las siguientes acciones:
- Leer el inventario del usuario para obtener una lista de artículos propiedad del usuario.
- Buscar en el mercado , usando una variedad de propiedades para filtrar y ordenar.
- Equipa artículos de avatar y guarda atuendos en el avatar del usuario.
- Solicite al usuario que compre un objetodel mercado.
Solicitar acceso
Para comenzar a acceder al inventario de un usuario, debe solicitar al usuario que permita el acceso a través de PromptAllowInventoryReadAccess() .Necesitas realizar esta solicitud una vez por sesión.
Usa el siguiente ejemplo de código para iniciar la solicitud de acceso y escuchar la respuesta del usuario:
local AvatarEditorService = game:GetService("AvatarEditorService")AvatarEditorService:PromptAllowInventoryReadAccess()local result = AvatarEditorService.PromptAllowInventoryReadAccessCompleted:Wait()if result == Enum.AvatarPromptResult.Success then-- Acceso concedido!end
El usuario recibe el siguiente mensaje:

Una vez que el usuario acepte la solicitud, el AvatarEditorService puede comenzar a acceder al inventario del usuario.
Leer inventario de usuario
Una vez que el usuario tenga acceso, puedes leer su inventario con la función GetInventory(), que suministra un array de AvatarAssetTypes para filtrar.Esta función devuelve un objeto InventoryPages que contiene los elementos propiedad del usuario.
Usa el siguiente ejemplo de código para imprimir una lista de accesorios específicos en el inventario de un usuario:
local AvatarEditorService = game:GetService("AvatarEditorService")AvatarEditorService:PromptAllowInventoryReadAccess()local result = AvatarEditorService.PromptAllowInventoryReadAccessCompleted:Wait()if result == Enum.AvatarPromptResult.Success then-- Acceso 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
Buscar en el mercado
AvatarEditorService incluye funciones y eventos que te permiten buscar el catálogo de Roblox.Para buscar, suministre su consulta con un objeto CatalogSearchParams que incluya una o más de las siguientes propiedades:
Propiedad | Descripción |
---|---|
Tipos de activos | Un array de Enum.AvatarAssetType como Enum.AvatarAssetType.BackAccessory. |
Tipos de paquete | Un array de Enum.BundleType tales como Enum.BundleType.BodyParts. |
Filtro de categoría | Un Enum.CatalogCategoryFilter describiendo las diversas categorías de catálogo como "Destacado" o "Creaciones comunitarias". Por defecto, esto se establece en Enum.CatalogCategoryFilter.None |
Precio máximo | Un entero que describe el precio máximo para filtro. |
Precio mínimo | Un entero que describe el precio mínimo para filtro. Por defecto, MinPrice es 0. |
Buscar palabra clave | Una cadena para consultar contra las descripciones de los artículos en el catálogo. |
Tipo de clasificación | Un Enum.CatalogSortType que describe cómo se ordenan los resultados. Por defecto, esto se establece en Enum.CatalogSortType.Relevance . |
Incluir fuera de venta | Un booleano que describe si los resultados de la búsqueda incluyen artículos fuera de venta. Por defecto, esto se establece en falso. |
CreadorId | Un entero para especificar un creador dado. Puedes usar un UserId o un GroupId. |
Nombre del creador | Una cadena utilizada para buscar por artículos creados por un creador determinado. Puedes usar un nombre de usuario o un nombre de grupo. |
Los siguientes ejemplos de código construyen un objeto CatalogSearchParams para espalda y tipo de hombro tipos de activos, y lo pasan a través de una llamada SearchCatalog():
local AvatarEditorService = game:GetService("AvatarEditorService")local catalogSearchParams = CatalogSearchParams.new()local assetTypes = {Enum.AvatarAssetType.BackAccessory,Enum.AvatarAssetType.ShoulderAccessory}catalogSearchParams.AssetTypes = assetTypeslocal pagesObject =--Esta función devuelve un objeto CatalogPages que contiene los resultados.AvatarEditorService:SearchCatalog(catalogSearchParams)local currentPage = pagesObject:GetCurrentPage()for _, item in currentPage doprint(item)end
Guardar avatares y atuendos
Cuando se usa junto con un editor de avatar en el juego, AvatarEditorService puede guardar y actualizar artículos y atuendos de avatar en la plataforma de Roblox.Los usuarios no reciben artículos de catálogo que no poseen al guardar un avatar o atuendo.
Cualquier HumanoidDescription se puede guardar en el avatar actual del usuario con PromptSaveAvatar() . Esto puede incluir:
- Configuraciones de avatar predefinidas que has construido utilizando elementos de catálogo existentes.
- Cualquier configuración que el usuario haya elegido a través de un editor de avatar en el juego.

Dado que AvatarEditorService:PromptSaveAvatar() no produce resultados, puedes obtener el resultado escuchando el evento AvatarEditorService.PromptSaveAvatarCompleted.
El siguiente código guardará un actual HumanoidDescription usando PromptSaveAvatar() y verificará un evento exitoso de 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 guardado!end
Para guardar cualquier HumanoidDescription como un atuendo (sin reemplazar el avatar actual del usuario), use AvatarEditorService:PromptCreateOutfit() .

Una vez llamado, puedes obtener el resultado de AvatarEditorService:PromptCreateOutfit() escuchando el evento AvatarEditorService.PromptCreateOutfitCompleted.
El siguiente ejemplo de código crea un atuendo con AvatarEditorService:PromptCreateOutfit() y escucha un evento exitoso 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-- ¡Atuendo guardado!end
Comprar artículos
Al guardar un avatar o un atuendo que utiliza artículos de catálogo, el usuario no recibe ningún artículo que no en posesión.Antes de guardar un avatar o un atuendo, compruebe si el usuario posee el activo con MarketplaceService:PlayerOwnsAsset() y proporcione una opción para comprar el artículo con MarketplaceService:PromptPurchase() .
Si no desea implementar las compras de artículos, puede permitir a los usuarios favoritar artículos no adquiridos con AvatarEditorService:PromptSetFavorite() .