Jump to content
Unity Insider Forum

C# - Array einer Klasse


Driller

Recommended Posts

http://www.directupload.net/file/d/4197/ae396czp_png.htm

 

Hallo, liebe Community

 

Von Zeile 5 bis 12 habe ich meine Klasse "Biom" deklariert.

 

Darunter habe ich in Zeile 14 das Biom-Array "BD" angelegt.

Darunter in Zeile 15 kann ich jedoch nicht darauf zugreifen.

 

Es wird ein "Jagged Array" statt eines normalen Arrays angelegt.

Wie kann ich das korrigieren?

 

Vielen Danke schon im Vorraus, :)

 

Liebe Grüße

-Driller

Link to post
Share on other sites

In Javascript kann Code außerhalb von Funktionen und Klassen geschrieben werden.

 

Unity nimmt alle Funktionen von JavaScript und packt sie in eine (für den User unsichtbare) Klasse, die von MonoBehaviour erbt.

Unity nimmt dann allen Code, der nicht in Funktionen steckt und packt ihn in eine (auch für den User unsichtbare) Methode Main und zu den anderen Funktionen.

 

Main wird nach Awake und vor Start aufgerufen.

 

In C# muss aller Code in Funktionen und Klassen stehen. Cxydas Antwort ist richtig, wenn du das Array über den Editor bearbeitest, musst du es allerdings nicht initialisieren. Das macht Unity für dich.

 

Funfact: Auch wenn das nirgendwo dokumentiert ist, die Main Methode kann auch in C# deklariert werden und wird von Unity aufgerufen. Falls man zwischen Awake und Start noch was braucht ;)

Link to post
Share on other sites
Funfact: Auch wenn das nirgendwo dokumentiert ist, die Main Methode kann auch in C# deklariert werden und wird von Unity aufgerufen. Falls man zwischen Awake und Start noch was braucht ;)

 

Och! Das ist ja nett.

Link to post
Share on other sites

Wie kommt der OP eigentlich darauf dass ein Jagged Array erstellt wird? Das Array was er da deklariert hast ist ein eindimensionales normales Array.

 

Normales eindimensionales Array:

int[] normal;

 

Jagged Array:

int[][] jagged1;
int[][][] jagged2;

 

Multidimensionales Array:

int[,] multidimensional1; // 2D
int[,,] multidimensional2; // 3D

Link to post
Share on other sites

Natürlich kann man auch ein Array unmittelbar bei der Deklaration initialisieren:

 

// Single-dimensional array (numbers).
int[] n1 = new int[4] {2, 4, 6, 8};
int[] n2 = new int[] {2, 4, 6, 8};
int[] n3 = {2, 4, 6, 8};
// Single-dimensional array (strings).
string[] s1 = new string[3] {"John", "Paul", "Mary"};
string[] s2 = new string[] {"John", "Paul", "Mary"};
string[] s3 = {"John", "Paul", "Mary"};
// Multidimensional array.
int[,] n4 = new int[3, 2] { {1, 2}, {3, 4}, {5, 6} };
int[,] n5 = new int[,] { {1, 2}, {3, 4}, {5, 6} };
int[,] n6 = { {1, 2}, {3, 4}, {5, 6} };
// Jagged array.
int[][] n7 = new int[2][] { new int[] {2,4,6}, new int[] {1,3,5,7,9} };
int[][] n8 = new int[][] { new int[] {2,4,6}, new int[] {1,3,5,7,9} };
int[][] n9 = { new int[] {2,4,6}, new int[] {1,3,5,7,9} };

 

Der Zugriff gilt dann innerhalb einer Funktion im passenden Scope.

 

MSDN

Link to post
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...