2017-10-11 1 views
-3

Im Code in Leere Update Erhöhen unten, die Variable loopnicht erhöht .Es gibt den Ausgang als 0 always wir Schleife drucken, nachdem der Wert erhöht wird, um die Schleife Schritten einmal. Variable nicht

public class move : MonoBehaviour 
{ 
    int loop = 0; 
    float[,] comp = new float[10,2]; 
    public Vector3 speed; 

    void Start() 
    { 
     speed = new Vector3(0,0.15f,0); 
    } 

    void Update() 
    { 
     comp = spawner.score; 
     transform.Translate(speed); 

     if(transform.position.y < -2) 
     { 
      loop++; 
      Debug.Log("Loop:"+loop); 
      Destroy(gameObject); 
     } 
    } 
} 
+0

Sind Sie Machen Sie eine neue Klasse 'move', bevor Sie' move: Update() 'zufällig aufrufen? Sie könnten versuchen, "loop" statisch zu machen oder Ihre 'move' Klasse wiederzuverwenden? – oerkelens

+0

Vielen Dank für Ihre Antwort.Ich habe versucht, die Schleife statisch.Aber Dinge bleiben gleich. –

+0

Geben Sie den Code ein, der eine Instanz von 'move' erstellt und rufen Sie' Update() ' – squillman

Antwort

0
  1. Ihr Gameobject mit der Umzug Komponente ist auch unter '-2' in der Welt po? (siehe ->if(transform.position.y < -2)) oder die Schleife kann inkrementiert werden.

  2. Wie "ja" in seinem Kommentar sagen, was ist Destrou?
    Sie möchten Destroy verwenden? In diesem Fall warum Schleife verwenden, um das gesamte Zerstörungselement zu zählen?
    So wurde die Schleife erhöht und das Objekt kurz danach zerstört.

  3. Wenn loop ist die Anzahl des Elements zählen Sie die Schleifenvariable in einem anderen Skript platzieren muss, die vernichtet kippe werden (zum Beispiel: Sie können Singleton verwenden, um es richtig zu greifen)

+0

Es war ein Tippfehler.Ich meinte Destroy(). Entschuldigung dafür. Eigentlich möchte ich Schleife auf 9 inkrementieren und dann Schleife = 0 und erhöhen auf 9 und wiederholen. –

+0

'Schleife ++; if (loop> 9) loop = 0; ' und wie ich in Punkt 3 gesagt habe, muss man das in ein anderes Skript schreiben – DavEat