아바타 편집 서비스를 사용하면 경험 내에서 사용자의 아바타에 액세스하고 변경할 수 있습니다. 아바타 편집 서비스는 사용자의 인벤토리에 액세스하고 마켓플레이스에서 의상을 저장하고 아바타 아이템을 구매하여 사용자 계정에 아바타를 저장할 수 있습니다.
완전한 캐릭터 사용자 정의 경험을 위해 게임 내 아바타 편집기를 사용하는 아바타 편집기 서비스를 구현하는 것이 좋습니다. 이 기능에 대한 자세한 내용은 Simple Avatar Editor Demo 참조 장소를 참조하십시오.
Avatar Editor 서비스를 사용하려면 먼저 사용자의 인벤토리에 액세스 요청을 요청해야 합니다. 액세스가 성공적으로 부여된 후 다음 작업을 수행할 수 있습니다.
- 사용자의 인벤토리를 읽어 사용자가 소유한 아이템 목록을 얻습니다.
- 마켓플레이스를 검색하십시오, 다양한 속성을 사용하여 필터링 및 정렬을 하십시오.
- 아바타 아이템 장착 및 저장 아바타에 장착하세요.
액세스 요청
사용자의 인벤토리에 액세스하려면 사용자가 Class.AvatarEditorService:PromptAllowInventoryReadAccess()|PromptAllowInventoryReadAccess() 을 통해 액세스를 허용하도록 요청해야 합니다. 이 작업은 세션마다 1번만 수행할 수 있습니다.
다음 코드 샘플을 사용하여 액세스 메시지를 시작하고 사용자 응답을 수신하십시오.
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 개체를 제공하세요.
속성 | 설명 |
---|---|
자산 유형 | Ennum.AvatarAssetType 같은 배열의 Ennum.AvatarAssetType.BackAccessory 등. |
번들 유형 | Enumerate.BundleType 같은 배열은 다음과 같습니다. Enumerate.BundleType.BodyParts |
필터 | Featured 또는 Enum.CatalogCategoryFilter.None과 같은 다양한 카테고리를 설명하는 카탈로그 카테고리 필터입니다. 기본적으로 이는 Enabled.CatalogCategoryFilter로 설정됩니다. |
최고 가격 | 필터링할 최대 가격을 설명하는 정수입니다. |
최소 가격 | 필터링할 최소 가격을 설명하는 정수입니다. 기본적으로 MinPrice는 0 입니다. |
검색 키워드 | 카탈로그에서 항목 설명에 대한 쿼리 문자열입니다.A string to query against item descriptions in the catalog. |
정렬 유형 | 결과 정렬 방식에 대해 설명하는 Enum.CatalogSortType입니다. 기본적으로 이는 Enum.CatalogSortType.Relevance로 설정됩니다. |
판매 제외 포함 | 검색 결과에 포함된 아이템이 판매 중지 아이템인지 여부를 설정합니다. 기본적으로 이는 false로 설정됩니다. |
크리에이터 ID | 지정할 크리에이터를 나타내는 정수입니다. 사용할 수 있는 식별자는 사용자 아이디 또는 그룹 아이디입니다. |
크리에이터 이름 | 지정된 크리에이터가 만든 항목을 검색하는 데 사용되는 문자열입니다. 사용자 이름 또는 그룹 이름을 사용할 수 있습니다. |
다음 코드 샘플은 백 및 어깨 자산 유형에 대해 CatalogSearchParams 개체를 생성하고 Back 및 Shoulder 자산 유형을 통과하는 1>Class.AvatarEditorService:SearchCatalog()|SearchCatalog()1> 호출을 통해 전달합니다.
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 플랫폼에 저장하고 업데이트할 수 있습니다. 사용자는 아바타 또는 의상을 저장할 때 소유하지 않은 카탈로그 항목을 받지 않습니다.
Class.HumanoidDescription 을 사용자의 현재 아바타에 저장하려면 PromptSaveAvatar() 을 사용하십시오. 여기에는 다음이 포함될 수 있습니다.
- 기존 카탈로그 항목을 사용하여 구축한 미리 정의 아바타 구성.
- 사용자가 게임 내 아바타 편집기를 통해 선택한 모든 구성.
Class.AvatarEditorService:PromptSaveAvatar() 이 생성되지 않으므로 이벤트 AvatarEditorService.PromptSaveAvatarCompleted를 수신하여 결과를 얻을 수 있습니다.
다음 코드는 현재 HumanoidDescription 을 사용하여 저장하고 PromptSaveAvatar() 을 검사하여 성공적인 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
Class.HumanoidDescription 을 의상으로 저장하려면 사용자의 현재 아바타를 덮어쓰지 않고 사용하세요. AvatarEditorService:PromptCreateOutfit() .
호출한 후 AvatarEditorService:PromptCreateOutfit() 이벤트에 귀하의 결과를 얻을 수 있습니다.
다음 코드 샘플은 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() 를 소유하고 있는지 확인하고 옵션을 제공하여 아이템을
아이템 구매를 구현하지 않으려면 사용자가 소유하지 않은 아이템을 AvatarEditorService:PromptSetFavorite() 와 함께 즐겨찾기로 허용할 수 있습니다.