Das Problem tritt auf, wenn ein Prefab mit einem Skript UnitScript
instanziiert wird. Wenn das Fertig instanziiert wird, möchte ich manuell eine Variable setzen:Festlegen der Objekteigenschaft und Einchecken von Start(), wenn es null funktioniert
GameObject unit = newUnit(this.transform.position); // Returns a prefab in the given position
unit.GetComponent<UnitScript>().myProperty = new MyObject(unit.GetComponent<UnitScript>());
print("myProperty was set");
Das Problem an dieser UnitScript
im Start()
Methode erscheint, wo myProperty
erscheint als null
stattdessen den Wert, den ich vor gab:
void Start() {
if (myProperty == null) {
print("myProperty is null");
}
}
Beachten Sie, dass die Konsole in dieser Reihenfolge protokolliert: myProperty wurde festgelegt, myProperty ist null
Methode:
return Instantiate(myPrefab, position, rotation) as GameObject;
// myPrefab is a public GameObject var that has a prefab given by the inspector
Die MyObject-Klasse sieht wie folgt aus:
public class MyObject: Object {
private UnitScript unit;
public MyObject(UnitScript unit) {
this.unit = unit;
}
}
Vielen Dank im Voraus, ich wette, das Problem ein Dumme ist ...
Sind Sie sicher, dass Ihre 'unit.GetComponent()' gibt die gleiche Instanz wie die 'UnitScript' Instanz, druckt "myProperty null ist"? Instanziieren Sie das Spielobjekt mit 'Instantiate()'? –
LibertyLocked
Können Sie Ihre newUnit-Methode anzeigen? :) – JoRouss
@LibertyLocked ja – aramusss