2014-05-11 84 views
0

我想有一個循環讀取一個單獨的類定義在遊戲開始的地方對象多維數組。誤讀多維數組

這是從LevelStart類啓動功能的代碼:

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:

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 } 
    } 
}; 

它正確地但這樣的位置讀取最陣列的因爲[0,0,0]和[0,0,12]返回3時應該是0

在此先感謝

回答

0

在我看來,很可能你只是使用了錯誤的關卡號碼 - 沒有顯示的代碼。我建議使用print語句來確保temp.GetLevelNum()和lPos是你認爲他們應該是的數字。

+0

我做測試用的debug.log說法對temp.GetLevelNum後()級別號,這是正確的。 – user3624493

+0

我打算爲此付出代價?他們是什麼?看看http://www.sscce.org/並重新格式化您的問題。 – NPSF3000