アバターエディタサービスでは、ユーザーのアバターにアクセスして変更し、エクスペリエンス内のユーザーのインベントリにアクセスできます。アバターエディタサービスは、ユーザーのインベントリとマーケットプレイスにアクセスして、服装を保存し、ユーザーのアカウントにアバターアイテムを購入することができます。
ゲーム内のアバターエディターを使用して、完全なキャラクターのカスタマイズ体験を提供するために、アバターエディターサービスを実装することをお勧めします。この機能の詳細は、「Simple Avatar Editor Demo」参照場所を参照してください。
アバターエディタサービスを使用するには、まずユーザーのインベントリにアクセスをリクエストする必要があります。アクセスを許可すると、次のアクションを実行できます:
- ユーザーのインベントリを読み取る としてユーザーが所有するアイテムのリストを取得します。
- マーケットプレイスを検索する 、さまざまなプロパティを使用してフィルターとソートを並べ替えう。
アクセスをリクエストする
ユーザーのインベントリにアクセスするには、PromptAllowInventoryReadAccess() を通じて、ユーザーにアクセスを許持ち物リストする必要があります。このリクエストは 1 セッションごとに 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 オブジェクトを含む 1つ以上の次のプロパティを含む 1つ以上の次のプロパティを含む、または、次のプロパティを含む 1つ以上の次のプロパティを含む 1つ以上の次のプロパティを含む 1つ以上の次のプロパテ
プロパティ | 説明 |
---|---|
アセットタイプ | 枚数.アバターアセットタイプ のような配列の 枚数.アバターアセットタイプ.BackAccessory。 |
バンドルタイプ | 枚数.バンドルタイプ のような配列を含む 枚数.バンドルタイプ.ボディパーツ。 |
カテゴリフィルタ | A Enum.CatalogCategoryFilter は、「特徴」や「コミュニティ製作」などの様々なカタログカテゴリを説明します。デフォルトでは、これは Enum.CatalogCategoryFilter.None に設定されています。 |
最大価格 | フィルターに最大価格を記述する整数。 |
最小価格 | フィルターする最小価格を表現する整数。デフォルトでは、MinPrice は 0 です。 |
検索キーワード | カタログのアイテムの説明に対する文字列をクエリーする。 |
ソートタイプ | 結果の順序を記述する ContainerSortType 。デフォルトでは、これは ContainerSortType.Relevance に設定されています。 |
オフセールを含める | 検索の結果にオフセールアイテムが含まれているかどうかを表すブーレット。デフォルトでは、これは偽で設定されています。 |
クリエイターId | 指定するクリエイターを指定する整数。ユーザーID またはグループ ID を使用できます。 |
クリエイター名 | 指定されたクリエーターによって作成されたアイテムを検索するためのストリング。ユーザー名またはグループ名を使用できます。 |
次のコードサンプルは、CatalogSearchParams オブジェクトを Datatype.Back および Datatype.Shoulder アセットタイプのために構築し、2> Class.AvatarEditorService:SearchCatalog()|SearchCatalog()2> コールを通じてパスします:
local AvatarEditorService = game:GetService("AvatarEditorService")local catalogSearchParams = CatalogSearchParams.new()local assetTypes = {Enum.AvatarAssetType.BackAccessory,Enum.AvatarAssetType.ShoulderAccessory}catalogSearchParams.AssetTypes = assetTypeslocal pagesObject =--この関数は、結果を含むカタログページオブジェクトを返します。AvatarEditorService:SearchCatalog(catalogSearchParams)local currentPage = pagesObject:GetCurrentPage()for _, item in currentPage doprint(item)end
アバターと衣装を保存する
ゲーム内のアバターエディタと一緒に使用すると、AvatarEditorService は、アバターアイテムや衣装を Roblox プラットフォームに保存および更新できます。ユーザーは、アバターまたは衣装を保存すると、カタログアイテムを受信しないようになります。
任意の HumanoidDescription は、PromptSaveAvatar() でユーザーのアバターに保存できます。これには以下が含まれます:
- 既存のカタログアイテムを使用して構築したプリデファインされたアバターの設定。
- ユーザーがゲーム内のアバターエディタを通じて選択した設定。
Class.AvatarEditorService:PromptSaveAvatar() が生成されないので、AvatarEditorService.PromptSaveAvatarCompleted イベントを聞くことで結果を取得できます。
次のコードは、HumanoidDescription を使用して、PromptSaveAvatar() を使用して、お使いのコンピューターに AvatarEditorService.PromptSaveAvatarCompleted の保存を保存し、成功した 2>Class.AvatarCompleted2> イベントをチェックします。
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 の成功した Class.AvatarEditorService.PromptCreateOutfit イベントをリスニングします:
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
アイテムの購入
カタログアイテムを使用するアバターまたは衣装を保存すると、ユーザーは所有していないアイテムを受け取りません。アバターまたは衣装を保存する前に、ユーザーがアセットを所有しているかどうかを確認してください。アバターまたは衣装を保存する前に、ユーザーにアセットを所有してい
アイテム購入を実装したくない場合は、ユーザーが AvatarEditorService:PromptSetFavorite() で非所有アイテムをお気に入りに追加できます。