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!");
}