AvatarCreationService
*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.
AvatarCreationService는 경험 내에서 아바타 생성을 유도하는 메서드를 제공하는 개발자 아바타 크리에이터를 지원하는 서비스입니다.
요약
메서드
자산이 UGC 유효성 검사를 통과하기 위해 준수해야 하는 규칙에 관한 데이터를 가져옵니다.
한 번에 아바타 생성 토큰 목록의 아바타 생성 토큰 세부 정보를 가져옵니다.
- PromptCreateAvatarAsync(tokenId : string,player : Player,humanoidDescription : HumanoidDescription):Tuple
에서 아바타를 구매하고 생성하도록 요청하고 에서 아바타를 가져옵니다.
- ValidateUGCAccessoryAsync(player : Player,accessory : Instance,accessoryType : Enum.AccessoryType):Tuple
스튜디오만. Enum.AccessoryType
스튜디오만. Enum.BodyPart
스튜디오만. 전체 신체대한 UGC 유효성 검사를 실행합니다.
이벤트
- AvatarModerationCompleted(outfitId : number,moderationStatus : Enum.ModerationStatus):RBXScriptSignal
속성
메서드
GetValidationRules
자산이 UGC 유효성 검사를 통과하기 위해 준수해야 하는 규칙에 관한 데이터를 가져옵니다.인증은 아바타를 만들기 전에 필수적인 단계이며, 메쉬 삼각형 제한, 텍스처 크기, 신체 부분 크기 제한, 부착 위치 등을 포함한 다양한 검사가 발생합니다.
유효성 규칙의 반환된 사전은 다음 형식을 취합니다:
{["MeshRules"] = {["BodyPartMaxTriangles"] = {Enum.AssetType.DynamicHead: number,Enum.AssetType.LeftArm: number,Enum.AssetType.RightArm: number,Enum.AssetType.Torso: number,Enum.AssetType.LeftLeg: number,Enum.AssetType.RightLeg: number,},["AccessoryMaxTriangles"]: number,["MeshVertColor"]: Color3,["CageMeshMaxDistanceFromRenderMesh"]: number,},["TextureRules"] = {["MaxTextureSize"]: number,},["BodyPartRules"] = {[Enum.AssetType.DynamicHead] = {["Bounds"] = {["Classic"] = {["MinSize"]: Vector3,["MaxSize"]: Vector3,},["ProportionsSlender"] = {["MinSize"]: Vector3,["MaxSize"]: Vector3,},["ProportionsNormal"] = {["MinSize"]: Vector3,["MaxSize"]: Vector3,},},["SubParts"] = {["Head"] = {["NeckRigAttachment"] = {["LowerBound"]: Vector3,["UpperBound"]: Vector3,},["FaceFrontAttachment"] = {["LowerBound"]: Vector3,["UpperBound"]: Vector3,},["HatAttachment"] = {["LowerBound"]: Vector3,["UpperBound"]: Vector3,},["HairAttachment"] = {["LowerBound"]: Vector3,["UpperBound"]: Vector3,},["FaceCenterAttachment"] = {["LowerBound"]: Vector3,["UpperBound"]: Vector3,},},},},[Enum.AssetType.LeftArm] = {["Bounds"] = {["Classic"] = {["MinSize"]: Vector3,["MaxSize"]: Vector3,},["ProportionsSlender"] = {["MinSize"]: Vector3,["MaxSize"]: Vector3,},["ProportionsNormal"] = {["MinSize"]: Vector3,["MaxSize"]: Vector3,},},["SubParts"] = {["LeftHand"] = {["LeftWristRigAttachment"] = {["LowerBound"]: Vector3,["UpperBound"]: Vector3,},["LeftGripAttachment"] = {["LowerBound"]: Vector3,["UpperBound"]: Vector3,},},["LeftUpperArm"] = {["LeftShoulderRigAttachment"] = {["LowerBound"]: Vector3,["UpperBound"]: Vector3,},["LeftShoulderAttachment"] = {["LowerBound"]: Vector3,["UpperBound"]: Vector3,},["LeftElbowRigAttachment"] = {["LowerBound"]: Vector3,["UpperBound"]: Vector3,},},["LeftLowerArm"] = {["LeftElbowRigAttachment"] = {["LowerBound"]: Vector3,["UpperBound"]: Vector3,},["LeftWristRigAttachment"] = {["LowerBound"]: Vector3,["UpperBound"]: Vector3,},},},},...},["AccessoryRules"] = {[Enum.AssetType.HairAccessory] = {["Attachments"] = {{["Size"]: Vector3,["Offset"]: Vector3,["Name"]: string,},},["RigidAllowed"]: boolean,},...}}
반환
위에 자세히 설명된 유효성 규칙 사전.
GetBatchTokenDetailsAsync
한 번에 아바타 생성 토큰 목록에 대한 아바타 생성 토큰 세부 정보를 가져옵니다(토큰은 토큰 생성 프로세스를 통해 생성됨).아바타 생성 토큰 세부 정보 배열을 반환하며 각 토큰 세부 정보는 아래 예제 결과에서 나타난 필드로 구성된 사전입니다.
{["Name"] = "string",["Description"] = "string",["UniverseId"] = 0,["CreatorId"] = 0,["CreatorType"] = Enum.CreatorType.User,["OnSale"] = true,["Price"] = 0,["OffSaleReasons"] = {"string",}}
매개 변수
상세 정보를 얻기 위한 아바타 생성 토큰 ID 목록.
반환
위에 설명된 대로 아바타 생성 토큰 배열.
PromptCreateAvatarAsync
에서 아바타를 구매하고 생성하도록 요청하고 에서 아바타를 가져옵니다.생성의 가격은 아바타 생성 토큰에 할당된 가격에 의해 결정됩니다.이 아바타 생성 토큰은 신체 구매 및 생성에 필요하며 토큰 생성 프로세스를 따라 생성할 수 있습니다.
아바타 작품대해, HumanoidDescription 는 6개의 신체 부위(Head, Torso, RightLeg, LeftLeg, RightArm, LeftArm)에 대해 새로 만들어질 새 자산을 포함해야 합니다.선택적으로 새로운 Hair 장신구포함할 수 있습니다.
이를 지원하기 위해, HumanoidDescription 는 6 BodyPartDescription 자식(각 신체 부분에 하나)을 포함해야 합니다.각각에 대해 BodyPartDescription.Instance 속성은 모든 Folder 바디 부분을 구성하는 모든 MeshPart 인스턴스를 포함하는 LeftArm 를 참조하며, 예를 들어 LeftHand , LeftUpperArm 및 LeftLowerArm 폴더가 포함된 MeshParts 입니다.BodyPartDescription.BodyPart 속성도 관련 Enum.BodyPart 로 설정해야 합니다.
각 신체 부분 MeshPart 도 포함해야 합니다:
- An EditableImage .
- A WrapDeformer 와 함께 EditableMesh.
머리카락과 같은 액세서리를 포함하는 경우, HumanoidDescription 는 다음과 같은 자식 AccessoryDescription 을 포함해야 합니다.
- AccessoryDescription.Instance 속성은 Accessory 인스턴스를 참조합니다.
- AccessoryDescription.AccessoryType 속성이 관련 Enum.AccessoryType로 설정됩니다.
마지막으로, HumanoidDescription 는 BodyTypeScale , HeadScale , HeightScale , WidthScale 및 ProportionScale 의 인간형 저울을 포함해야 합니다.기본 바디가 가져오는 비율을 신중하게 고려하여 제공된 비율과 일치하도록 합니다.Be mindful of the scales that a base body is imported with so that they match the scales provided to the HumanoidDescription .
매개 변수
아바타 생성 토큰의 ID.토큰은 메서드가 호출된 우주가 토큰이 생성된 우주와 동일한 경우에만 유효해야 합니다.또한 토큰 생성자는 ID 확인 및 Roblox 프리미엄을 유지해야 합니다.이 API에서 사용할 토큰을 생성하려면 토큰 생성 프로세스를 따르십시오.
작품위한 아바타의 HumanoidDescription .
반환
순서대로 포함된 튜플:
생성 프롬프트의 결과를 나타내는 Enum.PromptCreateAvatarResult 입니다.
문자열 결과.Enum.PromptCreateAvatarResult.Success의 경우 패키지 ID를 나타냅니다.오류 열거형의 경우 이는 결과 오류 메시지를 나타냅니다.
보조 선택적 문자열 결과.Enum.PromptCreateAvatarResult.Success의 경우 이는 의상 ID를 나타냅니다.모든 오류 열거형의 경우, 이것은 nil가 됩니다.
코드 샘플
The following code populates a HumanoidDescription in the expected format, prompts for avatar creation, and responds to the result.
local AvatarCreationService = game:GetService("AvatarCreationService")
export type BodyPartInfo = {
bodyPart: Enum.BodyPart,
instance: Instance, --Folder with Created MeshParts
}
export type BodyPartList = { BodyPartInfo }
local function publishAvatar(bodyPartInstances: BodyPartList, player: Player, tokenId: string)
local humanoidDescription = Instance.new("HumanoidDescription")
for _, bodyPartInfo in bodyPartInstances do
local bodyPartDescription = Instance.new("BodyPartDescription")
bodyPartDescription.Instance = bodyPartInfo.instance
bodyPartDescription.BodyPart = bodyPartInfo.bodyPart
bodyPartDescription.Parent = humanoidDescription
end
local pcallSuccess, result, resultMessage = pcall(function()
return AvatarCreationService:PromptCreateAvatarAsync(tokenId, player, humanoidDescription)
end)
if pcallSuccess then
if result == Enum.PromptCreateAvatarResult.Success then
print("Successfully uploaded with BundleId: ", resultMessage)
else
print("Unsuccessfully uploaded with error message:", resultMessage)
end
else
print("Avatar failed to create.")
end
end
ValidateUGCAccessoryAsync
스튜디오만. 주어진 Player 및 Instance 에 대해 Enum.AccessoryType 에 UGC 유효성 검사가 통과하는지 여부를 결정합니다.
매개 변수
인스턴스 유효성 검사가 실행됩니다.
Enum.AccessoryType 인스턴스가 될 것으로 예상됩니다. Eyebrow , Eyelash 또는 Hair 을 기대합니다.
반환
순서대로 포함된 튜플:
- 장신구대한 유효성 검사가 성공했는지를 나타내는 부울입니다.
- 선택적 문자열 테이블. 유효성 검사에 실패한 경우 실패 이유가 포함되고, 그렇지 않으면 유효성 검사가 성공한 경우 nil입니다.
ValidateUGCBodyPartAsync
스튜디오만.Player 및 Instance 에 대해 Enum.BodyPart 에 대한 UGC 유효성 검사가 통과하는지 여부를 결정합니다. 매개 변수는 다음 예제 형식에서 관련 으로 예상됩니다.
그러나 예상되는 bodyPart 가 Enum.BodyPart.Head 이면 함수는 단수형 Head``Class.MeshPart 직접 가져옵니다.
매개 변수
인스턴스 유효성 검사가 실행됩니다.
Enum.BodyPart 인스턴스가 예상됩니다.
반환
순서대로 포함된 튜플:
- 바디 부분에 대한 유효성 검사가 성공했는지를 나타내는 부울입니다.
- 선택적 문자열 테이블. 유효성 검사에 실패한 경우 실패 이유가 포함되고, 그렇지 않으면 유효성 검사가 성공한 경우 nil입니다.
ValidateUGCFullBodyAsync
스튜디오만. Player 및 HumanoidDescription 를 제공하면 모든 HumanoidDescription 인스턴스가 유효성 검사됩니다.
는 6개의 필수 값에 대해 각각 자식에 설정된 인스턴스를 포함할 것으로 예상됩니다.선택적으로, AccessoryDescription 자식에 설정된 인스턴스를 포함할 수 있습니다 Eyebrow , Eyelash , 그리고 Hair``Enum.AccessoryType|AccessoryTypes 입니다.
매개 변수
HumanoidDescription 유효성 검사가 실행되는 바디를 나타내는 것.
반환
순서대로 포함된 튜플:
- 신체대한 유효성 검사가 성공했는지를 나타내는 부울입니다.
- 선택적 문자열 테이블. 유효성 검사에 실패한 경우 실패 이유가 포함되고, 그렇지 않으면 유효성 검사가 성공한 경우 nil입니다.