Layanan Editor Avatar memungkinkan Anda mengakses dan membuat perubahan pada avatar pengguna dalam sebuah permainan. Layanan Editor Avatar juga dapat mengakses inventaris pengguna dan Marketplace untuk menyimpan pakaian dan membeli item avatar ke akun pengguna.
Kami merekomendasikan untuk mengimplementasikan Layanan Editor Avatar dengan editor avatar dalam permainan untuk pengalaman kustomisasi karakter yang lengkap. Lihat contoh tempat Demo Editor Avatar Sederhana untuk contoh fitur ini.
Untuk mulai menggunakan Layanan Editor Avatar, Anda harus terlebih dahulu meminta akses ke inventaris pengguna. Setelah akses berhasil diberikan, Anda dapat melakukan tindakan berikut:
- Baca inventaris pengguna untuk mendapatkan daftar item yang dimiliki oleh pengguna.
- Cari di Marketplace, menggunakan berbagai properti untuk menyaring dan mengurutkan.
- Pasang item avatar dan simpan pakaian ke avatar pengguna.
- Minta pengguna untuk membeli item Marketplace.
Meminta akses
Untuk mulai mengakses inventaris pengguna, Anda perlu meminta pengguna untuk mengizinkan akses melalui PromptAllowInventoryReadAccess(). Anda perlu melakukan permintaan ini sekali per sesi.
Gunakan contoh kode berikut untuk memulai prompt akses dan mendengarkan respons pengguna:
local AvatarEditorService = game:GetService("AvatarEditorService")AvatarEditorService:PromptAllowInventoryReadAccess()local result = AvatarEditorService.PromptAllowInventoryReadAccessCompleted:Wait()if result == Enum.AvatarPromptResult.Success then-- Akses diberikan!end
Pengguna menerima prompt berikut:

Setelah pengguna menerima prompt, AvatarEditorService dapat mulai mengakses inventaris pengguna.
Baca inventaris pengguna
Setelah akses diberikan oleh pengguna, Anda dapat membaca inventaris mereka dengan fungsi GetInventory(), dengan menyediakan array AvatarAssetTypes untuk disaring. Fungsi ini mengembalikan objek InventoryPages yang berisi item yang dimiliki pengguna.
Gunakan contoh kode berikut untuk mencetak daftar aksesori tertentu dalam inventaris pengguna:
local AvatarEditorService = game:GetService("AvatarEditorService")AvatarEditorService:PromptAllowInventoryReadAccess()local result = AvatarEditorService.PromptAllowInventoryReadAccessCompleted:Wait()if result == Enum.AvatarPromptResult.Success then-- Akses diberikan!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
Cari di Marketplace
AvatarEditorService mencakup fungsi dan acara yang memungkinkan Anda mencari katalog Roblox. Untuk mencari, berikan kueri Anda dengan objek CatalogSearchParams yang mencakup satu atau lebih dari properti berikut:
| Properti | Deskripsi |
|---|---|
| AssetTypes | Sebuah array dari Enum.AvatarAssetType seperti Enum.AvatarAssetType.BackAccessory. |
| BundleTypes | Sebuah array dari Enum.BundleType seperti Enum.BundleType.BodyParts. |
| CategoryFilter | Sebuah Enum.CatalogCategoryFilter yang menjelaskan berbagai kategori katalog seperti "Featured" atau "Community Creations". Secara default ini disetel ke Enum.CatalogCategoryFilter.None |
| MaxPrice | Sebuah integer yang menjelaskan harga maksimum untuk disaring. |
| MinPrice | Sebuah integer yang menjelaskan harga minimum untuk disaring. Secara default, MinPrice adalah 0. |
| SearchKeyword | Sebuah string untuk mengkueri deskripsi item dalam katalog. |
| SortType | Sebuah Enum.CatalogSortType yang menjelaskan bagaimana hasil diurutkan. Secara default ini disetel ke Enum.CatalogSortType.Relevance. |
| IncludeOffSale | Sebuah boolean yang menjelaskan apakah hasil pencarian termasuk item yang tidak dijual. Secara default ini disetel ke false. |
| CreatorId | Sebuah integer untuk menentukan pencipta tertentu. Anda dapat menggunakan baik UserId atau GroupId. |
| CreatorName | Sebuah string yang digunakan untuk mencari item yang dibuat oleh pencipta tertentu. Anda dapat menggunakan baik User Name atau Group Name. |
Contoh kode berikut membangun objek CatalogSearchParams untuk tipe aset Back dan Shoulder, dan meneruskannya melalui panggilan SearchCatalog():
local AvatarEditorService = game:GetService("AvatarEditorService")local catalogSearchParams = CatalogSearchParams.new()local assetTypes = {Enum.AvatarAssetType.BackAccessory,Enum.AvatarAssetType.ShoulderAccessory}catalogSearchParams.AssetTypes = assetTypeslocal pagesObject =--Fungsi ini mengembalikan objek CatalogPages yang berisi hasil.AvatarEditorService:SearchCatalog(catalogSearchParams)local currentPage = pagesObject:GetCurrentPage()for _, item in currentPage doprint(item)end
Simpan avatar dan pakaian
Ketika digunakan bersamaan dengan editor avatar dalam permainan, AvatarEditorService dapat menyimpan dan memperbarui item avatar dan pakaian ke platform Roblox. Pengguna tidak menerima item katalog yang tidak mereka miliki saat menyimpan avatar atau pakaian.
Setiap HumanoidDescription dapat disimpan ke avatar pengguna saat ini dengan PromptSaveAvatar(). Ini bisa termasuk:
- Konfigurasi avatar yang telah ditentukan sebelumnya yang telah Anda buat menggunakan item katalog yang ada.
- Setiap konfigurasi yang telah dipilih pengguna melalui editor avatar dalam permainan.

Karena AvatarEditorService:PromptSaveAvatar() tidak memberikan hasil, Anda dapat mendapatkan hasilnya dengan mendengarkan acara AvatarEditorService.PromptSaveAvatarCompleted.
Kode berikut akan menyimpan HumanoidDescription saat ini menggunakan PromptSaveAvatar() dan memeriksa keberhasilan acara 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 disimpan!end
Untuk menyimpan setiap HumanoidDescription sebagai pakaian (tanpa menimpa avatar pengguna saat ini), gunakan AvatarEditorService:PromptCreateOutfit().

Setelah dipanggil, Anda dapat mendapatkan hasil dari AvatarEditorService:PromptCreateOutfit() dengan mendengarkan acara AvatarEditorService.PromptCreateOutfitCompleted.
Contoh kode berikut membuat pakaian dengan AvatarEditorService:PromptCreateOutfit() dan mendengarkan untuk acara keberhasilan 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-- Pakaian disimpan!end
Membeli item
Saat menyimpan baik avatar atau pakaian yang menggunakan item katalog, pengguna tidak menerima item yang tidak mereka miliki. Sebelum menyimpan avatar atau pakaian, periksa apakah pengguna memiliki aset dengan MarketplaceService:PlayerOwnsAsset() dan berikan mereka opsi untuk membeli item dengan MarketplaceService:PromptPurchase().
Jika Anda tidak ingin menerapkan pembelian item, Anda dapat sebaliknya membiarkan pengguna menyukai item yang tidak dimiliki dengan AvatarEditorService:PromptSetFavorite().