Une fois qu'un nombre aléatoire a été sélectionné, est-il possible d'accéder à la première instruction if une seule fois et de l'ignorer toutes les deux fois que ce numéro est sélectionné?
int Randomizer;
int Random1;
int Random2;
public void RandomButton()
{
Randomizer = Random.Range(1,3);
if (Randomizer == 1)
{
Random1 = 1;
Debug.Log("First Value");
if (Random1 == 1)
{
Debug.Log("Nested Value");
}
}
if (Randomizer == 2)
{
Debug.Log("Second Value");
if (Random2 == 2)
{
Debug.Log("Nested Value");
}
}
}
3 Réponses :
Si vous ne souhaitez utiliser un nombre aléatoire qu'une seule fois, je sauvegarderais ce type d'informations dans une meilleure structure de données comme un HashSet . Cela a la propriété de ne contenir que des nombres uniques. Vous pouvez utiliser la nature de cette structure de données pour ne pas avoir à créer de variables pour chaque nombre aléatoire que vous souhaitez collecter.
if (Random == 1)
{ ... }
else if (Random == 2)
{ ... }
Vous recherchez Bloc if-else .
using System.Collections.Generic
HashSet<int> RandomNumbersUsed = new HashSet<int>();
public void RandomButton()
{
int randomNumber = Random.Range(1,3);
if (!RandomNumbersUsed.Contains(randomNumber))
{
// Add it to the HashSet so that it cannot be used again
}
else
{
// Tell the user that the random has been selected before
}
if (randomNumber == 1)
{
// Do processing when random == 1
}
if (randomNumber == 2)
{
// Do processing when random == 2
}
// Continue adding necessary random numbers
}
Ops désolé les gars pour la question trompeuse, mais j'ai découvert tout à l'heure hehe peace :)) ce que je veux réaliser est que
int Randomizer;
int Random1;
int Random2;
public void RandomButton()
{
Randomizer = Random.Range(1,3);
if (Randomizer ==1)
Random1 += 1;
if (Random1==1)
Debug.Log("Nested Value 1");
if (Random1==2)
Debug.Log("Nested Value 2");
}
Si je vous comprends bien, vous voulez afficher une chose la première fois qu'un nombre est choisi, et autre chose pour chaque fois que le même nombre est choisi. Si c'est correct, je pense que le moyen le plus simple de le faire en utilisant votre code existant est d'attribuer la valeur de Random1 à l'intérieur du bloc else d'un if / else imbriqué instruction qui vérifie la valeur de Random1 . De cette façon, vous ne l'attribuez qu'une seule fois:
public void RandomButton()
{
Randomizer = Random.Range(1, 3);
if (Randomizer == 1)
{
if (Random1 == 1)
{
Debug.Log("Nested Value");
}
else
{
Debug.Log("First Value");
Random1 = 1;
}
}
// Repeat the same pattern for the other number here...
}
Ce que vous essayez de faire n'est pas clair.
Pourquoi? Qu'essayez-vous de réaliser?
Pouvez-vous formater un peu mieux votre code, afin que les lignes soient mieux alignées verticalement?
Ce que je veux dire, c'est que la "première valeur" est supprimée après la première utilisation et la deuxième utilisation, elle utilisera uniquement la "valeur imbriquée" au hasard == 1 au lieu de "première valeur" :))
Il semble que vous n'ayez jamais défini
Random2sur quoi que ce soit. Et dans le premier cas, vous définissezRandom1 = 1juste avant de vérifier cette condition, donc elle sera toujourstrue.ops désolé mauvais commentaire hehe je voulais dire dans randomizer == 1 il utilisera "First Value" et après cela randomizer == 1 à nouveau au lieu de "First Value" il utilisera seulement "Nested Value" pas la "First Value" à nouveau