Il servizio Editor Avatar ti consente di accedere e apportare modifiche all'avatar di un utente all'interno di un'esperienza.Il servizio Editor Avatar può anche accedere all'inventario di un utente e al Marketplace per salvare abiti e acquistare oggetti avatar all'Accountdell'utente.
Consigliamo di implementare il servizio Editor dell'Avatar con un editor di avatar in gioco per una completa esperienza di personalizzazione del personaggio.Vedi il luogo di riferimento Simple Avatar Editor Demo per un esempio di questa Proprietà.
Per iniziare ad utilizzare il servizio Editor Avatar, devi prima richiedere l'accesso all'Inventario, reportoriodell'utente.Dopo che l'accesso è stato concesso con successo, puoi eseguire le seguenti azioni:
- Leggi l'inventario dell'utente per ottenere un elenco di oggetti posseduti dall'utente.
- Cerca il Marketplace , utilizzando una varietà di proprietà per filtrare e Ordinare.
- Equipaggia oggetti avatar e salva abiti sull'Avatardell'utente.
- Richiedi all'utente di acquistare un Articolodel Marketplace.
Richiedi l'Accesso
Per iniziare ad accedere all'Inventario, reportoriodi un utente, devi richiedere all'utente di consentire l'accesso attraverso PromptAllowInventoryReadAccess() .Devi eseguire questa richiesta una volta per Sessione.
Usa il seguente esempio di codice per iniziare la richiesta di accesso e ascoltare la risposta dell'utente:
local AvatarEditorService = game:GetService("AvatarEditorService")AvatarEditorService:PromptAllowInventoryReadAccess()local result = AvatarEditorService.PromptAllowInventoryReadAccessCompleted:Wait()if result == Enum.AvatarPromptResult.Success then-- Accesso concesso!end
L'utente riceve il seguente prompt:

Una volta che l'utente accetta la richiesta, il AvatarEditorService può iniziare ad accedere all'Inventario, reportoriodell'utente.
Leggi Inventario, reportorioutente
Una volta concesso l'accesso dall'utente, puoi leggere il loro inventario con la funzione GetInventory(), fornendo un'array di AvatarAssetTypes da filtrare.Questa funzione restituisce un oggetto InventoryPages contenente gli oggetti di proprietà dell'utente.
Usa il seguente esempio di codice per stampare un elenco di accessori specifici nell'Inventario, reportoriodi un utente:
local AvatarEditorService = game:GetService("AvatarEditorService")AvatarEditorService:PromptAllowInventoryReadAccess()local result = AvatarEditorService.PromptAllowInventoryReadAccessCompleted:Wait()if result == Enum.AvatarPromptResult.Success then-- Accesso concesso!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
Cerca nel Marketplace
AvatarEditorService include funzioni e eventi che ti consentono di cercare nel catalogo Roblox.Per Cercare, fornisci la tua query con un oggetto CatalogSearchParams che include una o più delle seguenti proprietà:
Proprietà | Descrizione |
---|---|
Tipi di risorsa | Un array di Enum.AvatarAssetType come Enum.AvatarAssetType.BackAccessory. |
Tipi di bundle | Un array di Enum.BundleType come Enum.BundleType.BodyParts. |
Filtro di categoria | Un Enum.CatalogCategoryFilter che descrive le diverse categorie di catalogo come "Featured" o "Community Creations". Per impostazione predefinita questo è impostato su Enum.CatalogCategoryFilter.None |
Prezzo massimo | Un intero che descrive il prezzo massimo da Filtro. |
Prezzo minimo | Un intero che descrive il prezzo minimo da Filtro. Per impostazione predefinita, MinPrice è 0. |
Cerca parola chiave | Una stringa per interrogare le descrizioni degli oggetti nel catalogo. |
Tipo di ordinamento | A Enum.CatalogSortType che descrive come vengono ordinati i risultati. Per impostazione predefinita questo è impostato su Enum.CatalogSortType.Relevance . |
IncludiOffSale | Un booleano che descrive se i risultati della ricerca includono oggetti in sconto. Per impostazione predefinita questo è impostato su false. |
CreatorId | Un intero per specificare un Creatoredato. Puoi usare un UserId o un GroupId. |
NomeCreatore | Una stringa utilizzata per cercare gli oggetti creati da un dato Creatore. Puoi utilizzare sia un nome utente che un nome di gruppo. |
Il seguente esempio di codice costruisce un oggetto CatalogSearchParams per Back e Shoulder tipi di risorse, e lo passa attraverso una chiamata SearchCatalog():
local AvatarEditorService = game:GetService("AvatarEditorService")local catalogSearchParams = CatalogSearchParams.new()local assetTypes = {Enum.AvatarAssetType.BackAccessory,Enum.AvatarAssetType.ShoulderAccessory}catalogSearchParams.AssetTypes = assetTypeslocal pagesObject =--Questa funzione restituisce un oggetto CatalogPages che contiene i risultati.AvatarEditorService:SearchCatalog(catalogSearchParams)local currentPage = pagesObject:GetCurrentPage()for _, item in currentPage doprint(item)end
Salva avatar e abiti
Quando viene utilizzato insieme a un editor di avatar in gioco, AvatarEditorService può salvare e aggiornare gli oggetti e gli abiti dell'avatar sulla PiattaformaRoblox.Gli utenti non ricevono oggetti del catalogo che non possiedono quando salvano un avatar o un outfit.
Qualsiasi HumanoidDescription può essere salvato sull'avatar attuale dell'utente con PromptSaveAvatar() . Questo può includere:
- Configurazioni di avatar predefinite che hai costruito utilizzando oggetti del catalogo esistenti.
- Qualsiasi configurazione che l'utente ha scelto attraverso un editor di avatar in gioco.

Dal momento che AvatarEditorService:PromptSaveAvatar() non produce risultati, puoi ottenere il risultato ascoltando l'evento AvatarEditorService.PromptSaveAvatarCompleted.
Il seguente codice salverà un attuale HumanoidDescription utilizzando PromptSaveAvatar() e controllerà un evento di successo 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 salvato!end
Per salvare qualsiasi HumanoidDescription come abito (senza sovrascrivere l'Avatarattuale dell'utente), usa AvatarEditorService:PromptCreateOutfit() .

Una volta chiamato, puoi ottenere il risultato di AvatarEditorService:PromptCreateOutfit() ascoltando l'evento AvatarEditorService.PromptCreateOutfitCompleted.
Il seguente esempio di codice crea un outfit con AvatarEditorService:PromptCreateOutfit() e ascolta un evento di successo 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-- Vestito salvato!end
Acquista oggetti
Durante il salvataggio di un avatar o di un abito che utilizza oggetti del catalogo, l'utente non riceve alcun oggetto che non Proprio.Prima di salvare un avatar o un outfit, controlla se l'utente possiede l'asset con MarketplaceService:PlayerOwnsAsset() e fornisci loro un'opzione per acquistare l'oggetto con MarketplaceService:PromptPurchase() .
Se non desideri implementare gli acquisti di oggetti, puoi invece consentire agli utenti di preferire oggetti non di proprietà con AvatarEditorService:PromptSetFavorite() .