Как получить случайное число, которое можно использовать только один раз? - PullRequest
0 голосов
/ 24 января 2019

После того, как случайное число было выбрано, возможно ли войти в первый оператор if только один раз и пропускать его каждый раз, когда выбрано это число?

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 ]

0 голосов
/ 24 января 2019

Оппс, ребята, из-за вводящего в заблуждение вопроса, но я только что узнал, хе-хе, мир :)), чего я хочу добиться, так это

  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");
   }
0 голосов
/ 24 января 2019

Если я вас правильно понимаю, вы хотите вывести одну вещь при первом выборе числа, а что-то еще для каждого последующего выбора того же номера. Если это правильно, я думаю, что самый простой способ сделать это с использованием существующего кода - это присвоить значение Random1 внутри блока else вложенного оператора if/else, который проверяет значение Random1. Таким образом, вы назначаете его только один раз:

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...
}
0 голосов
/ 24 января 2019

Редактировать

Если вы хотите использовать случайное число только один раз, я бы сохранил этот вид информации в лучшую структуру данных, такую ​​как HashSet. Он имеет свойство содержать только уникальные номера. Вы можете использовать природу этой структуры данных, чтобы вам не приходилось создавать переменные для каждого случайного числа, которое вы хотите собрать.

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
}

Оригинал

Вы ищете if-else блок.

if (Random == 1)
{ ... }

else if (Random == 2)
{ ... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...