あなたの世界を作りなさい
プレイヤーとキャラクター: 上級
ローカルプレイヤーのコスチュームを変更します
14分
ローカルプレイヤーの衣装を所有しているものに変更できます。 zepeto character controller 1 11 3 以上のバージョンをインストールする必要があります。 setcostume apiの使用 メソッド api 説明 setcostume($itemcode string, $complete? system action)\ void; ローカルプレイヤーの衣装を変更するために、アイテムコード(アイテムid)を引数として入力します。衣装変更が完了したらコールバックを受け取ります。 ローカルプレイヤーの衣装変更の例 ローカルプレイヤーの衣装を変更するには、 setcostume() を使用します。 シーンが始まるとローカルプレイヤーを作成し、ローカルプレイヤーが作成されたときに特定のアイテムコードで衣装を変更する例のコードです。 1\) zepeto > typescriptを追加し、スクリプトにchangelocalplayercostumeという名前を付けます。 以下のようにサンプルスクリプトを書いてください。 changelocalplayercostume ts import { spawninfo, zepetoplayers } from 'zepeto character controller'; import { zepetoscriptbehaviour } from 'zepeto script'; import { worldservice } from 'zepeto world'; export default class changelocalplayercostume extends zepetoscriptbehaviour { public itemcode string; // シーンが始まると、提供されたユーザーidでプレイヤーを作成し、衣装を変更します。 start() { // 指定されたユーザーidで新しいプレイヤーを作成します。 zepetoplayers instance createplayerwithuserid(worldservice userid, new spawninfo(), true); // ローカルプレイヤーが追加されたときにトリガーされるonaddedlocalplayerイベントにリスナーを追加します。 zepetoplayers instance onaddedlocalplayer addlistener(() => { // 提供されたアイテムコードでchangecostumeメソッドを呼び出して衣装を変更します。 this changecostume(this itemcode); }); } // 提供されたアイテムコードを使用してローカルプレイヤーの衣装を変更するメソッド。 changecostume(itemcode string) { // localplayerプロパティを使用してローカルプレイヤーインスタンスにアクセスし、提供されたアイテムコードを使用して衣装を設定します。 zepetoplayers instance localplayer setcostume(itemcode, () => { // 衣装の変更が完了したら、成功した変更を示すメッセージをログに記録します。 console log(`衣装の設定が完了しました ${itemcode}`); }); } } スクリプトの説明 このスクリプトは、指定されたアイテムコードに従ってローカルプレイヤーの衣装を変更します。 シーンが開始されると、指定されたユーザーidでプレイヤーを作成し、 createplayerwithuserid() 関数を使用します。 ローカルプレイヤーが追加されると、そのイベントがトリガーされるように、onaddedlocalplayerイベントリスナーが追加され、 changecostume() メソッドが呼び出されて衣装が変更されます。 localplayerプロパティを通じてローカルプレイヤーインスタンスにアクセスし、提供されたアイテムコードを使用して衣装を変更します。衣装の変更が完了すると、 set costume complete メッセージがログに記録され、成功した変更を示します。 📘 アイテムidを確認する方法については、マネキンガイドを参照してください。 \[ zepeto マネキン docid\ rtspax0spfgvfafog7lvi ] 2\) \[▶︎(再生)] ボタンを押して実行すると、入力されたアイテムコードに基づいてローカルプレイヤーが作成され、コスチュームが変更されるのがわかります。 コスチューム変更前(左)、コスチューム変更後(右) アイテムが定期商品である場合、期限が切れているかどうかを確認した後に着用されます。期限が切れたアイテムには、 期限切れアイテム というエラーログが表示されます。 アイテムがzem有料商品である場合、ローカルプレイヤーが所有しているかどうかを確認した後に着用されます。所有していないアイテムには、 アイテムコードなし というエラーログが表示されます。 アイテムリストを読み込み、服を変更する例。 ユーザーが所有しているアイテムに関する情報を提供する getmyitemlistasync() を利用することで、衣服アイテムのリストを取得できます。 以下の例は、ローカルプレイヤーが所有している衣装を画面に表示し、選択して変更できるようにする方法を示しています。 ステップ1 衣服リストuiを作成する まず、衣服リストのサムネイルと名前が表示されるuiリストリソースを作成します。作成する必要があるリソースは次のとおりです: ステップ1 1 アイテムプレハブを作成する ローカルプレイヤーが持っている衣服のリストを読み込んだ後、uiにアイテムのリストを作成します。アイテムプレハブは、作成される各アイテムリストのソースとして機能します。 アイテムプレハブが作成されると、サムネイルとアイテム名がuiに表示されます。 アイテムプレハブには以下の要素が含まれています。 button thumbnailオブジェクト:これは、アイテムのサムネイル画像を表示するためにraw imageコンポーネントとbuttonコンポーネントが登録されているオブジェクトです。 text nameオブジェクト:アイテム名が表示されるtextコンポーネントオブジェクトです。 ステップ 1 2 キャンバスの設定 キャンバスは、アイテムプレハブが作成されたときに表示されるui画面です。このキャンバス内にスクロールビューを作成することをお勧めします。そうすることで、大量のアイテムリストを取得できます。 キャンバス内のスクロールビューオブジェクトは以下のように設定されています。 スクロールビューオブジェクトは、垂直スクロールのみを許可するように設定されています。 コンテンツオブジェクトは、以下のコンポーネントを設定します: グリッドレイアウトグループ: セルサイズ x 150, y 150 制約 固定列数 制約数 5 ステップ2 アイテムリストを読み込み、衣装を変更するスクリプト ステップ 2 1 スクリプトを書く zepetoを追加 > typescriptにし、スクリプトの名前をmyitemlistに変更します。 以下のようにサンプルスクリプトを書きます。 myitemlist ts import { zepetoscriptbehaviour } from 'zepeto script'; import { shopservice, itemkeyword } from 'zepeto module shop'; import { zepetopropertyflag } from 'zepeto'; import { gameobject, object, recttransform, texture2d, transform, waituntil } from 'unityengine'; import { button, layoutrebuilder, rawimage, text } from 'unityengine ui'; import { spawninfo, zepetoplayers } from 'zepeto character controller'; import { worldservice } from 'zepeto world'; import { item } from 'zepeto module content'; export default class checkmyitemlist extends zepetoscriptbehaviour { public itemprefab gameobject; public itemcanvas transform; // シーンが開始されると、指定されたユーザーidでプレイヤーを作成し、アイテムを取得して表示します。 start() { // 指定されたユーザーidで新しいプレイヤーを作成します。 zepetoplayers instance createplayerwithuserid(worldservice userid, new spawninfo(), true); // ローカルプレイヤーが追加されたときにトリガーされるonaddedlocalplayerイベントにリスナーを追加します。 zepetoplayers instance onaddedlocalplayer addlistener(() => { // アイテムを取得して表示するためにcogetmyitemコルーチンを開始します。 this startcoroutine(this cogetmyitem()); }); } // アイテムを取得して表示するためのコルーチン。 cogetmyitem() { // "all"キーワードとフィルターなしでアイテムリストをリクエストします。 var requestitemlist = shopservice getmycontentitemlistasync(itemkeyword all, null); // リクエストが完了するまで待機します。 yield new waituntil(() => requestitemlist keepwaiting == false); if (requestitemlist responsedata issuccess) { let contentitems item\[] = requestitemlist responsedata items; console log(contentitems length); for (let i = 0; i < contentitems length; ++i) { const property zepetopropertyflag = contentitems\[i] property; // アイテムのサムネイルテクスチャをリクエストします。 var texturereq = contentitems\[i] getthumbnailasync(); yield new waituntil(() => texturereq keepwaiting == false); let thumbnailtexture texture2d = texturereq responsedata texture; // アイテムプレハブをインスタンス化し、そのプロパティを設定します。 const item = object instantiate(this itemprefab, this itemcanvas) as gameobject; item getcomponentinchildren\<rawimage>() texture = thumbnailtexture; item getcomponentinchildren\<text>() text = contentitems\[i] id; // アイテムボタンにクリックリスナーを追加して、クリック時にコスチュームを変更します。 item getcomponentinchildren\<button>() onclick addlistener(() => { this setitembutton(contentitems\[i] id); }); } } // ui要素の位置を正しくするためにレイアウトを強制的に再構築します。 const rect = this itemcanvas gameobject getcomponent\<recttransform>(); layoutrebuilder forcerebuildlayoutimmediate(rect); } // 提供されたアイテムコードに基づいてローカルプレイヤーのコスチュームを変更するメソッド。 setitembutton(itemcode string) { // zepetoplayers instance localplayerプロパティを使用してローカルプレイヤーインスタンスにアクセスし、コスチュームを変更します。 zepetoplayers instance localplayer setcostume(itemcode, () => { // コスチューム変更が完了したら、成功した変更を示すメッセージをログに記録します。 console log(`コスチューム設定完了 ${itemcode}`); }); } } スクリプトの説明 startメソッドでは、 zepetoplayers instance createplayerwithuserid() を使用して新しいプレイヤーが作成され、 cogetmyitem() コルーチンがローカルプレイヤーが追加されたときに実行されます。 コルーチンは、 cogetmyitem() を使用して、プレイヤーが所有するアイテムのリストを取得します。 shopservice getmycontentitemlistasync() を使用して、プレイヤーが所有するアイテムのリストを取得します。 itemkeyword allを介してすべてのカテゴリのすべてのアイテムのリストをリクエストします。リクエストが完了するまで待機します。 yield new waituntil(() => requestitemlist keepwaiting == false) リクエストが成功した場合、 requestitemlist responsedata issuccess 、 contentitems のリストを反復処理し、各アイテムのサムネイル画像を取得します。 getthumbnailasync() 提供されたitemprefabを使用して各アイテムのui要素を作成し、サムネイル画像とidを設定します。各アイテムのボタンが作成され、 setitembutton() をアイテムのidを引数として呼び出すように設定します。 このメソッドは、アイテムに関連付けられたボタンがクリックされたときに呼び出されます。 setitembutton() メソッドが呼び出されます。 選択したアイテムをプレイヤーのキャラクターコスチュームとして適用します。 zepetoplayers instance localplayer setcostume() コスチュームが正常に変更された場合、 コスチュームの設定が完了しました というログメッセージがアイテムコードと共に表示されます。 📘 ヒント ユーザーのアイテム情報を確認する方法については、以下のガイドを参照してください。 shopservice getmycontentitemlistasync() \[ ユーザーが所有するアイテムに関する情報を取得する docid\ udynsmjy5o8jmejxtd zo ] ユーザーが所有するアイテムを検索する際は、itemkeywordを使用してカテゴリ別に検索し、ui上にリスト表示できます。 ❗️ 注意 取得した服のリストは、 shopservice getmycontentitemlistasync() を通じて、期限切れの時間制限付き商品を含んでいます。したがって、 期限切れアイテム のエラーログを呼び出すことができます。 ステップ 2 2 myitemlist インスペクタの設定 ステップ 1 で作成した itemprefab を myitemlist が適用されているコンポーネントの item prefab に登録し、 itemcanvas に canvas を登録します。 ステップ 3 実行 再生ボタンを押して実行すると、キャンバス ui にローカルプレイヤーが所有するアイテムのリストが表示され、選択するとアイテムが対応する衣装に変わるのがわかります。 ❗️ 注意 このコスチューム着用 api はローカルプレイヤーのみに適用され、現在マルチプレイヤーの同期はサポートされていません。 コスチュームのマルチプレイヤー同期は将来的に利用可能になります。