Dépannage

Questions relatives à Unity

Q. Ma ressource Harmony n’apparaît pas dans l’éditeur Unity.

A. Il y a plusieurs raisons possibles à cela. Vérifiez ce qui suit :

  • Le plugin HarmonyRenderer a-t-il été copié dans le répertoire Assets/Plugins? Le plugin est nommé HarmonyRenderer.bundle sur macOS et HarmonyRenderer.dll sur Windows.
  • Le nom du clip est-il valide? Assurez-vous que le nom du clip existe dans le fichier stage.xml.
  • Les fichiers binaires sont-ils à jour? Si vous avez mis à jour le kit de développement logiciel (SDK) du moteur de jeu Toon Boom vers une version plus récente, assurez-vous de régénérer les fichiers binaires si vous les utilisez afin qu’ils soient compatibles avec le SDK.

Q. Ma ressource Harmony n’apparaît pas dans iOS ou Android lorsqu’elle est exportée depuis Unity.

R. Il y a plusieurs raisons possibles à cela. Vérifiez ce qui suit :

  • Assurez-vous que les ressources Harmony sont copiées dans le répertoire StreamingAssets. Comme le plugin HarmonyRenderer ne peut pas utiliser la base de données des ressources d’Unity, les ressources Harmony ont été regroupées sous forme de fichiers simples afin qu’elles soient accessibles au plugin.
  • Le plugin pour iOS est-il de la même version que celui utilisé pour l’éditeur? Le plugin pour iOS se trouve dans le répertoire Assets/Plugins/iOS.
  • Le nom du clip est-il orthographié correctement? Windows et macOS ne sont généralement pas des systèmes de fichiers sensibles à la casse, mais iOS et Android le sont. Cela implique qu’une ressource visible sur l’éditeur n’apparaîtra pas sur la plate-forme mobile car elle est introuvable.
  • Assurez-vous que la taille de vos feuilles de sprite ne dépasse pas la limite matérielle de l’appareil sur lequel vous travaillez. Sinon, la texture pourrait ne pas apparaître du tout.
  • Le chemin d’accès au dossier du projet est-il un chemin d’accès absolu? Si c’est le cas, cela peut ne pas fonctionner sur l’appareil mobile car ce chemin n’existe pas sur la plate-forme. Assurez-vous d’utiliser des chemins d’accès relatifs au répertoireStreamingAssets .

Q. Ma ressource Harmony ne se combine pas correctement à d’autres sprites 2D dans Unity. Les sprites 2D apparaissent toujours derrière les ressources d’Harmony même si je change l’index d’ordre dans GameObjects.

R. Les sprites 2D de Unity et les ressources Harmony ne peuvent actuellement pas être combinées ensemble. Il existe cependant plusieurs solutions pour contourner ce problème :

Utilisez des textures 2D à la place de sprites 2D. Les textures 2D, lorsqu’elles sont jointes à une géométrie dans Unity, se combineront comme les autres éléments 3D du plan et vous pouvez modifier l’ordre de composition en incrémentant ou décrémentant la valeur Z de la transformation.

Utilisez plusieurs caméras pour un rendu de votre plan en plusieurs parties. Voici comment procéder :

Harmony Camera

  1. Créez une nouvelle caméra.
  2. Assurez-vous de définir les GameObjects Harmony à un calque spécifique (en haut à droite de l’inspecteur d’objets de jeu).
  3. Dans la caméra, définissez le masque d’élimination sur ce calque (et les autres calques dont vous voulez obtenir le rendu en arrière-plan).
  4. Ajoutez le composant HarmonyCamera à cette caméra afin que les GameObjects Harmony soient rendus correctement.

Caméra Sprite

  1. Créez une nouvelle caméra.
  2. Veillez à définir les objets sprite 2D sur un calque spécifique.
  3. Dans la caméra, définissez le masque d’élimination sur ce calque (et les autres calques dont vous voulez obtenir le rendu devant les sprites 2D).
  4. Assurez-vous de définir les balises d’effacement sur Profondeur uniquement ou Ne pas effacer.
  5. Définissez la profondeur pour qu’elle soit supérieure à la caméra Harmony.
  6. Par la suite, si vous déplacez la caméra, veillez à déplacer les deux caméras simultanément si vous voulez que les objets de jeu restent synchronisés.

Q. Comment pouvez-vous spécifier la fréquence d’affichage de l’animation? Mon animation ne joue pas à la même fréquence d’affichage dans Harmony et dans le générateur d’aperçu de jeu dans l’éditeur Unity.

R. Par défaut, le générateur d’aperçu de jeu prévisualise l’animation à 24 images par seconde. Dans votre jeu, à l’aide du composant Animation Harmony, vous pouvez programmer des animations à la fréquence souhaitée.

Exemple

HarmonyAnimation animation = GetComponent<HarmonyAnimation>();

if (animation != null)

{

animation.PlayAnimation( frameRate, clipName );

}

Q. Je ne peux pas voir mon personnage dans la Scene View dans Unity. Existe-t-il un moyen de prévisualiser la ressource Harmony?

R. Le rendu des ressources Harmony étant implémenté dans un plugin, il ne met à jour aucun composant de rendu dans le GameObject, et ne peut donc pas être affiché directement dans Scene View.

Cependant, vous devriez toujours être en mesure de prévisualiser vos ressources dans la Game View (même si vous ne jouez pas). Pour faciliter l’identification et le positionnement des ressources, nous avons également ajouté des formes de boîte de délimitation rendues dans l’éditeur et la Game View.

Q. Comment la mémoire est-elle gérée dans Unity pour les ressources Harmony?

