Avatar Düzenleyici Servisi, bir oyundaki bir kullanıcının avatarına erişmenizi ve değişiklik yapmanızı sağlar. Avatar Düzenleyici Servisi, bir kullanıcının envanterine ve kullanıcının hesabına kıyafetleri kaydetmek ve avatar öğeleri satın almak için Pazar Yeri'ne de erişebilir.
Tam bir karakter özelleştirme deneyimi için Avatar Düzenleyici Servisi'ni oyun içi bir avatar düzenleyicisi ile uygulamanızı öneririz. Bu özelliğin bir örneği için Basit Avatar Düzenleyici Demo referans yerini inceleyin.
Avatar Düzenleyici Servisi'ni kullanmaya başlamak için önce kullanıcının envanterine erişim talep etmeniz gerekir. Erişim başarıyla verildikten sonra, aşağıdaki işlemleri gerçekleştirebilirsiniz:
- Kullanıcının envanterini okuyun ve kullanıcının sahip olduğu öğelerin bir listesini alın.
- Çeşitli özellikler kullanarak Pazar Yerinde arama yapın.
- Kullanıcının avatarına avatar öğelerini yükleyin ve kıyafetleri kaydedin.
- Kullanıcıya bir Pazar Yeri öğesi satın alması için öneride bulunun.
Erişim talep etme
Bir kullanıcının envanterine erişmeye başlamak için, kullanıcıdan PromptAllowInventoryReadAccess() ile erişime izin vermesini istemeniz gerekir. Bu isteği her oturumda bir kez gerçekleştirmeniz gerekmektedir.
Erişim isteme ve kullanıcı yanıtını dinleme işlemini başlatmak için aşağıdaki kod örneğini kullanın:
local AvatarEditorService = game:GetService("AvatarEditorService")AvatarEditorService:PromptAllowInventoryReadAccess()local result = AvatarEditorService.PromptAllowInventoryReadAccessCompleted:Wait()if result == Enum.AvatarPromptResult.Success then-- Erişim verildi!end
Kullanıcı, aşağıdaki isteği alır:

