使用随机比例在运行时添加多个预制件?

时间:2014-11-13 01:12:15

标签: random unity3d

我想在运行时随机位置为场景添加预制件。但是,只有一个预制件添加到屏幕上,然后我收到错误Cannot cast from source type to destination type。这就是我现在正在尝试的事情:

private void generateLevel() {
    GameObject cube;
    for (int i = 1; i < 9; i++) {
        // Generate at random position in sphere
        cube = (GameObject) Instantiate(prefabPlanet, Random.onUnitSphere, Quaternion.identity); // Error

        // Random scale
        cube.transform.localScale = new Vector3(1, 1, 1) * Random.Range(1f, 10f);
    }
}

这可能是什么原因?

2 个答案:

答案 0 :(得分:0)

我找到了一个解决方案,即通过在实例化之前修改预制件来实例化没有变量的GameObject。

我对此解决方案不太满意,因为将对象保存在变量中可能很有用。

    for (int i = 1; i < 9; i++) {
        // Random Scale
        prefabPlanet.localScale = new Vector3(1, 1, 1) * Random.Range(1f, 10f);

        // Random position
        Vector3 position = Random.onUnitSphere * Constants.radius;

        // Instatiate
        Instantiate(prefabPlanet, position, Quaternion.identity);
    }

答案 1 :(得分:-1)

这个脚本对我来说很好,我不知道你做错了什么。除非由于Constantes.maxScale具有非法值而在随机比例部分出错。确保在控制台中打开错误和警告,并检查该行上的错误。