CRÉEZ VOTRE MONDE
Joueurs & Personnages : Avancé
Changer le costume du joueur local
16min
vous pouvez changer la tenue d'un joueur local pour celles que vous possédez zepeto character controller version 1 11 3 ou supérieure doit être installée utilisation de l'api setcostume méthode api description setcostume($itemcode string, $complete? system action)\ void; entrez le code de l'élément (id de l'élément) comme valeur d'argument pour changer la tenue du joueur local recevez un rappel une fois le changement de tenue terminé exemple de changement de tenue du joueur local vous pouvez changer la tenue du joueur local en utilisant setcostume() voici un exemple de code qui crée un joueur local lorsque la scène commence, et change la tenue avec un code d'article spécifique lorsque le joueur local est créé 1\) ajoutez zepeto > typescript et nommez le script changelocalplayercostume écrivez un script d'exemple comme ci dessous 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; // lorsque la scène commence, créez un joueur avec l'id utilisateur fourni et changez son costume start() { // créez un nouveau joueur avec l'id utilisateur spécifié zepetoplayers instance createplayerwithuserid(worldservice userid, new spawninfo(), true); // ajoutez un écouteur à l'événement onaddedlocalplayer, qui se déclenche lorsque le joueur local est ajouté zepetoplayers instance onaddedlocalplayer addlistener(() => { // appelez la méthode changecostume avec le code d'article fourni pour changer le costume this changecostume(this itemcode); }); } // méthode pour changer le costume du joueur local en utilisant le code d'article fourni changecostume(itemcode string) { // utilisez la propriété localplayer pour accéder à l'instance du joueur local et définissez son costume en utilisant le code d'article fourni zepetoplayers instance localplayer setcostume(itemcode, () => { // une fois le changement de costume terminé, enregistrez un message indiquant le changement réussi console log(`changement de costume terminé ${itemcode}`); }); } } description du script ce script change la tenue du joueur local selon le code d'article donné lorsque la scène commence, créez un joueur avec l'id utilisateur spécifié et utilisez le createplayerwithuserid() fonction un écouteur d'événements onaddedlocalplayer est ajouté afin que lorsque un joueur local est ajouté, cet événement soit déclenché, et le changecostume() méthode est appelée pour changer le costume accédez à l'instance du joueur local via la propriété localplayer et changez les costumes en utilisant le code d'article fourni une fois le changement de costume terminé, un set costume complete message sera enregistré, indiquant un changement réussi 📘 veuillez vous référer au guide du mannequin sur la façon de vérifier l'id de l'article \[ zepeto mannequin docid 6lv5kyxynna668pxqvref ] 2\) si vous appuyez sur le bouton \[▶︎(lecture)] pour l'exécuter, vous pouvez voir que le joueur local est créé et changé avec le costume basé sur le code d'article saisi avant le changement de costume (gauche), après le changement de costume (droite) si l'article est un produit à durée déterminée, il sera porté après vérification de son expiration pour les articles qui ont expiré, un journal d'erreurs appelé article expiré est appelé si l'article est un produit payé zem, il sera porté après vérification de son appartenance à un joueur local pour les articles non possédés, un journal d'erreurs appelé n'a pas itemcode est appelé exemple de chargement d'une liste d'articles et de changement de vêtements vous pouvez récupérer la liste des articles vestimentaires en utilisant getmyitemlistasync() , qui fournit des informations sur les articles possédés par l'utilisateur l'exemple suivant démontre comment afficher les tenues possédées par un joueur local à l'écran et leur permettre de sélectionner et de changer de tenues étape 1 créer une interface utilisateur de liste de vêtements tout d'abord, créez une ressource de liste d'interface utilisateur où la miniature et le nom de la liste de vêtements seront affichés les ressources qui doivent être fabriquées incluent étape 1 1 créer un préfabriqué d'article après avoir chargé la liste de vêtements que le joueur local possède, nous créons une liste d'articles dans l'interface utilisateur le préfabriqué d'article sert de source pour chaque liste d'articles créée lorsque le prefab d'élément est créé, la miniature et le nom de l'élément sont affichés dans l'interface utilisateur le prefab d'élément contient les éléments suivants objet button thumbnail c'est un objet où le composant image brute et le composant bouton sont enregistrés pour afficher l'image miniature de l'élément objet text name un objet composant texte dans lequel le nom de l'élément sera affiché étape 1 2 configuration du canvas le canvas est l'écran de l'interface utilisateur affiché lorsque le prefab d'élément est créé il est recommandé de créer une vue défilante à l'intérieur de ce canvas afin qu'une grande liste d'éléments puisse être récupérée l'objet vue défilante à l'intérieur du canvas est configuré comme suit l'objet scroll view est configuré pour permettre uniquement le défilement vertical l'objet content configure les composants suivants groupe de mise en page en grille taille de cellule x 150, y 150 contrainte nombre de colonnes fixe nombre de contraintes 5 étape 2 script pour charger la liste des articles et changer de tenue étape 2 1 écrire un script ajouter zepeto > typescript et renommer le script en myitemlist écrire un script d'exemple comme ci dessous 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; // lorsque la scène commence, créez un joueur avec l'id utilisateur fourni et commencez à récupérer et afficher les objets start() { // créez un nouveau joueur avec l'id utilisateur spécifié zepetoplayers instance createplayerwithuserid(worldservice userid, new spawninfo(), true); // ajoutez un écouteur à l'événement onaddedlocalplayer, qui se déclenche lorsque le joueur local est ajouté zepetoplayers instance onaddedlocalplayer addlistener(() => { // démarrez la coroutine cogetmyitem pour récupérer et afficher les objets this startcoroutine(this cogetmyitem()); }); } // coroutine pour récupérer et afficher les objets cogetmyitem() { // demandez la liste des objets avec le mot clé "all" et sans filtres var requestitemlist = shopservice getmycontentitemlistasync(itemkeyword all, null); // attendez que la demande soit terminée 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; // demandez la texture de la miniature pour l'objet var texturereq = contentitems\[i] getthumbnailasync(); yield new waituntil(() => texturereq keepwaiting == false); let thumbnailtexture texture2d = texturereq responsedata texture; // instanciez un prefab d'objet et définissez ses propriétés const item = object instantiate(this itemprefab, this itemcanvas) as gameobject; item getcomponentinchildren\<rawimage>() texture = thumbnailtexture; item getcomponentinchildren\<text>() text = contentitems\[i] id; // ajoutez un écouteur de clic au bouton de l'objet pour changer le costume lorsqu'il est cliqué item getcomponentinchildren\<button>() onclick addlistener(() => { this setitembutton(contentitems\[i] id); }); } } // forcer la reconstruction de la mise en page pour assurer un positionnement correct des éléments de l'interface utilisateur const rect = this itemcanvas gameobject getcomponent\<recttransform>(); layoutrebuilder forcerebuildlayoutimmediate(rect); } // méthode pour changer le costume du joueur local en fonction du code d'objet fourni setitembutton(itemcode string) { // utilisez la propriété zepetoplayers instance localplayer pour accéder à l'instance du joueur local et changer son costume zepetoplayers instance localplayer setcostume(itemcode, () => { // une fois le changement de costume terminé, enregistrez un message indiquant le changement réussi console log(`changement de costume terminé ${itemcode}`); }); } } description du script dans la méthode start, un nouveau joueur est créé en utilisant zepetoplayers instance createplayerwithuserid() et le cogetmyitem() coroutine est exécutée lorsque le joueur local est ajouté le cogetmyitem() coroutine utilise shopservice getmycontentitemlistasync() pour récupérer la liste des objets possédés par le joueur demandez une liste de tous les objets dans toutes les catégories via itemkeyword all attendez que la demande soit terminée en utilisant yield new waituntil(() => requestitemlist keepwaiting == false) si la demande est réussie requestitemlist responsedata issuccess , itère à travers la liste des contentitems et récupère l'image miniature de chaque objet en utilisant getthumbnailasync() créez un élément ui pour chaque objet en utilisant le itemprefab fourni, et définissez l'image miniature et l'id un bouton pour chaque objet est créé, et configuré pour appeler setitembutton() avec l'id de l'objet comme argument la setitembutton() méthode est appelée lorsque le bouton associé à un objet est cliqué appliquez l'objet sélectionné comme costume du personnage du joueur en utilisant zepetoplayers instance localplayer setcostume() lorsque le costume est changé avec succès, un message de journal indiquant set costume complete est affiché avec le code de l'objet 📘 conseils veuillez vous référer au guide suivant sur la façon de vérifier les informations sur l'élément de l'utilisateur via shopservice getmycontentitemlistasync() \[ obtenez des informations sur les articles détenus par un utilisateur docid\ jnd 5wjuejmcnki2hvkvx ] lorsque vous recherchez des éléments possédés par l'utilisateur, vous pouvez rechercher par catégorie en utilisant itemkeyword et les afficher dans une liste sur l'interface utilisateur ❗️ avertissement la liste des vêtements récupérés via shopservice getmycontentitemlistasync() contient des produits périmés à durée limitée donc erreur d'élément périmé le journal d'erreurs peut être appelé étape 2 2 configuration de l'inspecteur myitemlist enregistrez le itemprefab créé à l'étape 1 dans le prefab d'élément du composant auquel myitemlist est appliqué, et enregistrez le canvas dans le itemcanvas étape 3 exécuter si vous appuyez sur le bouton lecture pour l'exécuter, l'interface utilisateur du canevas affichera une liste d'objets possédés par le joueur local, et vous pouvez voir que l'objet change pour le costume correspondant lorsqu'il est sélectionné ❗️ avertissement cette api de costume ne s'applique qu'aux joueurs locaux et ne prend actuellement pas en charge la synchronisation multijoueur la synchronisation des costumes multijoueurs sera disponible à l'avenir