2017-03-14 7 views
0

私はこのスクリプトを持っている:"Random.range"でシーンを変更するにはどうすればいいですか?

public class EmpezarJuego : MonoBehaviour { 

int number; 

public void Empezar() { 

    number = Random.Range(1,4); 

    if (number == 1) { 
     SceneManager.LoadScene ("GAME"); 
    } 
    if (number == 2) { 
     SceneManager.LoadScene ("GAME_1"); 
    } 
    if (number == 3) { 
     SceneManager.LoadScene ("GAME_2"); 
    } 
    if (number == 4) { 
     SceneManager.LoadScene ("GAME_3"); 
    } 



} 
} 

私が欲しい:数= 2場合の数= 1は、私のシーンは、ゲームであれば、私のシーンは、それがなぜワークスはありませんGAME_1です....しかし? ?

+0

どのように機能していませんか?あなたのコードは少なくとも適切なif文を入力しますか?また、int値を持つ 'Random.Range()'の上限は排他的です。つまり、1から4までの数字にする場合は、実際には 'Random.Range(1,5)'が必要です。 – Serlite

+1

どのように動作しませんか?ビルドインデックスにシーンを追加しましたか? – Maakep

+1

LOL @Fredrik +1!ビルドインデックスにシーンを追加するのを忘れてしまった!ありがとう! –

答えて

1

シーンマネージャを使用するには、シーンをビルドインデックスに追加する必要があります。あなたがこれを行う:

ファイル - >設定をビルド - >あなたはSceneManager.LoadScene("NameOfScene")を呼び出すことができますかあなたは、例えば、次のレベルをロードしたい場合は、

を書くことができ、その後オープンシーン

を追加します。

SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1); 

ビルドインデックスリストに次のシーンをロードする。 Unity Docsによると

+1

彼のRandom.Range(1,4)が決して値4を持たないことを付け加えることは良いでしょう。 – CNuts

+1

確かに!浮動小数点数を使用していない限り、最大値が含まれます。 'int Random.Range'は排他的な最大値を持ちます。 – Maakep

0

Random.Range ...

[排他的] [包括]とmaxの間と分のランダムなint型数を返しますこれは、あなたがRandom.Range(1,5)をしなければならないことを意味します4番目にはifがヒットします。

希望が解決します。

P.S ifブロックの代わりにswitch(number)を使用する必要があります。

+0

私はそれがどのように動作するのか知っていますが、ドキュメントによれば、最小値と最大値の両方が含まれています...しかし、最大値はインクルードするために+1する必要があるならば、包括的ではありません。 **最大値はインクルーシブなので、Random.Range(0.0f、1.0f)を使用すると、値として1.0が返される可能性があることに注意してください。しかし、明らかにこれは当てはまらない、私はそれを自分でテストした。奇妙な – Maakep

+0

Nevermind。フロートの過負荷です。 intの過負荷にはEXCLUSIVE maxがあります。それは意味がある、ハハ。 – Maakep

+0

@Fredrikあなたは正しいです、ちょうどあなたの編集を受け入れました – yummypasta

関連する問題