아바타 편집기 서비스

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

아바타 편집기 서비스를 사용하면 경험 내에서 사용자의 아바타에 액세스하고 변경할 수 있습니다.아바타 편집기 서비스는 사용자의 인벤토리와 마켓플레이스에도 액세스할 수 있으며, 사용자 계정에 의상을 저장하고 아바타 아이템을 구매하여 사용자의 계정에 저장할 수 있습니다.

완전한 캐릭터 사용자 정의 경험을 위해 게임 내 아바타 편집기로 Avatar Editor 서비스를 구현하는 것을 권장합니다.이 기능의 예를 보려면 간단한 아바타 편집기 데모 참조 장소를 참조하십시오.

아바타 편집기 서비스를 사용하기 시작하려면 먼저 사용자의 인벤토리에 액세스를 요청해야 합니다.액세스가 성공적으로 부여된 후에는 다음 작업을 수행할 수 있습니다:

액세스 요청

사용자의 인벤토리에 액세스하기 시작하려면 사용자에게 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 개체로 쿼리를 공급하십시오.

속성설명
자산 유형Enum.AvatarAssetType.BackAccessory와 같은 배열 Enum.AvatarAssetType
패키지 유형Enum.BundleType.BodyParts와 같은 배열 Enum.BundleType
카테고리 필터A Enum.CatalogCategoryFilter 특징이나 "커뮤니티 제작"과 같은 다양한 카탈로그 범주를 설명하는 문서. 기본적으로 이 값은 설정됩니다 Enum.CatalogCategoryFilter.None
최대 가격필터링할 최대 가격을 나타내는 정수입니다.
최소 가격필터링할 최소 가격을 설명하는 정수입니다. 기본값은 MinPrice가 0입니다.
검색 키워드카탈로그의 항목 설명에 대해 쿼리할 문자열입니다.
정렬 유형결과가 어떻게 정렬되는지 설명하는 A Enum.CatalogSortType 입니다. 기본적으로 이것은 Enum.CatalogSortType.Relevance 로 설정됩니다.
세일 제외 포함 IncludeOffSale검색 결과에 할인 품목이 포함되는지 여부를 설명하는 부울입니다. 기본적으로 이는 false로 설정됩니다.
크리에이터Id지정된 크리에이터를 나타내는 정수입니다. UserId 또는 GroupId를 사용할 수 있습니다.
크리에이터 이름지정된 크리에이터가 생성한 항목을 검색하는 데 사용되는 문자열. 사용자 이름 또는 그룹 이름을 사용할 수 있습니다.

다음 코드 샘플은 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() 로. 여기에는 다음이 포함될 수 있습니다:

  • 기존 카탈로그 항목을 사용하여 빌드한 사전 정의된 아바타 구성.
  • 게임 내 아바타 편집기를 통해 사용자가 선택한 모든 구성.

Since AvatarEditorService:PromptSaveAvatar() 는 생성하지 않기 때문에, AvatarEditorService.PromptSaveAvatarCompleted 이벤트를 수신하여 결과를 얻을 수 있습니다.

다음 코드는 HumanoidDescription를 사용하여 현재 PromptSaveAvatar()를 저장하고 성공적인 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()로 소유하지 않은 아이템을 즐겨찾기로 허용할 수 있습니다.