Jump to content
Unity Insider Forum

SirTreffNix_Dev

Members
  • Gesamte Inhalte

    12
  • Benutzer seit

  • Letzter Besuch

Über SirTreffNix_Dev

  • Geburtstag 24.02.1983

Profile Information

  • Gender
    Male
  • Location
    Nürnberg

Letzte Besucher des Profils

Der "Letzte Profil-Besucher"-Block ist deaktiviert und wird anderen Benutzern nicht angezeit.

SirTreffNix_Dev's Achievements

Member

Member (2/3)

2

Ansehen in der Community

  1. Wenn bei deinem Spiel: Input.GetAxis("Vertical") > 0 bedeutet, dass dein Spieler vorwärts läuft, dann hast die Möglichkeit mit Mathf.Abs(Input.GetAxis("Vertical")) immer einen positiven Wert zu erhalten und dementsprechend vorwärts zu laufen.
  2. Die Vererbung bietet dir ja die Möglichkeit auch Methoden der Klasse von der du erbst zu nutzen. z.B. könntest du in deiner Klasse "Mensch" Variablen für Lebenspunkte, Erfahrungspunkte usw. haben. Deine Klasse Supermensch hat dann z.B. Variablen und Methoden für Superkräfte die gewisse Dinge tun. Deine Klasse Mensch hat aber z.B. bereits Methoden um Lebenspunkte hinzuzufügen, abzuziehen usw. Diese müsstest du dann in der Klasse Supermensch nicht noch einmal schreiben sondern könntest die Methode aus der Basisklasse verwenden. Solltest du dann doch einmal eine Methode aus der Basisklasse "Mensch" ändern wollen in "Supermensch" kannst du diese "überschreiben" oder "erweitern". Override - https://docs.microsoft.com/de-de/dotnet/csharp/language-reference/keywords/override
  3. Mit der Zeile: public SuperMensch (int dasAlter, string derName, string dieFaehigkeit) :base(dasAlter, derName, derBeruf) übergibst du dasAlter, derName, derBeruf an den Konstruktor der Basisklasse (durch die Verwendung von :base(dasAlter,derName,derBeruf) der in diesem Fall 3 Argumente erwartet. "derBeruf" ist aber unbekannt, da an den Konstruktor von SuperMensch die Variablen "dasAlter, derName, dieFaehigkeit" übergeben werden. Das sagt die folgende Fehlermeldung aus: Wenn du dann wie von dir Beschrieben "derBeruf" wieder raus nimmst, werden wieder nur zwei Argumente an den Konstruktor der Basisklasse übergeben. Dadurch erhälst du die folgende Fehlermeldung: In dem Screenshot aus deinem Tutorial sind gar keine Konstruktoren angegeben wodurch das "Problem" nicht entsteht. Der Konstruktor wird immer aufgerufen, wenn ein neues Objekt vom Typ dieser Klasse erstellt wird über z.B. SuperMensch test = new SuperMensch() Es besteht die Möglichkeit für jede Klasse mehrere Konstruktoren anzugeben. Dann wird je nachdem welche Parameter übergeben werden der richtige "ausgewählt". Wenn du nun über public Mensch() { } einen weiteren Konstruktor der Klasse Mensch hinzufügst, kann ein Objekt vom Typ Mensch entweder über Mensch test1 = new Mensch() // ohne Argumente oder mit Mensch test2 = new Mensch(100, "Superman", "fliegen") // mit Argumente erstellt werden. Da in diesem Fall, die Klasse Mensch keine Argumente zwingend erwartet (es wird ja entweder der Konstruktor ohne Argumente aufgerufen oder eben mit drei Argumenten) kann deine Klasse SuperMensch von Mensch erben ohne Argumente zu übergeben. Das ganze ist auch ganz gut unter: https://docs.microsoft.com/de-de/dotnet/csharp/programming-guide/classes-and-structs/using-constructors beschrieben. Ich hoffe ich konnte es einigermaßen verständlich beschreiben.
  4. Auf dem Screenshot von deinem Code, hat die Klasse Mensch einen Konstruktor, der drei Argumente erwartet. Durch die Vererbung musst du den Konstruktor der Basisklasse bedienen. Dieser erwartet zwingend drei Argumente. Entweder du erstellst in der Basisklasse zusätzlich einen Konstruktor, der 0 Argumente akzeptiert oder du übergibst die Argumente mit dem Schlüsselwort "base" an die Basisklasse. Vereinfacht dargestellt entweder: public class Mensch { public Mensch(int dasAlter, string derName, string derBeruf) { } public Mensch() { } } public class SuperMensch : Mensch { public SuperMensch(int dasAlter, string derName, string dieFaehigkeit) { } } oder: public class Mensch { public Mensch(int dasAlter, string derName, string derBeruf) { } } public class SuperMensch : Mensch { public SuperMensch(int dasAlter, string derName, string dieFaehigkeit, string derBeruf) : base (dasAlter, derName, derBeruf) { } }
  5. Die Meldung sagt eigentlich, dass es bereits eine Klasse mit diesem Namen gibt. Kann es sein, dass du das Script umbenannt oder verschoben hast und es diese Klassen deshalb jetzt zwei mal in deinem Projekt gibt?
×
×
  • Neu erstellen...