2016-11-16 18 views
0

私は、複数の基準を割り当てることができるアイテムのリストを持っています。赤、青、緑、赤、青、青、緑、赤、緑、赤、青、緑のいずれかです。1つのリストから複数のリストを作成するにはどうすればよいですか?

実行時に実行できるようにしたいのは、3つのリストを作成することです。

私はredList、blueListとgreenListを作る方法を確認していない私は、リスト

public List<Item> itemList; 

[System.Serializable] 
public class Item 
{ 
    public bool red; 
    public bool blue; 
    public bool green; 
} 

に必要事項を記入することができますクラスを始めています。

私はこれでかなり失われています。最初のリストからforループを実行する必要があるような気がします。次に、boolが新しいリストに追加されるかどうかを確認します。

new List<Item> redList; 

for (int i = 0; i < itemList.Count; i++) 
    { 
     if(red == true) 
     { 
      redList.Add(); 
     } 
    } 

答えて

2

あなたの一般的な考えは正しいです。 ItemListを持っていれば3色のリストを作成したいと思っています。これがコードです。最後blueList

new List<Item> redList; 

for (int i = 0; i < itemList.Count; i++) 
    { 
     if(itemList[i].red) 
     { 
      redList.Add(itemList[i]); 
     } 

    if(itemList[i].blue) 
     { 
      blueList.Add(itemList[i]); 
     } 

    if(itemList[i].green) 
     { 
      greenList.Add(itemList[i]); 
     } 
    } 

redListgreenListがtrueに設定blueredと​​プロパティを持つすべてのアイテムを持っています。要素が複数の色をtrueに設定できるため、オーバーラップが発生します。

+0

ありがとうございます!それははるかに理にかなっています。 –

2

これは質問に答えないかもしれませんが、それは誰かがここに(またはあなたに)来て助けることができます。

あなたは国旗を考える必要があります。

[System.Serializable] 
public class Item 
{ 
    public ColorType colorType; 
} 
[Flags] 
enum ColorType 
{ 
    Red, Blue, Green 
} 

は、その後、あなたはインスペクタで複数の選択肢を許可するAMNエディタのスクリプトを持っている:

[CustomPropertyDrawer(typeof(ColorType))] 
public class IMovementControllerDrawer : PropertyDrawer 
{ 
    public override void OnGUI(Rect _position, SerializedProperty _property, GUIContent _label) 
    { 
     _property.intValue = EditorGUI.MaskField(_position, _label, _property.intValue, _property.enumNames); 
    } 
} 

最後にあなたはそれが何であるかをチェックするためのcolorTypeインスタンスを使用することができます。ではありません

if ((this.colorType & ColorType.Red) == ColorType.Red) { // It is Red} 
if ((this.colorType & ColorType.Green) == ColorType.Green) { // It is Green} 
if ((this.colorType & ColorType.Blue) == ColorType.Blue) { // It is Blue} 

お知らせ &。これはいくつかのビット操作を実行しています。 if文でオブジェクトが0,1,2またはすべてのパスを実行することが可能です。

関連する問題