Dịch vụ Trình chỉnh sửa Avatar cho phép bạn truy cập và thay đổi avatar của người dùng trong trải nghiệm.Dịch vụ Trình chỉnh sửa Avatar cũng có thể truy cập kho đồ của người dùng và Thị trường để lưu trang phục và mua vật phẩm avatar cho tài khoản của người dùng.
Chúng tôi khuyên bạn nên triển khai Dịch vụ Trình chỉnh sửa Avatar với một trình chỉnh sửa avatar trong trò chơi để có trải nghiệm tùy chỉnh nhân vật hoàn chỉnh.Xem nơi tham chiếu Đơn giản Avatar Editor Demo để có ví dụ về tính năng này.
Để bắt đầu sử dụng Dịch vụ Trình chỉnh sửa Avatar, bạn phải yêu cầu truy cập đầu tiên vào kho lưu trữ của người dùng.Sau khi truy cập được cấp phép thành công, bạn có thể thực hiện các hành động sau:
- Đọc kho hàng của người dùng để có được danh sách các vật phẩm thuộc về người dùng.
- Tìm kiếm Thị trường , sử dụng nhiều loại tính năng để lọc và sắp xếp.
- Yêu cầu người dùng mua một mặt vật phẩmtrên Marketplace.
Yêu cầu truy cập
Để bắt đầu truy cập kho hàng của người dùng, bạn cần yêu cầu người dùng cho phép truy cập thông qua PromptAllowInventoryReadAccess() .Bạn cần thực hiện yêu cầu này một lần mỗi phiên.
Sử dụng ví dụ mã sau đây để khởi tạo lời nhắc truy cập và lắng nghe phản hồi của người dùng:
local AvatarEditorService = game:GetService("AvatarEditorService")AvatarEditorService:PromptAllowInventoryReadAccess()local result = AvatarEditorService.PromptAllowInventoryReadAccessCompleted:Wait()if result == Enum.AvatarPromptResult.Success then-- Quyền truy cập được cấp!end
Người dùng nhận được lời nhắc sau:

