2015-04-03 48 views
0

我想使用循環將我的播放器放置在空的座位上,這很好,但我試圖在播放器離開時將布爾設置爲false,但是我似乎無法訪問它訪問循環int並使用它的另一個功能

IndexOutOfRangeException:數組索引超出範圍。 GetIn.ExitObject()(在資產/ GetIn.cs:118)GetIn.Update()(在 資產/ GetIn.cs:55)

public int whatSeat; 
    Transform TheObject; 

    positions = TheObject.GetComponent<GetInObject>().PosInObect; 
    for (whatSeat = 0; whatSeat < positions.Length; whatSeat++) 
    { 
     if (positions[whatSeat].isOccupied == false) 
     { 
      transform.parent = positions[whatSeat].pos; 
      positions[whatSeat].isOccupied = true; 
     } 
    } 

然後在另一個功能欲存取同樣whatSeat變量來把它轉化爲假,當你退出

positions[whatSeat].isOccupied = false; 

但是這是在錯誤影響了我不知道如何解決這個

+0

調試代碼時'whatSeat'的價值是什麼?你確定你的「職位」有這個索引嗎?相關:[什麼是「索引超出範圍」異常,以及如何解決它?](http://stackoverflow.com/questions/24812679/what-is-an-index-out-of-range-exception -and-how-do-i-fix-it) – 2015-04-03 08:27:08

+1

你有沒有試過添加「break」在「職位[whatSeat] .isOccupied = true;」之後線?然後循環會找到第一個空位並完成。離開什麼Seat作爲新佔領的座位。 – Taran 2015-04-03 08:29:25

+0

確定後,進行一些調試whatsat更改爲1,所以我怎麼去增加這個休息? – pvtctrlalt 2015-04-03 08:32:09

回答

0

試試這個:

public int whatSeat; 
    Transform TheObject; 

    positions = TheObject.GetComponent<GetInObject>().PosInObect; 
    for (whatSeat = 0; whatSeat < positions.Length; whatSeat++) 
    { 
     if (positions[whatSeat].isOccupied == false) 
     { 
      transform.parent = positions[whatSeat].pos; 
      positions[whatSeat].isOccupied = true; 
      break; // Adding break here 
     } 
    } 

一旦你退出循環,whatSeat將保存新佔用的座位的值。

+0

好吧,我不能看到接受按鈕ATM作爲即時通訊使用從2006年使用互聯網瀏覽器的聯網計算機,所以當我回家的時候接受它 – pvtctrlalt 2015-04-03 08:41:52