아바타 편집기 서비스는 게임 내에서 사용자의 아바타에 접근하고 변경할 수 있게 해줍니다. 아바타 편집기 서비스를 통해 사용자의 인벤토리와 마켓플레이스에 접근하여 아바타 아이템을 구매하고 아바타 의상을 저장할 수 있습니다.
완전한 캐릭터 커스터마이징 경험을 위해 인게임 아바타 편집기와 함께 아바타 편집기 서비스를 구현하는 것을 권장합니다. 이 기능의 예시로 간단한 아바타 편집기 데모 참조 장소를 참조하십시오.
아바타 편집기 서비스를 사용하려면 먼저 사용자 인벤토리에 대한 접근 요청을 해야 합니다. 접근이 성공적으로 허용되면 다음 작업을 수행할 수 있습니다:
- 사용자의 인벤토리 읽기로 사용자가 소유한 아이템의 목록을 얻습니다.
- 다양한 속성을 사용하여 마켓플레이스 검색 필터링 및 정렬합니다.
- 아바타 아이템 장착 및 의상 저장 사용자의 아바타에.
- 사용자에게 구매 요청 마켓플레이스 아이템.
접근 요청
사용자의 인벤토리에 접근하기 위해 사용자에게 PromptAllowInventoryReadAccess()를 통해 접근을 허용하도록 요청해야 합니다. 이 요청은 세션당 한 번 수행해야 합니다.
다음 코드 샘플을 사용하여 접근 요청을 시작하고 사용자 응답을 수신합니다:
local AvatarEditorService = game:GetService("AvatarEditorService")AvatarEditorService:PromptAllowInventoryReadAccess()local result = AvatarEditorService.PromptAllowInventoryReadAccessCompleted:Wait()if result == Enum.AvatarPromptResult.Success then-- 접근 허용됨!end
사용자는 다음과 같은 프롬프트를 받습니다:

