2017-01-29 2 views
0

私はプログラム的に行う必要があることを理解するためにいくつか頭痛があります。 ここに私のクラスの基本コードがあります。可能なすべてのリンクされたオブジェクトを詳細に調べる方法は?

public class Wire 
{ 
    public List<Wire> connectedWires = new List<Wire>(); 

    //Example var we want to set 
    public int i = 0; 

    public void Initialize() 
    { 
    //Initialization code 
    //Here we get all connected wires the actual one (this) and we put it in connected wire 
    } 
} 

私はUnityと、このコードを使用していますので、私は本当に私のワイヤーインスタンスの初期化()Methodeのの実行順序を知りません。

ワイヤのいくつかのインスタンスを作成すると、接続されたすべてのワイヤとサブ接続されたワイヤにループでアクセスできる階層が構築されます。

私がいる問題は、私はワイヤーの単一のインスタンスを望んされ、ループは可能なすべての接続されたワイヤと、サブ接続されたワイヤを考えたが、私はそれをすることは不可能だ持ってどのように多くのワイヤーのインスタンスを知りません組み込みのforeachループを使って "深い"繰り返しを実行してください! (foreac(){foreach(){...?}})

どのように私は良い方法でそれを達成するだろうか?

Heresワイヤとは何かの参考図です。 Wires

+0

Wireとは何ですか?このクラス定義を表示 –

+0

ワイヤーは、実世界のワイヤーのようなもので、ワイヤー自体が接続されており、ワイヤーが接続されているワイヤーも接続されています... @MaksimSimkin –

+2

ワイヤーのように見えるので、深さ優先検索。 – Lee

答えて

1

ワイヤが一度だけ接続されている場合は、このようなことができます。

public class Wire 
{ 
    public List<Wire> connectedWires = new List<Wire>(); 

    //Example var we want to set 
    public int i = 0; 

    public void Initialize() 
    { 
    //Initialization code 
    //Here we get all connected wires the actual one (this) and we put it in connected wire 
    } 
    public void LoopThroughWires() 
    { 
     //Do something with your wires or whatever 
     i++; 
     //Propagate to childs 
     foreach(Wire wire on connectedWires) 
     { 
      wire.LoopThroughWires(); 
     } 
    } 
} 

同じワイヤへの複数の接続がメソッドを複数回呼び出すことになることに注意してください。

この問題を解決するには、visitedフラグを使用できます。

関連する問題