函数进入循环(重复自身)而不是仅仅工作一次

时间:2017-04-20 12:18:20

标签: unity3d instantiation

我在另一个对象附近创建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);

}

}

okay

Not okay

1 个答案:

答案 0 :(得分:2)

您正在Instantiate (obj, pos, Quaternion.identity);方法中调用函数Start。您的脚本已附加到您要实例化的GameObject,这意味着每次生成Start时它都会调用GameObject方法,这将使用新脚本创建一个新脚本并调用该脚本的Start方法。

  

可能的解决方案:
  1.将行Instantiate (obj, pos, Quaternion.identity);移动到方法/函数并根据请求调用该函数
2。从您的Prefab中删除脚本 table (在您的情况下,在脚本中称为 obj )。