R. La plupart des algorithmes à forte intensité de mémoire sont exécutés dans le plugin C ++. La structure des données est maintenue active tant qu’un GameObject y fait référence. Cela signifie que vous pouvez instancier autant de clones d’un personnage sans recharger les données. Lors de sa destruction, le GameObject invoquera un nettoyage auprès du plugin et supprimera son objet de rendu associé. La feuille de sprite et les données d’animation sont maintenues actives tant qu’un seul GameObject les utilise et qu’un nettoyage est invoqué une fois qu’elles sont détruites.

Q. La mémoire des ressources Harmony n’apparaît pas dans le profileur Unity. Pouvons-nous profiler la mémoire des ressources?

R. Le profileur Unity ne relève pas les ressources Harmony dans ses traces. Étant donné que le GameObject Harmony fait référence à un plugin C ++ pour la gestion des ressources et le rendu, sa mémoire ne peut pas être enregistrée dans le profileur. Les profileurs tels que celui fourni avec XCode ou Visual Studio devraient vous permettre de faire un suivi de la mémoire de votre application, y compris les ressources Harmony et devraient également fournir un résultat plus précis.

Questions d’ordre général

Q. Comment pouvez-vous spécifier la résolution utilisée pour les dessins dans la feuille de sprites?

R. La résolution du dessin n’est pas fixée dans Harmony. Comme vous exportez le plan vers plusieurs feuilles de sprites dans plusieurs résolutions, chaque dessin aura une résolution différente à la fin. Vous pouvez utiliser la Drawing View pour voir la résolution d’un dessin par rapport au reste du plan. En activant la table lumineuse dans la Drawing View, vous verrez tous les dessins du plan non transformés dans les mêmes proportions qu’ils apparaîtront dans la feuille de sprites. Plus précisément, la résolution utilisée dans la feuille de sprites pour un dessin est la taille à laquelle il apparaît sans transformation dans la Camera View, mis à l’échelle à la résolution de la feuille de sprites (« Résolutions de sprite » dans la boîte de dialogue Exporter la feuille de sprite).

Une fois que vous savez cela, vous pouvez ajuster aisément la taille d’un seul dessin. Utilisez l’outil Sélection pour réduire un dessin et utilisez l’outil Transformation pour le remettre à l’échelle afin qu’il ne change pas visuellement dans la Camera View. Cela devrait vous permettre de modifier la taille des dessins dans la feuille de sprite.

Q. Les ressources sont longues à charger sur les appareils mobiles. Y a-t-il un moyen d’accélérer le processus?

R. Harmony exporte les documents à un format XML d’échange destiné à être compatible avec plusieurs moteurs de jeu. Cependant, en raison de la lenteur de la lecture des données à partir des fichiers XML, cela est principalement destiné à tester les ressources de votre projet. À un moment donné, ils doivent être convertis en une structure de données compacte binaire qui peut être lue en mémoire beaucoup plus rapidement que le fichier XML.

Vous pouvez utiliser l’outil Xml2Bin fourni avec le SDK du moteur de jeu pour convertir vos fichiers XML au format binaire. Cet outil se trouve dans le dossier Utils/Xml2Bin et une version précompilée pour macOS est disponible dans le dossier Utils/macosx.

Q. Je recontre des problèmes avec le personnage que j’ai exporté dans le moteur de jeu. Les morceaux ne sont pas exportés ou ne s’affichent pas dans le bon ordre. Que dois-je faire?

R. Pour s’intégrer au SDK du moteur de jeu, toutes les animations dans Harmony doivent suivre certaines lignes directrices. Voici quelques-uns des points clés pour construire un personnage compatible avec le rendu dans le SDK du moteur de jeu :

  • Construisez votre rig dans la Timeline View. La structure de données du SDK du moteur de jeu est similaire à ce qui est affiché dans la Timeline View et un système de nœuds avancé peut ne pas toujours exporter correctement.
  • Étant donné que chaque nœud de niveau supérieur de votre plan s’affiche séparément dans le SDK du moteur de jeu, il se peut qu’ils ne se croisent pas. Un nœud de niveau supérieur est également isolé dans sa feuille de sprites séparée pour permettre à l’artiste une meilleure segmentation de la mémoire du personnage. Si vous avez créé un caractère avec des nœuds de niveau supérieur et que vous n’obtenez pas le résultat escompté, créez un groupe de niveau supérieur ou une cheville pour les regrouper tous ensemble.
  • Utilisez l’ordre micro-Z si nécessaire. Sans ordre Z, un calque enfant apparaîtra derrière son parent (comme c’est le cas dans Harmony). Pour modifier l’ordre, ajoutez un décalage Z au calque enfant.
  • Le script d’exportation ne gère pas les images bitmap simples. Les dessins vectoriels Toon Boom et les dessins bitmap Toon Boom sont cependant pris en charge.
  • Le script d’exportation ne gère pas les symboles.

Q. Il y a quelques problèmes d’animation lors de la lecture du jeu, par défaut, l’animation sera toujours à la première animation dans la liste déroulante (généralement Inactif).

R. En effet, Inactif est défini comme état par défaut dans le contrôleur d’animation. Procédez comme suit :

  • Vous pouvez modifier le contrôleur d’animation à l’aide de Window Animator.

  • Vous verrez la machine d’état de l’animation. Notez la flèche connectant l’entrée à l’état Inactif.

  • En changeant l’état par défaut de la machine d’état en un état différent, vous modifiez l’animation en mode lecture et vous déplacez cette flèche.

  • Cliquez sur le bouton droit de la souris et choisissez « Faire la transition », pour relier des animations entre elles pour la lecture.
  • Le développeur du jeu est responsable de la modification de la machine d’état de l’animation pour qu’elle réponde aux besoins du jeu.