Servizio Editor di Avatar

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

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:

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 do
print(item)
end
end

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 risorsaUn array di Enum.AvatarAssetType come Enum.AvatarAssetType.BackAccessory.
Tipi di bundleUn array di Enum.BundleType come Enum.BundleType.BodyParts.
Filtro di categoriaUn Enum.CatalogCategoryFilter che descrive le diverse categorie di catalogo come "Featured" o "Community Creations". Per impostazione predefinita questo è impostato su Enum.CatalogCategoryFilter.None
Prezzo massimoUn intero che descrive il prezzo massimo da Filtro.
Prezzo minimoUn intero che descrive il prezzo minimo da Filtro. Per impostazione predefinita, MinPrice è 0.
Cerca parola chiaveUna stringa per interrogare le descrizioni degli oggetti nel catalogo.
Tipo di ordinamentoA Enum.CatalogSortType che descrive come vengono ordinati i risultati. Per impostazione predefinita questo è impostato su Enum.CatalogSortType.Relevance .
IncludiOffSaleUn booleano che descrive se i risultati della ricerca includono oggetti in sconto. Per impostazione predefinita questo è impostato su false.
CreatorIdUn intero per specificare un Creatoredato. Puoi usare un UserId o un GroupId.
NomeCreatoreUna 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 = assetTypes
local pagesObject =
--Questa funzione restituisce un oggetto CatalogPages che contiene i risultati.
AvatarEditorService:SearchCatalog(catalogSearchParams)
local currentPage = pagesObject:GetCurrentPage()
for _, item in currentPage do
print(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.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 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.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
-- 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() .