2017-09-10 5 views
2
나는 TEXTFILE에서 내 게임 부하의 수준을 확인하고 2 차원 배열에로드 할 한

으로 공급,이 레벨 TEXTFILE이 모습입니다 :TEXTFILE에서 데이터를 가져 오기 및 2 차원 배열

0,0,0,0,0,0,0,0,0,0 
1,1,1,1,1,1,1,1,1,1 
2,2,2,2,2,2,2,2,2,2 
3,3,3,3,3,3,3,3,3,3 
4,4,4,4,4,4,4,4,4,4 
5,5,5,5,5,5,5,5,5,5 
6,6,6,6,6,6,6,6,6,6 
7,7,7,7,7,7,7,7,7,7 
8,8,8,8,8,8,8,8,8,8 
9,9,9,9,9,9,9,9,9,9 

나는 각 숫자를 별도의 타일로 처리하고 싶다. 쉼표는 분리 기호로 사용되지만 실제로이 값을 내 2 차원 배열로 가져 오는 방법은 모른다.

Tile[,] Tiles; 
    string[] mapData; 
    public void LoadMap(string path) 
    { 
     if (File.Exists(path)) 
     { 
      mapData = File.ReadAllLines(path); 

      var width = mapData[0].Length; 
      var height = mapData.Length; 

      Tiles = new Tile[width, height]; 

      using (StreamReader reader = new StreamReader(path)) 
      { 
       for (int y = 0; y < height; y++) 
       { 
        for (int x = 0; x < width; x++) 
        {       
         Tiles[x, y] = new Tile(SpriteSheet, 5, 3, new Vector2(x * 64, y * 64)); 
        } 
       } 
      } 
     } 
    } 

숫자 5와 3 선 타일 [X, Y] = 새 타일()에 textureatlas의 질감의 위치를 ​​나타냅니다 : 이것은 내가있어 얼마나 멀리이다. 파일의 숫자가 topleft에서 0 인 것처럼 if 문을 추가하고 싶습니다. 타일 [0, 0]을 내 textureatlas의 특정 행과 열로 설정합니다. 이것에 대한 어떤 도움이라도 대단히 감사 할 것입니다, 나는 그것을 보지 않을 것입니다!

답변

2

먼저 var width = mapData[0].Length;은 쉼표를 포함한 문자 배열의 길이를 19로 반환합니다. 쉼표를 반환하지 않으려는 것처럼 보입니다. 따라서 다음과 같이 문자열을 분할해야합니다.

Tile[,] Tiles; 
string[] mapData; 
public void LoadMap(string path) 
{ 
    if (File.Exists(path)) 
    { 
     mapData = File.ReadAllLines(path); 

     var width = mapData[0].Split(',').Length; 
     var height = mapData.Length; 

     Tiles = new Tile[width, height]; 

     using (StreamReader reader = new StreamReader(path)) 
     { 
      for (int y = 0; y < height; y++) 
      { 
       string[] charArray = mapData[y].Split(','); 
       for (int x = 0; x < charArray.Length; x++) 
       {    
        int value = int.Parse(charArray[x]); 

        ... 

        Tiles[x, y] = new Tile(SpriteSheet, 5, 3, new Vector2(x * 64, y * 64)); 
       } 
      } 
     } 
    } 
} 
+0

완벽하게 작동했습니다. 고맙습니다. – Stan