2015-04-02 38 views
0

我試圖循環遍歷一個類的數組。這個類有兩個變量:一個變換和一個布爾。如何檢查bool在循環中是否爲false

我想在另一個腳本中循環查看當前位置是否被佔用,如果是,則布爾佔用將被設置爲true。

我該如何去做這件事?

public Positions[] PosInObect = new Positions[1]; 

[System.Serializable] 
public class Positions 
{ 
    public Transform pos; 
    public bool isFilled; 
} 

for (int i = 0; i < TheObject.GetComponent<GetInObject>().PosInObect.Length; i++) 
{ 

} 
+2

在標籤[標籤:統一]的說明的第一句是*「不要使用問題關於UNITY遊戲引擎(使用:[標籤:unity3d]代替)!!」 * – 2015-04-02 13:32:53

+0

的你顯示的代碼有一個大小爲1的數組,不需要太多的循環。 :) – AlG 2015-04-02 13:33:07

+0

我剛剛用1進行測試,因爲有問題的對象之後沒有多個席位,他們將會有超過一個對象,玩家可以使用 – pvtctrlalt 2015-04-02 13:36:56

回答

9

好了,你可以只相關指數在訪問元素,然後檢查該字段值:

if (TheObject.GetComponent<GetInObject>().PosInObect[i].isFilled) 

但是,如果你不需要索引,我推薦使用一個foreach循環:

foreach (var position in TheObject.GetComponent<GetInObject>().PosInObect) 
{ 
    if (position.isFilled) 
    { 
     ... 
    } 
} 

如果你需要的位置,我會使用一個局部變量來第一次取數組:

var positions = TheObject.GetComponent<GetInObject>().PosInObect; 
for (int i = 0; i < positions.Length; i++) 
{ 
    if (positions[i].isFilled) 
    { 
     ... 
    } 
} 

我還建議使用屬性而不是公共字段,並遵循.NET命名約定。

+0

ok我得等3分鐘才能接受這個,但這是完美的謝謝這麼多你已經教我分配這是非常有用 – pvtctrlalt 2015-04-02 13:41:02

+0

一個簡單的問題我怎樣才能公開職位?我會使用什麼樣的變量類型 – pvtctrlalt 2015-04-02 13:46:05

+0

@pvtctrlalt:你是什麼意思?這已經是一個公開課... – 2015-04-02 13:47:26

0

這可以在foreach循環中完成。您仍然可以從該類實例訪問變量。

foreach(Positions pos in TheObject.GetComponent<GetInObject>().PosInObect) 
{ 
    if(pos.isFilled) 
    { 
     //Do something 
    } 
} 
相關問題