随机对象生成(Unity 2D)

时间:2019-03-21 08:48:59

标签: c# unity3d pool

我目前正在创建一个大亨游戏,但是我在如何为客户生成随机对象方面遇到了问题。这不是第一次,我在2年前从其他流派学过一次随机生成,但是在Unity 5.3中,如果我没有记错的话。所以我必须重新从头开始。所以我尝试了一个教学视频,这​​是编码的过程,并做了一些修改:

public Text TimerText;
public float LevelTimeLimit;
private bool FullTime = false;

public Text TimerText;
public float LevelTimeLimit;
private bool FullTime = false;

public GameObject[] ObjPrefabs;


[System.Serializable]
public class myPool{
    public string tag;
    public GameObject Customer;
    public int ServiceTime;
}

public List<GameObject> CustomerPool;
public Dictionary<string, Queue<GameObject>> PoolDictionary;

public GameObject GetCust(string type)
{
    for (int i = 0; i < ObjPrefabs.Length; i++)
    {

        GameObject newObject = (GameObject)Instantiate(ObjPrefabs[i]);
        newObject.SetActive(false);
        CustomerPool.Add(newObject);

    }

    return null;
}

我的问题是它不会产生随机的客户。有人知道我想念什么吗?

1 个答案:

答案 0 :(得分:0)

for (int i = 0; i < ObjPrefabs.Length; i++)
{

    GameObject newObject = (GameObject)Instantiate(ObjPrefabs[i]);
    newObject.SetActive(false);
    CustomerPool.Add(newObject);

}

此代码产生列表中的每个预制件。 如果要从列表中生成随机预制件,请尝试用此代码替换。

GameObject newObject = (GameObject)Instantiate(ObjPrefabs[Random.Range(0, ObjPrefabs.Length)]);

random.range(0, ObjPrefabs.Length)-从0ObjPrefabs.Length中选择一个随机数。

并从ObjPrefabs中获取该位置的元素。