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 gli outfit e acquistare gli articoli dell'avatar all'utente.
Raccomandiamo di implementare il servizio Editor dell'Avatar con un editor dell'avatar in gioco per un'esperienza di personalizzazione del personaggio completa. Vedi il luogo di riferimento Editor dell'Avatar Simple Demo per un esempio di questa Proprietà.
Per iniziare a utilizzare il servizio Editor Avatar, devi prima richiedere l'accesso all'Inventario, reportoriodell'utente. Dopo l'accesso concesso con successo, puoi eseguire le seguenti azioni:
- Leggi l'inventario dell'utente per ottenere una lista di oggetti posseduti dall'utente.
- Cerca il Marketplace , utilizzando una varietà di proprietà per filtrare e Ordinare.
Richiesta di accesso
Per iniziare l'accesso all'Inventario, reportoriodi un utente, è necessario richiedere all'utente di consentire l'accesso attraverso PromptAllowInventoryReadAccess() . È necessario 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 messaggio:
Una volta che l'utente accetta la richiesta, il AvatarEditorService può iniziare ad accedere all'Inventario, reportoriodell'utente.
Leggere l'inventario dell'utente
Una volta concesso l'accesso dall'utente, puoi leggere il loro inventario con la funzione GetInventory(), fornendo un'area di lavoro di AvatarAssetTypes per filtrare. Questa funzione restituisce un oggetto InventoryPages che contiene 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
Cercando il Marketplace
AvatarEditorService include funzioni e eventi che ti consentono di cercare il catalogo Roblox. Per Cercare, fornisci la tua richiesta con un oggetto CatalogSearchParams che include una o più delle seguenti proprietà:
Proprietà | Descrizione |
---|---|
Tipi di risorse | Un array di Enum.AvatarAssetType come il BackAccessory di Menu. |
Tipi di pacchetto | Un array di Enum.BundleType come ad esempio Enum.BundleType.BodyParts. |
Filtro di categoria | Un Enum.CatalogCategoryFilter che descrive le varie categorie di catalogo come "Featured" o "Community Creations". Per impostazione predefinita, questo è impostato su Enum.CatalogCategoryFilter.None |
Prezzo massimo | Un numero intero che descrive il prezzo massimo da Filtro. |
Prezzo minimo | Un numero che descrive il prezzo minimo da Filtro. Per impostazione predefinita, MinPrice è 0 . |
Parola chiave di ricerca | Una stringa per ottenere informazioni sugli oggetti nel catalogo. |
Tipo di sorting | Un Enum.CatalogSortType che descrive come vengono ordinati i risultati. Per impostazione predefinita questo è impostato su Enum.CatalogSortType.Relevance . |
IncludiOffSale | Un bool che indica se i risultati della ricerca includono articoli non in vendita. Per impostazione predefinita, questo è impostato su false. |
CreatorId | Un numero per specificare un Creatorespecificato. Puoi usare sia un UserId che un GroupId. |
NomeCreatore | Una stringa utilizzata per cercare gli elementi creati da un determinato Creatore. Puoi usare sia un nome utente che un nome di gruppo. |
Il seguente codice di esempio costruisce un oggetto CatalogSearchParams per Back e Shoulder tipi di risorse, e passa attraverso una chiamata 1> Class.AvatarEditorService:SearchCatalog()|SearchCatalog()1> :
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
Salvataggio degli Avatar e degli Outfit
Quando viene utilizzato insieme a un editor di avatar in gioco, AvatarEditorService può salvare e aggiornare gli oggetti e gli outfit dell'avatar alla PiattaformaRoblox. Gli utenti non ricevono gli oggetti di catalogo che non possiedono quando salvano un avatar o un'outfit.
Qualsiasi HumanoidDescription può essere salvato sull'avatar dell'utente con PromptSaveAvatar() . Ciò potrebbe includere:
- Configurazioni dell'avatar predefinite che hai costruito utilizzando gli elementi del catalogo esistenti.
- Qualsiasi configurazione che l'utente ha scelto attraverso un editor avatar in gioco.
Poiché AvatarEditorService:PromptSaveAvatar() non produce risultati, puoi ottenere il risultato ascoltando l'evento AvatarEditorService.PromptSaveAvatarCompleted .
Il seguente codice salverà un HumanoidDescription attuale usando PromptSaveAvatar() e controlla per 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 outfit (senza sovrascrivere l'avatar attuale dell'utente), usa AvatarEditorService:PromptCreateOutfit() .
Una volta chiamato, puoi ottenere il risultato di AvatarEditorService:PromptCreateOutfit() ascoltando l'evento AvatarEditorService.PromptCreateOutfitCompleted .
Il seguente codice di esempio crea un outfit con AvatarEditorService:PromptCreateOutfit() e ascolta per 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
Acquistare oggetti
Quando si salva un avatar o un'outfit che utilizza gli 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 fornisce loro un'opzione per acquistare l'articolo con MarketplaceService:PromptPurchase() .
Se non vuoi implementare gli acquisti di oggetti, puoi invece consentire agli utenti di preferire gli articoli non di proprietà con AvatarEditorService:PromptSetFavorite() .