我在另一个对象附近创建GameObject。函数“Instantiate”重复自身(进入周期),这就是问题所在。我需要它只被召唤一次。
我试过了: 1.调用功能按下按钮(GetKey)。此功能仍可创建3-4个对象。 2.在Update和FixedUpdate中添加代码。它仍然会创建几个对象。 :(
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class table : MonoBehaviour {
public GameObject obj;
public Renderer rend;
void Start () {
rend = GetComponent<Renderer>();
Vector3 center = rend.bounds.center;
Vector3 pos = center + new Vector3 (12,0,0);
Instantiate (obj, pos, Quaternion.identity);
}
}
答案 0 :(得分:2)
您正在Instantiate (obj, pos, Quaternion.identity);
方法中调用函数Start
。您的脚本表已附加到您要实例化的GameObject
,这意味着每次生成Start
时它都会调用GameObject
方法,这将使用新脚本创建一个新脚本并调用该脚本的Start
方法。
可能的解决方案:
1.将行Instantiate (obj, pos, Quaternion.identity);
移动到方法/函数并根据请求调用该函数
2。从您的Prefab
中删除脚本 table (在您的情况下,在脚本中称为 obj )。