2017-07-07 3 views
0

Mein Code ist unten. Jede Hilfe wäre willkommen. Ich entschuldige mich im Voraus, wenn es ein einfacher Fehler ist - ich bin immer noch Anfänger bei C# (und objektorientiert im Allgemeinen).Nicht sicher, warum ich bekomme "Eine Objektverweis ist für das nicht statische Feld erforderlich"

public class Game1 : Microsoft.Xna.Framework.Game 
{ 
    public void Update() 
    { 
     Levels level = new Levels(); 
     Game1 mainGame = Game1; 
     Levels.AliensSetUp(1, 2, 50, 0, 0, 0, mainGame); 
    } 
} 

class Levels 
{ 
    public void AliensSetUp(int numberRows, int numberColumns, int spaceBetween, int XStart, int YStart, int AlienType, Game1 mainGame) 
} 

Der Fehler ist auf dem "Hauptspiel" in "Levels.AliensSetUp (1, 2, 50, 0, 0, 0, Hauptspiel)". Ich habe auch versucht, "mainGame" durch "game1" zu ersetzen, aber dafür bekomme ich auch einen Fehler. Danke für jede Hilfe, die Sie mir geben können.

+2

Sie müssen sich über [statisch Mitglieder vs Instanz Mitglieder in C#] (https://msdn.microsoft.com/en-us/library/aa645629 (v = vs.71) .aspx) lernen . Es gibt einige grundlegende objektorientierte Programmierkonzepte, die Ihnen fehlen. –

+0

Sie versuchen, die 'AliensSetUp'-Methode mit dem Namen der Klasse (' Levels') aufzurufen. Stattdessen müssen Sie die Instanz des von Ihnen erstellten Objekts verwenden ('level'). Basierend auf dem Code in Ihrer Frage wäre es "level.AlensSetUp (...)". –

+0

Das hat es behoben - danke! – Hychet

Antwort

3

Levels ist nicht statisch. Sie haben die Levels-Klasse "neu" und rufen dann ihre AliensSetUp() -Methode auf. Ex:

var levels = new Levels(); 
levels.AliensSetup(...) 
+0

Er hat mit Game1 nichts gemacht. Er versucht, den Typ selbst einer Instanz des Typs zuzuweisen. Er hat keine Ahnung, was "Instanz" und "statisch" bedeuten. –

+0

Danke, klar, dass. Es sollte sein: var levels = new Levels(); levels.AliensSetup ... –

+0

Ich denke, dass gehört in die Antwort, nicht in einem Kommentar. –

Verwandte Themen