2016-05-08 2 views
0

Я использовал C++ в течение длительного времени. Теперь я только начал работать с C# в Unity3D. Я почти готов к завершению работы приложения, но я не могу найти рабочий генератор int в Unity C# (с минимальными значениями). Я попытался следующие:Unity3D C# Random Int Generator

r = Random.Range(min, max) 

и

Random rand = new Random(); 
r = rand.next(min, max) 

Оба не работают. Я знаю, на C++ вы используете:

r = rand() % max + min; 

Если вы хотите получить случайное число. Но как обстоят дела с Unity C#? Код:

EDIT:

using UnityEngine; 
using System.Collections; 

public class STarget : MonoBehaviour { 
public GameObject inter; 
int rand; 
public GameObject TS1; 
public GameObject TS2; 
public GameObject TS3; 
public GameObject TS4; 
public GameObject TS5; 
void Update() { 
    rand = Random.Range(1, 6); 
} 
public void GameRun() { 
    switch (rand){ 
     case 1: 
      inter = TS1; 
      break; 
     case 2: 
      inter = TS2; 
      break; 
     case 3: 
      inter = TS3; 
      break; 
     case 4: 
      inter = TS4; 
      break; 
     case 5: 
      inter = TS5; 
      break; 
    } 
    Game.TargetSingle(inter); 
    } 
} 
+6

Объясните, что «не сработало», вы получили исключение? у вас есть результат, которого вы не ожидаете? Мы не можем помочь вам решить проблему, если вы не оспариваете проблему. –

+1

'rand.Next (мин., Макс.)' Проверяется. Удостоверьтесь, что вы не попадаете в [отверстие новых одноразовых рандомов в цикле] (http://stackoverflow.com/questions/767999/random-number-generator-only-generating-one-random-number) –

+0

'Random.Range (min, max)' также должен работать. В зависимости от того, что вы хотите. –

ответ

3

Исходя из C++, так же, как r = rand() % max + min даст вам случайные числа между min и max в C++, он отличается в C#. Сначала вы используете Random.Range(min, max), чтобы получить случайное число в Unity.

Что-то, чтобы действительно понять, что Random.Range(min, max) будет не действительно дают вам случайным образом из между min и max, как это делает в C++. Он даст вам случайное число от min до (max-1), если предоставленные min и max являются целыми числами.

Так что, когда вам нужно случайное число от 1 к 5, добавить 1 к максимальному (5), или вы получите только цифры от 1 до 4. Random.Range(2, 5+1) или Random.Range(min, max+1). Вероятно, это ваша проблема.

+0

Помните, что он включает максимальное значение, если вы передаете ему 'float'. –

+0

@ gjttt1 Думаю, я это сказал. «Это даст вам случайное число между min a (max-1), если предоставленный min и max являются ** целыми **« – Programmer

+0

ах да, я, должно быть, прочитал это слишком быстро! Моя ошибка –