我试图让系统正常工作,以便在游戏开始时和每个墙上,它会随机出现在游戏中。不知何故,当我运行它时,它会保留或摧毁所有的墙壁。我该如何解决这个问题?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class WallGen : MonoBehaviour{
public GameObject wallObject;
System.Random rnd = new System.Random();
// Use this for initialization
void Start () {
generate();
}
void generate()
{
int number = rnd.Next(1, 5);
if (number == 2)
{
OnDestroy();
}
}
private void OnDestroy(){
Destroy(wallObject);
}
// Update is called once per frame
void Update () {
}
}
答案 0 :(得分:1)
每次执行new System.Random()
时,都会使用时钟进行初始化。现在,当同时调用Start函数时,您将获得所有gameobjects
的相同值。您应为所有Random
保留一个gameobjects
个实例,并在同一个实例上继续使用Next
。
或简单的解决方案
只需使用Random.Range (1,5)
代替rnd.Next(1, 5);
作为旁注,请不要使用函数名OnDestroy
,因为它是Unity中的MonoBehaviour functions之一,并且在附加的游戏对象被销毁时会自动调用。