Ce manuel d'instructions décrit le processus d'utilisation de Vizzy de manière non standard pour générer des variables dynamiques et simuler « structurer » variables dans l'environnement Vizzy.
Veuillez noter que ce guide exploite une fonctionnalité non publiée de Vizzy, qui peut potentiellement devenir incompatible avec les prochaines versions de Juno sans préavis. Son efficacité a été confirmée sur la version 1.1.109.0, qui est la version PC la plus récente en septembre 9, 2023.
introduction
Vizzy englobe trois types de données principaux:
- Nombres à virgule flottante
- Vecteurs, qui sont constitués de trois nombres à virgule flottante
- Cordes
En outre, Vizzy prend en charge un type de données de liste, où chaque entrée de la liste peut appartenir à l'un des trois types susmentionnés. Là’il n'est pas nécessaire que tous les éléments de la liste partagent le même type de données.
Bien que ces types de données suffisent dans la plupart des cas, il existe des scénarios dans lesquels il devient avantageux de stocker une liste de valeurs sans utiliser le type de données list.
Pourquoi éviter le type de données liste, tu pourrais te demander?
La principale raison de ce choix est l’écart de performance important. Malgré les allégations d'améliorations des performances dans la version 1.1.109, le type de données de liste reste particulièrement lent. Mon engagement envers cette implémentation alternative était bien établi au moment de la sortie de cette version..
De plus, Les blocs Vizzy conçus pour les opérations de liste ont tendance à être de taille lourde. Même s'ils peuvent faciliter la compréhension, en particulier pour les utilisateurs dépourvus de connaissances en programmation, ils posent des défis lors de la création d'applications Vizzy complexes.
Un autre inconvénient est que les listes ne sont pas accessibles via les expressions FUNK. Pour des expressions mathématiques plus complexes, il’Il est avantageux d'encapsuler les calculs dans une expression FUNK plutôt que de les construire à l'aide de blocs Vizzy.. toutefois, si votre équation repose sur des listes, cette option perd de son attrait.
Dans le domaine des applications complexes, Les listes de variables explicitement déclarées représentées par les blocs verts peuvent devenir lourdes – à la limite de l'absurde dans certains cas. Dans de tels contextes, toute méthode capable de réduire la taille de cette liste devient hautement souhaitable.
Enfin, il’Il est à noter que cette technique permet la création de structures de données complexes contenant d'autres structures complexes – un « Liste des listes, » pour ainsi dire. Cela représente la seule capacité unique de cette approche que les listes conventionnelles ne peuvent pas reproduire..
Comment
Je suppose que vous maîtrisez bien « définir une variable [] à [] » Bloc Vizzy. Le concept est simple: vous établissez une variable (en utilisant le « Créer une variable » bouton), aboutissant à la création d’un bloc vert. Ensuite, vous faites glisser ce bloc vert pour occuper le premier emplacement vide dans le « définir une variable [] à [] » bloquez et précisez à droite la valeur que vous comptez attribuer à la variable.
toutefois, laisser’s envisager un scénario alternatif:
Que se passe-t-il si vous choisissez de ne pas définir et positionner de bloc vert dans l'emplacement initial ?? Et si vous choisissiez plutôt de faire quelque chose de différent:
Le résultat est le suivant: « La valeur de ‘1’ est affecté à la variable ‘Active_Craft_ID. » Autrement dit, il accomplit exactement la même action que celle illustrée dans l'exemple initial.
Maintenant, et si tu avais’J'ai défini une variable ‘Active_Craft_ID’ en utilisant le « Créer une variable » bouton? Bien, la valeur est toujours affectée à une variable portant le nom ‘Active_Craft_ID.’ toutefois, il devient évident que vous ne pouvez pas récupérer cette valeur via un bloc vert. je’J'y reviendrai plus en détail prochainement.
Mais, laisser’envisageons un autre scénario:
Cette méthode fonctionne également de la manière attendue – à la fin, toi’je posséderai dix variables, nommé « Test1 » à travers « Test10, » tous dotés d'une valeur de 1.
Maintenant, la question suivante se pose: « Comment accéder à une variable générée via ce processus? » Naturellement, l'approche suivante ne donnera pas le résultat souhaité:
Dans le scénario donné, l'opération attribue la chaîne « Test1 » à la variable « Active_Craft_ID » quand l'intention était d'attribuer la valeur de la variable « Test1 » à « Active_Craft_ID. »
toutefois, il existe une solution utilisant FUNK – par défaut, lorsque vous spécifiez un nom de variable dans une chaîne FUNK, il est interprété comme une référence variable. Par conséquent, cette approche permet effectivement d'atteindre le résultat souhaité:
Il y a deux considérations importantes à garder à l’esprit lors de l’utilisation de cette approche:
- Les expressions FUNK ne prennent pas en charge les chaînes, même en faisant référence à des variables. Si vous spécifiez le nom d'une variable contenant une chaîne et tentez d'y accéder via une expression FUNK, le résultat sera 0. Donc, alors qu'il est possible d'attribuer des chaînes à des variables dynamiques comme décrit précédemment, tu as gagné’Vous ne pourrez pas accéder à leurs valeurs à moins que vous créiez un bloc vert pour la variable à l'aide du « Créer une variable » bouton.
- Les expressions FUNK supposent que les variables sont des nombres à virgule flottante par défaut, sauf indication contraire. Si tu’J'ai stocké un vecteur dans une variable dynamique, vous devez préfixer le nom de la variable avec « v: » pour informer FUNK que la variable contient un vecteur.
Voici la bonne méthode pour accéder à un vecteur stocké dans une variable dynamique:
Ce code attribuera des vecteurs à 10 variables, puis sortez le 10 vecteurs vers le journal local:
En conclusion, Je peux confirmer que les variables dynamiques sont bien sérialisées lorsqu'un craft est sauvegardé, comme en témoigne l'inspection du fichier XML. Pendant que j'ai’t effectué une vérification pour s’assurer que les valeurs sont restaurées avec précision, J'ai un haut degré de confiance, à environ 99.9%, qu'ils sont bien restaurés correctement.
Sujets plus avancés
Création « fonctions d'assistance » est extrêmement utile pour simplifier le processus d'extraction de valeurs particulières à partir d'une collection de valeurs similaires. Ici’est un exemple de la façon dont cela peut être accompli:
Ces fonctions fonctionnent toutes avec un seul paramètre, qui devrait être une chaîne représentant un ensemble de variables interdépendantes, et ils renvoient une variable spécifique de ce groupe.
Lorsqu'il s'agit d'effectuer des opérations mathématiques avec des variables dynamiques, ma recommandation est d'utiliser les expressions FUNK autant que possible, comme démontré ici:
Vous pouvez obtenir le même résultat en utilisant le « format » bloquer au lieu du « Rejoindre » bloc, bien qu'il’il convient de noter que le « Rejoindre » le bloc est généralement considéré comme plus rapide. Ici’est un exemple d'utilisation du « format » bloquer à cet effet:
C'est tout ce que nous partageons aujourd'hui pour cela Junon: Nouvelles origines guide. Ce guide a été initialement créé et rédigé par mreed2. Si nous ne parvenons pas à mettre à jour ce guide, vous pouvez trouver la dernière mise à jour en suivant ceci lien.