2014-05-11 4 views
0

루프 시작시 별도의 클래스에 정의 된 다차원 배열을 읽고 게임을 시작할 때 개체를 배치하려고합니다.다차원 배열을 잘못 읽음

public int[,,] cave = new int[,,] { 
    { //Level 1 
     { 0, 0, 0, 3, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0}, 
     { 3, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 0, 0}, 
     { 0, 3, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0}, 
     { 0, 0, 0, 3, 0, 0, 0, 0, 3, 0, 3, 0, 0, 0}, 
     { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 3, 0}, 
     { 0, 0, 3, 0, 3, 0, 0, 3, 0, 0, 0, 0, 0, 0}, 
     { 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0}, 
     { 0, 0, 3, 0, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0}, 
     { 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
     { 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 3, 0, 0, 0} 
    }, 

    { //Level 2 
     { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3 }, 
     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0 }, 
     { 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, 
     { 0, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0 }, 
     { 0, 0, 0, 3, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0 }, 
     { 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 3, 0, 0 }, 
     { 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 
     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 
     { 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0 }, 
     { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0 }, 
     { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0 } 
    } 
}; 

그것은 제대로하지만 위치와 같은 배열의 대부분을 읽

void Start() { 
    //Get Level 
    Levels levels = ScriptableObject.CreateInstance<Levels>(); 
    level = levels.GetLevel (levelName); 
    x = level.GetLength(1); 
    y = level.GetLength (2); 

    temp = GameObject.Find ("temp").GetComponent<Temp>(); 
    lPos = temp.GetLevelNum() - 1; //Chosen Level 

    //Read array and place objects 
    for (int i = 0; i < x; i++) { 
     for (int j = 0; j < y; j++) { 
      if (level[lPos,i,j] == 1) { 
       Debug.Log ("Spawn Point"); 
      } 
      else if (level[lPos,i,j] == 2) { 
       Debug.Log ("Hole"); 
      } 
      else if (level[lPos,i,j] == 3) { 
       Debug.Log ("Obstacle"); 
      } 
      else 
       Debug.Log ("Open Space"); 
     } 
    } 
} 

그리고 배열을 잡고 클래스 Levels.cs된다

은 시작 기능 상기 LevelStart 클래스 코드 [0,0,0] 및 [0,0,12]는 3 일 때 0을 반환합니다.

미리 감사드립니다.

답변

0

당신이 단순히 잘못된 레벨 번호 (보이지 않는 코드)를 사용하고있을 가능성이 높습니다. print 문을 사용하여 temp.GetLevelNum() 및 lPos가 반드시 있어야한다고 생각하는 숫자인지 확인하는 것이 좋습니다.

+0

나는 temp.GetLevelNum() 바로 뒤에 Debug.Log 문을 사용하여 레벨 번호를 테스트 했으므로 정확했다. – user3624493

+0

그리고 나는 당신의 말을 받아들이겠습니까? 그들은 무엇인가? http://www.sscce.org/를보고 질문을 다시 포맷하십시오. – NPSF3000