사용자가 프롬프트를 수락하면 AvatarEditorService가 사용자의 인벤토리에 접근할 수 있습니다.
사용자 인벤토리 읽기
사용자가 접근을 허용하면 GetInventory() 함수를 사용하여 인벤토리를 읽을 수 있으며, 검토할 AvatarAssetTypes 배열을 제공해야 합니다. 이 함수는 사용자가 소유한 아이템을 포함하는 InventoryPages 객체를 반환합니다.
사용자의 인벤토리에서 특정 액세서리 목록을 출력하는 다음 코드 샘플을 사용하십시오:
local AvatarEditorService = game:GetService("AvatarEditorService")AvatarEditorService:PromptAllowInventoryReadAccess()local result = AvatarEditorService.PromptAllowInventoryReadAccessCompleted:Wait()if result == Enum.AvatarPromptResult.Success then-- 접근 허용됨!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
마켓플레이스 검색
AvatarEditorService는 Roblox 카탈로그를 검색할 수 있는 함수 및 이벤트를 포함합니다. 검색하려면 CatalogSearchParams 객체로 쿼리를 제공해야 하며, 이 객체는 다음 속성 중 하나 이상을 포함해야 합니다:
| 속성 | 설명 |
|---|---|
| AssetTypes | Enum.AvatarAssetType.BackAccessory와 같은 Enum.AvatarAssetType의 배열입니다. |
| BundleTypes | Enum.BundleType.BodyParts와 같은 Enum.BundleType의 배열입니다. |
| CategoryFilter | "추천" 또는 "커뮤니티 제작"과 같은 다양한 카탈로그 카테고리를 설명하는 Enum.CatalogCategoryFilter입니다. 기본값은 Enum.CatalogCategoryFilter.None입니다. |
| MaxPrice | 필터링할 최대 가격을 설명하는 정수입니다. |
| MinPrice | 필터링할 최소 가격을 설명하는 정수입니다. 기본값은 0입니다. |
| SearchKeyword | 카탈로그의 아이템 설명과 비교할 문자열입니다. |
| SortType | 결과가 정렬되는 방식을 설명하는 Enum.CatalogSortType입니다. 기본값은 Enum.CatalogSortType.Relevance입니다. |
| IncludeOffSale | 검색 결과에 오프세일 아이템이 포함되는지 여부를 설명하는 부울입니다. 기본값은 false입니다. |
| CreatorId | 주어진 제작자를 지정하기 위한 정수입니다. UserId 또는 GroupId를 사용할 수 있습니다. |
| CreatorName | 주어진 제작자가 만든 아이템을 검색하는 데 사용되는 문자열입니다. 사용자 이름 또는 그룹 이름을 사용할 수 있습니다. |
다음 코드 샘플은 등 뒤 및 어깨 자산 타입에 대한 CatalogSearchParams 객체를 생성하고, 이를 통해 SearchCatalog() 호출을 수행합니다:
local AvatarEditorService = game:GetService("AvatarEditorService")local catalogSearchParams = CatalogSearchParams.new()local assetTypes = {Enum.AvatarAssetType.BackAccessory,Enum.AvatarAssetType.ShoulderAccessory}catalogSearchParams.AssetTypes = assetTypeslocal pagesObject =-- 이 함수는 결과를 포함하는 CatalogPages 객체를 반환합니다.AvatarEditorService:SearchCatalog(catalogSearchParams)local currentPage = pagesObject:GetCurrentPage()for _, item in currentPage doprint(item)end
아바타 및 의상 저장
인게임 아바타 편집기와 함께 사용하면 AvatarEditorService는 아바타 아이템과 의상을 Roblox 플랫폼에 저장하고 업데이트할 수 있습니다. 사용자가 아바타나 의상을 저장할 때 소유하지 않은 카탈로그 아이템은 받지 않습니다.
임의의 HumanoidDescription을 사용자의 현재 아바타에 저장하는 데는 PromptSaveAvatar()를 사용할 수 있습니다. 여기에는 다음이 포함될 수 있습니다:
- 기존 카탈로그 아이템을 사용하여 구축한 미리 정의된 아바타 구성.
- 사용자가 인게임 아바타 편집기를 통해 선택한 구성.

AvatarEditorService:PromptSaveAvatar()는 유휴 상태가 아니므로 AvatarEditorService.PromptSaveAvatarCompleted 이벤트를 수신하여 결과를 얻을 수 있습니다.
다음 코드는 PromptSaveAvatar()를 사용하여 현재 HumanoidDescription을 저장하고 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-- 아바타가 저장되었습니다!end
임의의 HumanoidDescription을 의상으로 저장할 때 (사용자의 현재 아바타를 덮어쓰지 않음) AvatarEditorService:PromptCreateOutfit()를 사용하십시오.

호출이 끝난 후 AvatarEditorService:PromptCreateOutfit()의 결과를 듣기 위해 AvatarEditorService.PromptCreateOutfitCompleted 이벤트를 수신할 수 있습니다.
다음 코드 샘플은 AvatarEditorService:PromptCreateOutfit()를 사용하여 의상을 생성하고 성공적인 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-- 의상이 저장되었습니다!end
아이템 구매
카탈로그 아이템을 사용하는 아바타 또는 의상을 저장할 때 사용자가 소유하지 않은 아이템은 수령하지 않습니다. 아바타나 의상을 저장하기 전에 MarketplaceService:PlayerOwnsAsset()를 사용하여 사용자가 자산을 소유하고 있는지 확인하고, MarketplaceService:PromptPurchase()를 사용하여 아이템 구매 옵션을 제공하십시오.
아이템 구매를 구현하고 싶지 않은 경우, 대신에 사용자가 소유하지 않은 아이템을 즐겨찾기로 남길 수 있도록 AvatarEditorService:PromptSetFavorite()을 사용할 수 있습니다.