我想在运行时随机位置为场景添加预制件。但是,只有一个预制件添加到屏幕上,然后我收到错误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);
}
}
这可能是什么原因?
答案 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具有非法值而在随机比例部分出错。确保在控制台中打开错误和警告,并检查该行上的错误。