Unity中设置numOfCubes后Instantiate无限生成立方体问题求助
问题原因及解决方法
你的代码逻辑本身没问题,但无限生成立方体的核心原因是:你把这个Script脚本挂载到了要生成的立方体预制体上。
每次通过Instantiate(cube,...)生成新立方体时,这个新立方体会继承预制体上的所有组件,包括这个Script脚本。新立方体激活后,它的Start方法会被触发,再次执行循环生成立方体,如此反复就形成了无限生成的死循环。
解决步骤:
- 从立方体预制体上移除
Script脚本 - 新建一个空GameObject(比如命名为
CubeSpawner),把Script脚本挂载到这个空物体上 - 在空物体的脚本组件面板中,指定
cube为你的立方体预制体,设置numOfCubes数值后运行即可
验证一下:这样只有空物体上的脚本执行一次Start方法,生成指定数量的立方体,新生成的立方体没有这个脚本,就不会继续触发生成逻辑了。
// 你的代码无需修改,只要调整挂载对象即可 public class Script : MonoBehaviour { public GameObject cube; public int numOfCubes; private GameObject[] clones; void Start() { clones=new GameObject[numOfCubes]; for(int i=0; i<numOfCubes; i++){ Vector3 v=new Vector3(Random.Range(-10,10),Random.Range(-10,10),Random.Range(-10,10)); clones[i]=Instantiate(cube,v,transform.rotation); } } void Update() { } }
内容的提问来源于stack exchange,提问作者Giovanni Cascone
相关产品推荐
相关产品推荐

