オブジェクトが2つある状態で、一方で出た数字以外で、乱数を算出できるプログラムを作りましょう。
今回の例では、Sphere側でランダム算出された後に、Cube側でランダムを実行します。
コンソールで確認すると、2つの数字がそれぞれ重複せず、ランダム表示されています。
はじめに乱数を出す側
まずは、最初にランダム数値を出す側のオブジェクトを作成しましょう。
Sphereを作成。
SphereScript.csを作成し、スクリプトを追加します。
SphereScript.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class SphereScript : MonoBehaviour { public static SphereScript instance; public int SphereNum; public void Awake() { if(instance == null) { instance = this; } } void Update() { if(Input.GetMouseButtonDown(0)) { SphereNum = Random.Range(1, 6); CubeScript.instance.RandomRun(); Debug.Log("Sphere: " + SphereNum); } } } |
Sphereのほうで、クリックのたびに1~5の乱数を出すプログラムです。
後から乱数を出す側
続いて、後からランダムを出すオブジェクトを作ります。
こちらは、Sphereが出した数字以外で、1~5の乱数を出せるようにします。
Cubeを作成。
CubeScript.csを作成し、Cubeに追加します。
CubeScript.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeScript : MonoBehaviour { public static CubeScript instance; public int cubeNum; public void Awake() { if(instance == null) { instance = this; } } public void RandomRun() { cubeNum = Random.Range(1, 6); if(cubeNum == SphereScript.instance.SphereNum) { RandomRun(); } else { Debug.Log("Cube: " + cubeNum); } } } |
ゲームプレイして、画面をクリックしてみましょう。
コンソールに数字が表示されますが、2つの数が重複せずに表示されています。