Kullanıcı isteği kabul ettikten sonra, AvatarEditorService kullanıcının envanterine erişmeye başlayabilir.
Kullanıcı envanterini okuma
Kullanıcı erişimi sağladıktan sonra, GetInventory() işlevini kullanarak envanterlerini okuyabilirsiniz. Bu işlev, filtrelemek için bir dizi AvatarAssetTypes sağlamanızı gerektirir. Bu işlev, kullanıcının sahip olduğu öğeleri içeren bir InventoryPages nesnesi döndürür.
Bir kullanıcının envanterindeki belirli aksesuarların bir listesini yazdırmak için aşağıdaki kod örneğini kullanın:
local AvatarEditorService = game:GetService("AvatarEditorService")AvatarEditorService:PromptAllowInventoryReadAccess()local result = AvatarEditorService.PromptAllowInventoryReadAccessCompleted:Wait()if result == Enum.AvatarPromptResult.Success then-- Erişim verildi!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
Pazar Yerinde arama
AvatarEditorService, Roblox kataloğunda arama yapmanızı sağlayan işlevler ve olaylar içerir. Arama yapmak için, bir veya daha fazla aşağıdaki özelliği içeren bir CatalogSearchParams nesnesi ile sorgunuzu sağlamanız gerekir:
| Özellik | Açıklama |
|---|---|
| AssetTypes | Enum.AvatarAssetType gibi bir dizi Enum.AvatarAssetType (örn. Enum.AvatarAssetType.BackAccessory). |
| BundleTypes | Enum.BundleType gibi bir dizi Enum.BundleType (örn. Enum.BundleType.BodyParts). |
| CategoryFilter | “Öne Çıkanlar” veya “Topluluk Yaratımları” gibi çeşitli katalog kategorilerini tanımlayan bir Enum.CatalogCategoryFilter. Varsayılan olarak bu Enum.CatalogCategoryFilter.None olarak ayarlanmıştır. |
| MaxPrice | Filtrelemek için maksimum fiyatı tanımlayan bir tamsayı. |
| MinPrice | Filtrelemek için minimum fiyatı tanımlayan bir tamsayı. Varsayılan olarak, MinPrice 0’dır. |
| SearchKeyword | Katalogda bulunan öğelerin açıklamaları ile sorgulamak için kullanılan bir dize. |
| SortType | Sonuçların nasıl sıralandığını tanımlayan bir Enum.CatalogSortType. Varsayılan olarak bu Enum.CatalogSortType.Relevance olarak ayarlanmıştır. |
| IncludeOffSale | Arama sonuçlarının satışı durdurulmuş öğeleri içerip içermediğini tanımlayan bir boolean. Varsayılan olarak bu false olarak ayarlanmıştır. |
| CreatorId | Belirli bir yaratıcıyı belirtmek için bir tamsayı. Hem UserId hem de GroupId kullanabilirsiniz. |
| CreatorName | Belirli bir yaratıcı tarafından oluşturulan öğeleri aramak için kullanılan bir dize. Hem Kullanıcı Adı hem de Grup Adı kullanabilirsiniz. |
Aşağıdaki kod örneği, Sırt ve Omuz varlık türleri için bir CatalogSearchParams nesnesi oluşturur ve bunu SearchCatalog() çağrısına geçirir:
local AvatarEditorService = game:GetService("AvatarEditorService")local catalogSearchParams = CatalogSearchParams.new()local assetTypes = {Enum.AvatarAssetType.BackAccessory,Enum.AvatarAssetType.ShoulderAccessory}catalogSearchParams.AssetTypes = assetTypeslocal pagesObject =--Bu işlev, sonuçları içeren bir CatalogPages nesnesi döndürür.AvatarEditorService:SearchCatalog(catalogSearchParams)local currentPage = pagesObject:GetCurrentPage()for _, item in currentPage doprint(item)end
Avatar ve kıyafetleri kaydetme
Oyun içi bir avatar düzenleyicisi ile birlikte kullanıldığında, AvatarEditorService avatar öğelerini ve kıyafetleri Roblox platformuna kaydedebilir ve güncelleyebilir. Kullanıcılar, bir avatar veya kıyafet kaydederken sahip olmadıkları katalog öğelerini almazlar.
Herhangi bir HumanoidDescription, PromptSaveAvatar() ile kullanıcının mevcut avatarına kaydedilebilir. Bu aşağıdakileri içerebilir:
- Mevcut katalog öğeleri kullanarak oluşturduğunuz önceden tanımlanmış avatar yapılandırmaları.
- Kullanıcının oyun içi avatar düzenleyici aracılığıyla seçtiği herhangi bir yapılandırma.

AvatarEditorService:PromptSaveAvatar() wait etmediği için, sonucu AvatarEditorService.PromptSaveAvatarCompleted olayını dinleyerek alabilirsiniz.
Aşağıdaki kod, PromptSaveAvatar() kullanarak mevcut bir HumanoidDescription'ı kaydeder ve başarılı bir AvatarEditorService.PromptSaveAvatarCompleted olayı kontrol eder:
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 kaydedildi!end
Kullanıcının mevcut avatarını geçersiz kılmadan herhangi bir HumanoidDescription'ı kıyafet olarak kaydetmek için AvatarEditorService:PromptCreateOutfit() kullanın.

Çağrıldıktan sonra, AvatarEditorService:PromptCreateOutfit() sonucunu AvatarEditorService.PromptCreateOutfitCompleted olayını dinleyerek alabilirsiniz.
Aşağıdaki kod örneği, AvatarEditorService:PromptCreateOutfit() ile bir kıyafet oluşturur ve başarılı bir AvatarEditorService.PromptCreateOutfitCompleted olayı dinler:
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-- Kıyafet kaydedildi!end
Öğeleri satın alma
Katalog öğeleri kullanan bir avatar veya kıyafet kaydederken, kullanıcı sahip olmadıkları hiçbir öğeyi almaz. Bir avatar veya kıyafet kaydetmeden önce, kullanıcının varlığa sahip olup olmadığını MarketplaceService:PlayerOwnsAsset() ile kontrol edin ve onlara öğeyi satın alma seçeneği sunun MarketplaceService:PromptPurchase() kullanarak.
Öğeleri satın alma işlemini uygulamak istemiyorsanız, bunun yerine kullanıcıların sahip olmadıkları öğeleri AvatarEditorService:PromptSetFavorite() ile favorilerine eklemesine izin verebilirsiniz.