Servicio de Editor de Avatares

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

El servicio de Editor de Avatar te permite acceder y hacer cambios en el avatar de un usuario dentro de una experiencia. El servicio de Editor de Avatar también puede acceder a un usuario del inventario y el Mercado para guardar conjuntos y comprar artículos de avatar para 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 obtener 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, puede realizar las siguientes acciones:

Solicitando acceso

Para comenzar a acceder al inventario de un usuario, debe solicitar al usuario que permita el acceso a través de PromptAllowInventoryReadAccess() . Debe realizar esta solicitud una vez por sesión.

Usa el siguiente código de ejemplo 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 la siguiente solicitud:

Una vez que el usuario acepte el mensaje, el AvatarEditorService puede comenzar a acceder al inventario del usuario.

Leer el inventario del usuario

Una vez que el usuario otorgue el acceso, puedes leer su inventario con la función GetInventory(), proporcionando un conjunto de AvatarAssetTypes para filtrar por. Esta función devuelve un objeto InventoryPages que contiene los elementos propiedad del usuario.

Usa el siguiente código de ejemplo 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 do
print(item)
end
end

Buscando en el Mercado

AvatarEditorService incluye funciones y eventos que le permiten buscar en el catálogo de Roblox. Para buscar, proporcione su consulta con un objeto CatalogSearchParams que incluye una o más de las siguientes propiedades:

PropiedadDescripción
Tipos de activosUn arreglo de Enum.AvatarAssetType como el arreglo de accesorios de Rück.
Tipos de paquetesUn arreglo de Enum.BundleType como Equipo de Combinación.
Filtro de categoríasUn Enum.CatalogCategoryFilter que describe las varias categorías de catálogo, como "Características Destacadas" o "Creaciones Comunitarias". Por defecto, esto está configurado como Enum.CatalogCategoryFilter.None
Precio máximoUn número que describe el precio máximo para filtro.
PrecioMinimoUn número que describe el precio mínimo para filtro. Por defecto, MinPrice es 0 .
Buscar palabra claveUna cadena para consultar contra las descripciones del artículo en el catálogo.
Tipo de clasificaciónUn Enum.CatalogSortType que describe cómo se ordenan los resultados. Por defecto, esto está configurado como Enum.CatalogSortType.Relevance .
Incluir fuera de ventaUn valor deBooleano que describe si los resultados de la búsqueda incluyen artículos no en venta. Por defecto, esto se establece como falso.
Identificación del creadorUn número para especificar un creador dado. Puedes usar tanto un ID de usuario como un ID de grupo.
NombreArtistaUna cadena que se usa para buscar por artículos creados por un creador dado. Puedes usar tanto un nombre de usuario como un nombre de grupo.

El siguiente código de ejemplo construye un objeto de CatalogSearchParams para Back y Shoulder tipos de activos, y pasa a través de una llamada de 2>Class.AvatarEditorService:SearchCatalog()|SearchCatalog()2> a:


local AvatarEditorService = game:GetService("AvatarEditorService")
local catalogSearchParams = CatalogSearchParams.new()
local assetTypes = {
Enum.AvatarAssetType.BackAccessory,
Enum.AvatarAssetType.ShoulderAccessory
}
catalogSearchParams.AssetTypes = assetTypes
local pagesObject =
--Esta función devuelve un objeto CatalogPages que contiene los resultados.
AvatarEditorService:SearchCatalog(catalogSearchParams)
local currentPage = pagesObject:GetCurrentPage()
for _, item in currentPage do
print(item)
end

Guardando avatares y conjuntos

Cuando se usa junto con un editor de avatar en el juego, AvatarEditorService puede guardar y actualizar los artículos y conjuntos de avatar en la plataforma Roblox. Los usuarios no reciben artículos del catálogo que no son propiedad cuando se guarda un avatar o conjunto.

Cualquier HumanoidDescription se puede guardar en el avatar actual del usuario con PromptSaveAvatar() . Esto puede incluir:

  • Configuraciones de avatar predefinidas que has construido usando artículos del 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 muestra el resultado, puede obtener el resultado escuchando el evento AvatarEditorService.PromptSaveAvatarCompleted .

El siguiente código guardará un HumanoidDescription actual usando PromptSaveAvatar() y verificará un evento de AvatarEditorService.PromptSaveAvatarCompleted exitoso:


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 guardado!
end

Para guardar cualquier HumanoidDescription como un atuendo (sin sobrescribir el avatar actual del usuario), usa AvatarEditorService:PromptCreateOutfit() .

Una vez que se llama, puede obtener el resultado de AvatarEditorService:PromptCreateOutfit() escuchando el evento AvatarEditorService.PromptCreateOutfitCompleted .

El siguiente código de ejemplo crea un atuendo con AvatarEditorService:PromptCreateOutfit() y escucha un evento de éxito de 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
-- ¡Atuendo guardado!
end

Comprando artículos

Cuando se guarda un avatar o un atuendo que utiliza artículos del catálogo, el usuario no recibe ningún artículo que no en posesión. Antes de guardar un atuendo o un avatar, verifique 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 compras de artículos, puede permitir que los usuarios favoritos artículos no propiedad con AvatarEditorService:PromptSetFavorite() .