Servizio Editor 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 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:

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

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 risorseUn array di Enum.AvatarAssetType come il BackAccessory di Menu.
Tipi di pacchettoUn array di Enum.BundleType come ad esempio Enum.BundleType.BodyParts.
Filtro di categoriaUn Enum.CatalogCategoryFilter che descrive le varie categorie di catalogo come "Featured" o "Community Creations". Per impostazione predefinita, questo è impostato su Enum.CatalogCategoryFilter.None
Prezzo massimoUn numero intero che descrive il prezzo massimo da Filtro.
Prezzo minimoUn numero che descrive il prezzo minimo da Filtro. Per impostazione predefinita, MinPrice è 0 .
Parola chiave di ricercaUna stringa per ottenere informazioni sugli oggetti nel catalogo.
Tipo di sortingUn Enum.CatalogSortType che descrive come vengono ordinati i risultati. Per impostazione predefinita questo è impostato su Enum.CatalogSortType.Relevance .
IncludiOffSaleUn bool che indica se i risultati della ricerca includono articoli non in vendita. Per impostazione predefinita, questo è impostato su false.
CreatorIdUn numero per specificare un Creatorespecificato. Puoi usare sia un UserId che un GroupId.
NomeCreatoreUna 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 = 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

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.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 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.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

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() .