J'ai un comptoir de monnaie simple, dans un jeu d'unité 2D. Mais cela compte une pièce de monnaie comme 2. Je pense que c'est parce que c'est à cause d'une mauvaise conversion int to string. Donc, dans le journal de débogage, il affiche le montant total droit, mais à l'interface utilisateur, il montre un mauvais numéro. A l'exemple, lorsque la quantité totale est 1, il affiche 2 etc. p> p>
3 Réponses :
Vous n'êtes pas obligé de le faire dans La méthode que vous recherchez est probablement INT.TRAYSE P> Vous devez utiliser que vous n'exécutez votre code chaque fois qu'il est en collision ... avec quoi que ce soit. Vous ne devriez que vous entrer en collision avec une pièce de monnaie à la place. Utilisez des balises ou comparez avec la valeur référencée dans votre cas p> Mettre à jour code> mais seulement lorsque vous le modifiez réellement. int Code> Pour les montants (sauf si vous aurez des valeurs telles que 1.5 code> pièces ultérieures) p>
Il est préférable d'écrire votre code convertisseur dans le vide de déclenchement, après cela, vérifiez-le; Cela pourrait être arrivé à cause de la fonction de mise à jour, essayez de comme ça et vérifiez à nouveau: `
public GameObject coin;
public Text CoinCounter;
private float TotalCounter = 0;
private void Update()
{}
private void OnTriggerEnter2D(Collider2D collision)
{
TotalCounter = (TotalCounter + 1);
Debug.Log(TotalCounter);
CoinCounter.text = TotalCounter.ToString();
Debug.Log(CoinCounter.text);
coin.SetActive(false);
}
Problème n'était pas dans la conversion, le déclencheur a fonctionné deux fois. Besoin de vérification si la pièce est activée avant de le désactiver et d'ajouter au compteur de pièces de monnaie. Par exemple:
Je ne comprends pas cette partie:
{totalcounter = convert.toint32 ((coincounter.text)); // convertir le compteur de texte en chiffres} code> Pouvez-vous expliquer ce que c'est? une méthode? un setter?Pourquoi TotalCounter est-il déclaré comme un flotteur et non un entier? Il semble également que vous ayez une déclaration de méthode manquante dans le code ci-dessus.
Y a-t-il des événements de mise à jour de valeur sur le niveau de l'interface utilisateur? Comme lorsque les données proviendront de ces blocs, les mettez-vous à la mettre à jour à nouveau avec +1
Pourquoi avez-vous besoin de lire TotalCounter à partir de la zone de texte dans la mise à jour, je ne pense pas que cela soit nécessaire ici, il suffit de mettre à jour le texte et le compteur total chaque fois que vous touchez une pièce de monnaie
@ADEWREW> Pourquoi le montant total a-t-il déclaré comme un flotteur et non un entier? Float et INT peuvent contenir les mêmes types de valeur (INT ne peut pas contenir des nombres décimaux, je sais, mais float peut contenir des chiffres réguliers), n'est-ce pas? > Il semble également que vous ayez une déclaration de méthode manquante dans le code ci-dessus. QUANT LA MÉTHODE N'EST PAS DÉCLARÉE?