CRÉEZ VOTRE MONDE

Geste

32min

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.

Document image




Pour utiliser l'API ZepetoWorldContent, vous devez écrire une instruction d'importation comme suit.

TypeScript




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.



ÉTAPE 1 : Configurer l'interface utilisateur



ÉTAPE 1-1 : Créer un bouton de geste

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.

Document image




2) Ajouter Hiérarchie > UI > Bouton.

Exemple de bouton de geste
Exemple de bouton de geste




ÉTAPE 1-2 : Organiser le panneau de geste

1) Ajouter Hiérarchie > Créer Objet Vide et le renommer PanelParent.

Document image




2) Ajouter Hiérarchie > UI > Panneau comme enfant de PanelParent.

Exemple de panneau de geste
Exemple de panneau de geste




3) Bouton de fermeture : Après avoir ajouté UI > Bouton, ajoutez un événement onClick pour désactiver le panneau de geste.

Exemple de configuration du bouton de fermeture
Exemple de configuration du bouton de fermeture




4) Bouton d'ouverture : Veuillez ajouter un événement onClick qui active le panneau de geste au bouton d'ouverture créé ci-dessus.

Exemple de configuration du bouton d'ouverture
Exemple de configuration du bouton d'ouverture




5) Ajoutez une image pour servir de zone de titre.

Exemple d'image de titre
Exemple d'image 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)
Exemple de configuration de vue défilante
Exemple de configuration de vue défilante




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.

Exemple de configuration de GestureTitle
Exemple de configuration de GestureTitle




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.
Exemple de configuration du bouton bascule
Exemple de configuration du bouton bascule




ÉTAPE 1-3 : Créer des préfabriqués de vignettes

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.

Exemple de configuration de préfabriqué miniature
Exemple de configuration de préfabriqué miniature

Exemple où les boutons miniatures sont placés sur le panneau de geste après exécution
Exemple où les boutons miniatures sont placés sur le panneau de geste après exécution




ÉTAPE 1-4 : Vidéo de guide de configuration de l'interface utilisateur



👍 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.



ÉTAPE 2 : Écrire un script

Ce script est basé sur un jeu unique.



ÉTAPE 2-1 : Miniature

  • 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.
Miniature

  • Après avoir créé le script, ouvrez le prefab preThumb et ajoutez le script.
Document image




ÉTAPE 2-2 : GestureLoader

  • 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.
GestureLoader

  • 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.
Exemple de l'écran de configuration du script de geste
Exemple de l'écran de configuration du script de geste




ÉTAPE 2-3 : UIController

  • 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.
UIController


Le script se déroule comme suit :

  1. Touchez le pavé tactile ou le bouton de fermeture pour annuler la lecture en utilisant la fonction CancelGesture().
  2. Appuyez sur l'onglet (bouton de basculement) pour invoquer la fonction personnalisée SetCategoryUI().
  3. 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.
Exemple d'écran de configuration de script
Exemple d'écran de configuration de script




ÉTAPE 3 : Exécuter

❗️ Attention Avant de jouer, désactivez PanelParent afin que seul le bouton d'ouverture soit visible lors de la lecture.

Document image




ÉTAPE 4 : Synchroniser les gestes multi-joueurs

  • 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.



ÉTAPE 4-1 : Code Client

Miniature - Multijoueur

  • Écrivez le même script que celui implémenté dans le code client en mode solo.
Miniature - Multijoueur




GestureLoader - Multijoueur

  • 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é.
TypeScript




  • Après avoir terminé le script, l'Inspecteur assignera un objet supplémentaire à Multiplay avec le composant Multiplay du monde Zepeto.



Écran de paramètres de script d'exemple
Écran de paramètres de script d'exemple

Exemple d'objets avec un composant Multiplay de Zepeto World
Exemple d'objets avec un composant Multiplay de Zepeto World




UIController - Multiplay

  • 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é.
TypeScript




ÉTAPE 4-2 : Code du serveur

  • 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().
TypeScript