Ich habe ein seltsames Problem mit meinem Skript auf einem vorgefertigten Objekt angefügt und an eine Schaltfläche angehängt. Ich habe versucht, dieses Problem zu suchen, aber ohne Erfolg.Variable im Skript der Fertigstelle ändert sich nicht in meiner eigenen Methode
Ich werde ein sehr einfaches Beispiel erklären. Ich habe einen Fertig PlayerPrefab, die von einem Skript PlayerSpawn durch die Anweisung erstellt:
Instantiate (playerPrefab, transform.position, Quaternion.identity);
Also, wenn das Spiel beginnt, wird eine neue Instanz von PlayerPrefab erstellt wird.
zum Fertig angebaute gibt es ein Skript mit einigen privaten Variablen (der Einfachheit halber schreibe ich ein einfaches Skript-Code):
public class ShipClass : MonoBehaviour {
float speed;
int count;
void Start() {
speed = 0;
count = 0;
Debug.Log ("Start executed, speed = " + speed);
}
void Update() {
Debug.Log("speed in Update = " + speed);
}
public void Push()
{
speed = 50;
count++;
Debug.Log("speed in Push = " + speed);
Debug.Log("count = " + count);
}
}
Dann habe ich ein UI-Knopf, mit OnClick-Ereignis, das Fertig Objekt angebracht und Aufruf der Methode Push().
Das Verhalten ist sehr seltsam: Sobald ich das Spiel zum ersten Mal starten, ist die gedruckte Geschwindigkeit von Update() und Push() Methoden 0. Wenn ich aber auf die Schaltfläche in der Benutzeroberfläche klicken, die Geschwindigkeit in Push() -Methode wird 50, aber Update() druckt immer noch 0, als ob wir zwei verschiedene Variablen Geschwindigkeit hätten.
Die zweite Sache ist, dass das Drücken der Taste, die Zählvariable erhöht. Wenn ich das Spiel stoppe und neu starte, wird die Zählvariable nicht in der Start-Methode zurückgesetzt (selbst wenn Start() ausgeführt wird, sieht das Druckprotokoll), sondern beginnt mit dem letzten Wert im vorherigen Lauf. Auch haben wir das gleiche Verhalten wie die Geschwindigkeitsvariable: in Update(), Anzahl bleibt 0, in Push() zählt weiter inkrementieren, wie wir zwei verschiedene "count" Variablen haben.
Ich weiß, dass es aufgrund des vorgefertigten Objekts ist, aber ich weiß nicht, wie sich die Variablen in Update() und eigenen erstellten Methoden anders verhalten.
Vielen Dank im Voraus für die Hilfe.
Snapshots kann helfen. Bitte hängen Sie es an. Und bezüglich Ihrer Variablen müssen Sie Ihren Gleitkommawert wie folgt setzen: speed = 50.0f; Geschwindigkeit = 0.0f. – joreldraw