아바타 편집기 서비스

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

아바타 편집기 서비스는 게임 내에서 사용자의 아바타에 접근하고 변경할 수 있게 해줍니다. 아바타 편집기 서비스를 통해 사용자의 인벤토리와 마켓플레이스에 접근하여 아바타 아이템을 구매하고 아바타 의상을 저장할 수 있습니다.

완전한 캐릭터 커스터마이징 경험을 위해 인게임 아바타 편집기와 함께 아바타 편집기 서비스를 구현하는 것을 권장합니다. 이 기능의 예시로 간단한 아바타 편집기 데모 참조 장소를 참조하십시오.

아바타 편집기 서비스를 사용하려면 먼저 사용자 인벤토리에 대한 접근 요청을 해야 합니다. 접근이 성공적으로 허용되면 다음 작업을 수행할 수 있습니다:

접근 요청

사용자의 인벤토리에 접근하기 위해 사용자에게 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 do
print(item)
end
end

마켓플레이스 검색

AvatarEditorService는 Roblox 카탈로그를 검색할 수 있는 함수 및 이벤트를 포함합니다. 검색하려면 CatalogSearchParams 객체로 쿼리를 제공해야 하며, 이 객체는 다음 속성 중 하나 이상을 포함해야 합니다:

속성설명
AssetTypesEnum.AvatarAssetType.BackAccessory와 같은 Enum.AvatarAssetType의 배열입니다.
BundleTypesEnum.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 = assetTypes
local pagesObject =
-- 이 함수는 결과를 포함하는 CatalogPages 객체를 반환합니다.
AvatarEditorService:SearchCatalog(catalogSearchParams)
local currentPage = pagesObject:GetCurrentPage()
for _, item in currentPage do
print(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.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
-- 아바타가 저장되었습니다!
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.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
-- 의상이 저장되었습니다!
end

아이템 구매

카탈로그 아이템을 사용하는 아바타 또는 의상을 저장할 때 사용자가 소유하지 않은 아이템은 수령하지 않습니다. 아바타나 의상을 저장하기 전에 MarketplaceService:PlayerOwnsAsset()를 사용하여 사용자가 자산을 소유하고 있는지 확인하고, MarketplaceService:PromptPurchase()를 사용하여 아이템 구매 옵션을 제공하십시오.

아이템 구매를 구현하고 싶지 않은 경우, 대신에 사용자가 소유하지 않은 아이템을 즐겨찾기로 남길 수 있도록 AvatarEditorService:PromptSetFavorite()을 사용할 수 있습니다.

©2026 Roblox Corporation. Roblox 및 Roblox 로고, 'Powering Imagination'은 미국 및 기타 국가 내 당사의 등록 및 미등록 상표입니다.