Khi người dùng chấp nhận lời nhắc, AvatarEditorService có thể bắt đầu truy cập kho đồ của người dùng.
Đọc kho hàng của người dùng
Một khi quyền truy cập được cấp bởi người dùng, bạn có thể đọc kho hàng của họ với chức năng GetInventory(), cung cấp một mảng của AvatarAssetTypes để lọc.Chức năng này trả về một đối tượng InventoryPages chứa các vật phẩm thuộc về người dùng.
Sử dụng ví dụ mã sau đây để in một danh sách các phụ kiện cụ thể trong kho của người dùng:
local AvatarEditorService = game:GetService("AvatarEditorService")AvatarEditorService:PromptAllowInventoryReadAccess()local result = AvatarEditorService.PromptAllowInventoryReadAccessCompleted:Wait()if result == Enum.AvatarPromptResult.Success then-- Quyền truy cập được cấp!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
Tìm kiếm Thị trường
AvatarEditorService bao gồm các chức năng và sự kiện cho phép bạn tìm kiếm danh mục Roblox.Để tìm kiếm, cung cấp câu truy vấn của bạn với một đối tượng CatalogSearchParams bao gồm một hoặc nhiều trong các tính năng sau:
Tài sản | Mô tả |
---|---|
Loại tài sản | Một mảng của Enum.AvatarAssetType như Enum.AvatarAssetType.BackAccessory. |
Loại gói hàng | Một mảng của Enum.BundleType như Enum.BundleType.BodyParts. |
Bộ lọc danh mục | Một Enum.CatalogCategoryFilter mô tả các danh mục khác nhau như "Nổi bật" hoặc "Sáng tạo cộng đồng". Mặc định này được đặt thành Enum.CatalogCategoryFilter.None |
Giá tối đa | Một số nguyên tải mô tả giá tối đa để bộ lọc. |
Giá tối thiểu | Một số nguyên tải mô tả giá tối thiểu để bộ lọc. Mặc định, MinPrice là 0. |
Tìm kiếm từ khóa | Một chuỗi để truy vấn chống lại mô tả vật phẩm trong danh mục. |
Loại sắp xếp | Một Enum.CatalogSortType mô tả cách kết quả được sắp xếp. Mặc định, điều này được đặt thành Enum.CatalogSortType.Relevance . |
Bao gồm OffSale | Một boolean mô tả xem kết quả tìm kiếm có bao gồm các mặt hàng giảm giá hay không. Mặc định sẽ được đặt thành false. |
ID Nhà sáng lập | Một số nguyên để xác định một nhà sáng tạo cụ thể. Bạn có thể sử dụng một UserId hoặc một GroupId. |
Tên Tạo Viên | Một chuỗi được sử dụng để tìm kiếm các mục được tạo bởi một nhà sáng tạotạo nhất định. Bạn có thể sử dụng tên người dùng hoặc tên nhóm. |
Các mẫu mã code sau đây xây dựng một đối tượng cho Quay lại và Vai loại tài sản, và truyền đó qua một cuộc gọi ):
local AvatarEditorService = game:GetService("AvatarEditorService")local catalogSearchParams = CatalogSearchParams.new()local assetTypes = {Enum.AvatarAssetType.BackAccessory,Enum.AvatarAssetType.ShoulderAccessory}catalogSearchParams.AssetTypes = assetTypeslocal pagesObject =--Chức năng này trả về một đối tượng CatalogPages chứa kết quả.AvatarEditorService:SearchCatalog(catalogSearchParams)local currentPage = pagesObject:GetCurrentPage()for _, item in currentPage doprint(item)end
Lưu avatar và trang phục
Khi được sử dụng cùng với trình chỉnh sửa avatar trong trò chơi, AvatarEditorService có thể lưu và cập nhật các vật phẩm và trang phục avatar lên nền tảng Roblox.Người dùng không nhận được các mục danh mục họ không sở hữu khi lưu một hình ảnh hoặc trang phục avatar.
Bất kỳ HumanoidDescription nào có thể được lưu vào avatar hiện tại của người dùng với PromptSaveAvatar() . Điều này có thể bao gồm:
- Cài đặt avatar được định trước mà bạn đã xây dựng bằng cách sử dụng các mục danh mục hiện có.
- Bất kỳ cấu hình nào mà người dùng đã chọn thông qua trình chỉnh sửa avatar trong trò chơi.

Vì AvatarEditorService:PromptSaveAvatar() không cho kết quả, bạn có thể nhận được kết quả bằng cách lắng nghe sự kiện AvatarEditorService.PromptSaveAvatarCompleted.
Mã sau đây sẽ lưu một sự kiện hiện tại HumanoidDescription bằng cách sử dụng PromptSaveAvatar() và kiểm tra một sự kiện thành công 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 đã được lưu!end
Để lưu bất kỳ HumanoidDescription nào như một bộ trang phục (không ghi đè lên avatar hiện tại của người dùng), sử dụng AvatarEditorService:PromptCreateOutfit() .

Một khi được gọi, bạn có thể nhận được kết quả của AvatarEditorService:PromptCreateOutfit() bằng cách lắng nghe sự kiện AvatarEditorService.PromptCreateOutfitCompleted.
Ví dụ mã sau tạo ra một bộ trang phục với AvatarEditorService:PromptCreateOutfit() và lắng nghe một sự kiện thành công 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-- Trang phục đã lưu!end
Mua vật phẩm
Khi lưu một hình ảnh hoặc trang phục sử dụng các mục catalogue, người dùng không nhận được bất kỳ vật phẩm nào họ không sở hữu.Trước khi lưu một hình ảnh hoặc trang phục, hãy kiểm tra xem người dùng có sở hữu tài sản với MarketplaceService:PlayerOwnsAsset() và cung cấp cho họ một lựa chọn để mua vật phẩm với MarketplaceService:PromptPurchase() .
Nếu bạn không muốn triển khai mua vật phẩm, bạn có thể cho phép người dùng yêu thích các vật phẩm không sở hữu với AvatarEditorService:PromptSetFavorite() .