AIDE
FAQ sur le développement

Comment utilisez-vous un Singleton ?

7min
un singleton est un modèle de conception qui garantit qu'il n'y a qu'une seule instance d'une classe particulière dans un programme le modèle singleton fournit une instance globale unique d'une classe, la rendant facilement accessible depuis d'autres scripts qui en ont besoin, comme la gestion de la logique, de l'audio, de l'interface utilisateur et des ressources centralisées dans le monde dans zepetoscript, vous pouvez implémenter un singleton de la manière suivante private static instance classname = null; public static get instance() classname { &#x9;if (this instance == null) { &#x9; this instance = gameobject findobjectoftype\<classname>(); &#x9;} &#x9;return this instance; } 👍 conseils s'il y a déjà un gameobject avec un script singleton attaché dans la scène, vous pouvez utiliser ce format s'il n'y en a pas, ajoutez du code pour créer le gameobject exemple new gameobject("nomobjet") addcomponent\<classname>(); implémentons un singleton pour gérer l'interface utilisateur dans un exemple 1\) ajoutez ui > texte et bouton à la scène configurez la logique pour augmenter le score lorsque le bouton "augmenterscore" est pressé configurez la logique pour diminuer le score lorsque le bouton "diminuerscore" est pressé 2\) créez un script appelé "scoremanager," où le singleton sera appliqué le script scoremanager sera responsable de l'augmentation/diminution du score et de la mise à jour du texte lorsqu'il est appelé depuis d'autres scripts import { zepetoscriptbehaviour } from 'zepeto script'; import { gameobject } from 'unityengine'; import { text } from 'unityengine ui'; export default class scoremanager extends zepetoscriptbehaviour { // déclaration du singleton private static instance scoremanager = null; public static get instance() scoremanager { if (this instance == null) { this instance = gameobject findobjectoftype\<scoremanager>(); } return this instance; } // déclaration des variables public scoretext text; private currentscore number; start() { // définir le score initial à 0 pour les tests this currentscore = 0; } // d'autres scripts peuvent appeler increasescore public increasescore(amount number) { this currentscore += amount; this scoretext text = `score ${this currentscore}`; } // d'autres scripts peuvent appeler decreasescore public decreasescore(amount number) { this currentscore = amount; this scoretext text = `score ${this currentscore}`; } } description du script private static instance c'est une variable statique privée au sein de la classe, initialement définie sur null public static get instance cette propriété statique fournit un moyen pour le code externe d'accéder à l'instance unique de cette classe vérifiez if (this \\ instance == null) si c'est null, utilisez gameobject findobjectoftype<>() pour trouver et retourner un composant de type classname, et l'assigner à la variable statique 3\) après avoir écrit le script, retournez à l'inspecteur et connectez le composant texte 4\) ensuite, créez un script appelé "scorelogicsample" pour démontrer comment appeler le singleton assurez vous que scoremanager et scorelogicsample sont dans le même répertoire écrivez du code comme ceci import { zepetoscriptbehaviour } from 'zepeto script'; import { gameobject } from 'unityengine'; import { text, button } from 'unityengine ui'; // importer le script singleton import scoremanager from ' /scoremanager'; export default class scorelogicsample extends zepetoscriptbehaviour { public increasescorebutton button; public decreasescorebutton button; // déclarer une variable de type scoremanager private scoremanager scoremanager; start() { // assigner scoremanager à la variable this scoremanager = gameobject findobjectoftype\<scoremanager>(); this increasescorebutton onclick addlistener(()=> { // appeler la fonction déclarée dans le singleton this scoremanager increasescore(10); }); this decreasescorebutton onclick addlistener(()=> { // appeler la fonction déclarée dans le singleton this scoremanager decreasescore(10); }); } } il est important de spécifier le chemin correctement lors de l'obtention du script singleton vous pouvez adapter la partie où scoremanager est appelé dans votre propre script selon vos besoins 5\) appuyez sur le bouton \[▶︎(lecture)] pour tester vous devriez observer les fonctions dans scoremanager être appelées lorsque vous cliquez sur les boutons dans scorelogicsample, ce qui les fait fonctionner comme prévu