Dịch vụ Chỉnh sửa Avatar

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

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:

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

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ảnMô tả
Loại tài sảnMột mảng của Enum.AvatarAssetType như Enum.AvatarAssetType.BackAccessory.
Loại gói hàngMột mảng của Enum.BundleType như Enum.BundleType.BodyParts.
Bộ lọc danh mụcMộ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 đaMột số nguyên tải mô tả giá tối đa để bộ lọc.
Giá tối thiểuMộ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óaMộ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ếpMộ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 OffSaleMộ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ậpMộ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ênMộ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 = assetTypes
local 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 do
print(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.

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.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 đã đượ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.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
-- 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() .