2017-04-20 1 views
0

Ich erstelle GameObject in der Nähe des anderen Objekts. Funktion "Instantiate" wiederholt sich selbst (wird in Zyklus) und das ist das Problem. Ich brauche es nur einmal zu nennen.Funktion wurde in Zyklus aufgenommen (wiederholt sich), anstatt nur einmal zu arbeiten

Ich habe versucht: 1. Aufruf der Funktion durch Drücken der Taste (GetKey). Immer noch erstellt diese Funktion 3-4 Objekte. 2. Hinzufügen des Codes in Update und FixedUpdate. Und trotzdem schafft es mehrere Objekte. :(

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

Antwort

2

Sie rufen die Funktion Instantiate (obj, pos, Quaternion.identity); in Ihrem Start Methode. Ihr Skript Tabelle zum GameObject angebracht ist, die Sie instanziieren sind, dass, dass es bedeutet, dass Rufen Sie die Methode Start jedes Mal auf, wenn die GameObject generiert wird, die eine neue mit einem neuen Skript erstellen und rufen Sie die Start Methode dieses Skripts auf

Mögliche Lösungen:
1. Bewegen Sie die Linie Instantiate (obj, pos, Quaternion.identity); auf ein Verfahren/Funktion und rufen Sie diese Funktion auf Anfrage
2. Entfernen Sie das Skript Tabelle von Ihrem Prefab (in Ihrem Fall es heißt obj im Skript).

Verwandte Themen