Unity - GetComponent<>();

10/31/2014 17:41 Vincii#1
Hey Leute,
Ich bin dabei Unity mit C# zu lernen.
Nun bin ich an einem sehr wichtigen Punkt angekommen, wo
mithilfe von GetComponent die Variable eines anderen Objektes ausgelesen werden soll.
Ich sitze nun seit 3 Stunden daran und komme nicht voran. Alle Tutorials klappen nicht oder sind nicht verständlich.

Könnte mir jemand erklären wie GetComponent mit GameObject.* funktioniert?

Ich wäre sehr sehr dankbar.
MfG
Vincii
10/31/2014 21:55 Black Tiger ツ#2
Habe zwar nie Unity benutzt, aber anhand deines Post kann ich sehen, dass es sich um separation of concerns by encapsulation handeln muss.

Du willst nicht, dass jmd oder etwas die Lebenspunkte des Spielers berechnet/ändert außer in den von dir definierten Bereich. Also referenzierst du ein Script auf dein (Game)Object, dass nur in dieser Klasse geändert werden kann! Zudem kannst du dir Generics zu nutze machen und so manches Script gleich für mehrere Objekte festlegen.
Außerdem kannst du die benötigten Scripte genau dann implementieren, wenn diese auch wirklich benötigt werden.

Ein (Game)Objekt kann alles sein, ein Baum oder auch ein Spieler und ist in Unity eine Basis-Klasse die dir eventuell mehr Sachen anbieten kann. (Z.b. kannst du sagen, dass alle GameObjects eine grüne Nase haben oder sich schwerelos verhalten sollen)


Code:
public GameObject spieler;
private Lebensverwaltung spielerScript;

...
void Start()
{
  spielerScript = spieler.GetComponent<Lebensverwaltung>;
}

void Update()
{
  if (spielerScript.Lebenspunkte < 20)
      print("Wtf du bist bald tot, man!");
}
10/31/2014 22:02 Mikesch01#3
Gut erklärt.

Hierzu noch die offizielle Doku zum Nachlesen @Threadersteller
[Only registered and activated users can see links. Click Here To Register...]
10/31/2014 22:03 snow#4
#moved (dürfte hier besser aufgehoben sein)