Geste
L'API ZepetoWorldContent vous permet de définir des vignettes pour les catégories de gestes/poses souhaitées et d'activer des gestes/poses spécifiques lorsqu'une vignette est cliquée.
Pour utiliser l'API ZepetoWorldContent, vous devez écrire une instruction d'importation comme suit.
Les informations sur les variables membres et les fonctions de la classe Content contenant des informations sur les gestes/poses sont les suivantes :
API | Description |
---|---|
public get Id(): string | Identifiant unique de contenu |
public get Title(): string | Texte du titre de geste, pose - La langue sera automatiquement traduite en fonction de la langue de l'appareil |
public get Thumbnail(): UnityEngine.Texture2D | Miniature 2D |
public get AnimationClip(): UnityEngine.AnimationClip | Clip d'animation de geste |
public get IsDownloadedThumbnail(): boolean | Fonction pour déterminer si vous avez déjà téléchargé cette miniature |
public get IsDownloadedAnimation(): boolean | Fonction pour déterminer si vous avez déjà téléchargé ce clip d'animation |
public DownloadAnimation($complete: System.Action):void | Une fonction de téléchargement de clip d'animation qui reçoit un rappel de complétion avec un facteur - Si IsDownloadedAnimation() est faux, implémentez DownloadAnimation() pour être appelé. |
public DownloadThumbnail($complete: System.Action):void | Fonction pour télécharger des miniatures - Si IsDownloadedThumbnail() est faux, implémentez DownloadThumbnail() pour être appelé. |
OfficialContentType : enum | Type de contenu (World 1.9.0 et supérieur) - Geste = 2 - Pose = 4 - Selfie = 8 - GestureGreeting = 16 - GesturePose = 32 - GestureAffirmation = 64 - GestureDancing = 128 - GestureDenial = 256 - GestureEtc = 512 - Tout = 14 |
- Vous pouvez utiliser la fonction existante, public DownloadThumbnail($character: ZEPETO_Character_Controller.ZepetoCharacter, $complete: System.Action):void, sans aucun problème de fonctionnalité. Cependant, comme elle n'accepte plus le personnage Zepeto comme argument, veuillez utiliser la fonction nouvellement modifiée public DownloadThumbnail($complete: System.Action):void à la place.
1) Ajoutez Hiérarchie > UI > Canvas et définissez l'ordre de tri sur 2 pour éviter d'être obscurci par d'autres interfaces utilisateur.
2) Ajouter Hiérarchie > UI > Bouton.
1) Ajouter Hiérarchie > Créer Objet Vide et le renommer PanelParent.
2) Ajouter Hiérarchie > UI > Panneau comme enfant de PanelParent.
3) Bouton de fermeture : Après avoir ajouté UI > Bouton, ajoutez un événement onClick pour désactiver le panneau de geste.
4) Bouton d'ouverture : Veuillez ajouter un événement onClick qui active le panneau de geste au bouton d'ouverture créé ci-dessus.
5) Ajoutez une image pour servir de zone de titre.
6) Configurez une vue défilante pour afficher la miniature de geste.
- Ajoutez Hiérarchie > UI > Vue défilante.
- Cochez Horizontal et désactivez l'image de la barre de défilement car vous n'utiliserez que des défilements verticaux et des défilements horizontaux ne seront pas nécessaires.
- Ajoutez une mise en page en grille au contenu dans la vue défilante pour aligner les miniatures en motif de grille.
- Ajoutez un ajusteur de taille de contenu pour rendre la taille de l'objet appropriée à la taille du contenu.
- Lorsque vous implémentez un script, vous devez définir le contenu dans la vue défilante comme le parent de la miniature de geste (afin que toute la zone soit reconnue et défilée)
7) Configurez des onglets par type de geste.
- Ajouter une hiérarchie > Créer un objet vide en tant qu'enfant du panneau et le renommer en GestureTitle.
- Ceci est l'objet parent du bouton bascule.
- Ajouter une mise en page horizontale pour aligner les onglets horizontalement.
- Ajouter le composant Toggle Group.
👍 Pour configurer plus d'onglets, ajoutez une hiérarchie > UI > Scroll View et cochez Horizontal dans l'option Scroll View.
8) Ajoutez le texte à utiliser comme bouton bascule en tant qu'enfant de GestureTitle, et remplacez-le par Tout.
- Définit la couleur du texte en gris.
- Ajoutez le texte surligné qui sera affiché lorsqu'il est coché en tant qu'enfant du texte.
- Définissez le contenu de la police, la taille et l'épaisseur de la même manière, et définissez la couleur sur noir.
- Ajoutez le composant Toggle.
- Spécifiez l'objet parent dans le groupe.
- Ajoutez le texte surligné que vous avez ajouté en tant qu'enfant à Graphic
- Vérifiez isOn uniquement pour les composants Toggle All qui seront affichés en premier.
- Créez à la fois les boutons bascule Gesture et Pose de la même manière.
Utilisez la méthode de création d'un bouton vignette en tant que préfab et générez-le ensuite en tant qu'instance dans un script.
1) Ajoutez UI > Bouton en tant qu'enfant de Contenu dans la Vue Défilante et renommez-le préThumb.
2) Veuillez changer le nom en Thumb après avoir ajouté l'Image Brute.
- Cette image sera une vignette. Ajustez la taille en conséquence.
3) Ajoutez du texte.
- Réglez la position pour centrer le bas de l'image.
- Ajustez la taille et l'épaisseur de l'écriture, et ajoutez le Ajusteur de Taille de Contenu.
- Ajustement Horizontal : Taille Préférée
- Ajustement Vertical : Taille Préférée
4) Si le réglage est fait, veuillez en faire un Préfab et le mettre dans le dossier Resources.
👍 Les valeurs de taille et de position de l'interface utilisateur montrées dans la vidéo sont recommandées, mais vous pouvez les modifier selon vos souhaits !
Une fois la configuration de l'interface utilisateur terminée, passez à la scriptage.
Ce script est basé sur un jeu unique.
- Projet > Créer > ZEPETO > TypeScript et renommez-le en Miniature.
- Écrivez un script d'exemple comme ci-dessous.
- Ceci est un script qui organise les informations de contenu de geste (titre, image) dans l'interface utilisateur.
- Après avoir créé le script, ouvrez le prefab preThumb et ajoutez le script.
- Créer une hiérarchie > Créer un objet vide et le renommer en GestureLoader.
- Créer un projet > Créer > ZEPETO > TypeScript et le renommer en GestureLoader.
- Écrire un script d'exemple comme ci-dessous.
- Le compte est le nombre maximum de gestes à télécharger sur chaque onglet. Si vous le définissez à un nombre supérieur à 100, il peut y avoir des erreurs lors du processus de téléchargement de la miniature, donc veuillez le définir uniquement autant que nécessaire.
Le script se déroule comme suit :
1) Invoquez la fonction personnalisée ContentsRequest() pour générer des vignettes après avoir chargé le personnage ZEPETO.
- La fonction ContentsRequest() reçoit des informations sur le contenu en séparant les gestes et les poses, respectivement.
- S'il existe une vignette, elle est ignorée ; sinon, la vignette est récupérée.
- Les données de vignette récupérées sont stockées dans des listes respectives.
- Créer une hiérarchie > Créer un objet vide et le renommer en UIContoller.
- Créer un projet > Créer > ZEPETO > TypeScript et le renommer en UIContoller.
- Écrire un script d'exemple comme ci-dessous.
Le script se déroule comme suit :
- Touchez le pavé tactile ou le bouton de fermeture pour annuler la lecture en utilisant la fonction CancelGesture().
- Appuyez sur l'onglet (bouton de basculement) pour invoquer la fonction personnalisée SetCategoryUI().
- La fonction SetCategoryUI() utilise les informations de contenu de geste dans chaque miniature pour les définir pour chaque catégorie correspondante.
- Activez si c'est un type applicable, et désactivez sinon.
Après avoir terminé le script, assignez le bouton de fermeture, TypeToggleGroup à l'inspecteur.
- L'entrée du Type Toggle Group est le Toggle qui est un enfant du Toggle Group dans le panneau de geste.
❗️ Attention Avant de jouer, désactivez PanelParent afin que seul le bouton d'ouverture soit visible lors de la lecture.
- Dans le cas d'un multi-joueur, un code de synchronisation doit être ajouté pour recevoir la valeur d'information de geste prise par un joueur particulier et l'appliquer à tous les joueurs accédant à la Salle.
- La clé est d'envoyer et de recevoir un Message de Salle entre le serveur et le client concernant quel joueur a effectué quel geste.
- Écrivez le même script que celui implémenté dans le code client en mode solo.
- Par défaut, les scripts implémentés dans le code client en mode solo sont écrits de la même manière.
- De plus, le client déclare l'interface pour contenir le PlayerGestureInfo.
- Lors de l'envoi de vos informations au serveur : voir SendMyGesture() Fonction Personnalisée
- Lorsque votre joueur appuie sur la miniature pour faire un geste, envoyez l'ID du geste au serveur en utilisant room.Send().
- Lorsque vous annulez un geste, traitez-le pour envoyer l'information que vous avez annulé.
- Lors de la réception d'informations sur le geste d'un autre client depuis le serveur : "OnChangeGesture" Le message de la salle est envoyé à this.room.AddMessageHandler() dans Start()
- La synchronisation est réalisée en ayant l'ID de session et l'ID de geste dans le message "OnChangeGesture" et en faisant jouer le geste au joueur approprié.
- Après avoir terminé le script, l'Inspecteur assignera un objet supplémentaire à Multiplay avec le composant Multiplay du monde Zepeto.
- Par défaut, les scripts implémentés dans le code client en mode solo sont écrits de la même manière.
- La différence avec le code client en mode solo est la fonction personnalisée StopGesture().
- Invoquez une fonction personnalisée SendMyGesture() dans le GestureLoaderMultiplay.
- Processus pour envoyer des informations indiquant que le geste a été annulé.
- Le code du serveur déclare ensuite que l'interface contient le PlayerGestureInfo de la même manière.
- Le code du serveur est basé sur le code du serveur dans l'exemple Multiplay par défaut.
- Il crée un rappel onMessage() qui envoie des informations de geste à d'autres clients lorsque un geste change dans onCreate().