0
votes

Mauvais numéro convertit Int vers String C #

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

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.


5 commentaires

Je ne comprends pas cette partie: {totalcounter = convert.toint32 ((coincounter.text)); // convertir le compteur de texte en chiffres} 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?


3 Réponses :


0
votes

Vous n'êtes pas obligé de le faire dans Mettre à jour mais seulement lorsque vous le modifiez réellement.

La méthode que vous recherchez est probablement INT.TRAYSE

Vous devez utiliser int Pour les montants (sauf si vous aurez des valeurs telles que 1.5 pièces ultérieures)

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 xxx


0 commentaires

0
votes

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); 
}


0 commentaires

0
votes

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: xxx


0 commentaires