2017-02-22 9 views
-1

タイプを知らずにコンポーネントを無効にするにはどうすればよいですか? 私はこれが最高ですが、コンポーネントにはenabledオプションがありませんか?タイプを知らなくてもコンポーネントを無効にする

Component[] tmpComponents = tmpGO.GetComponents <Component>(); 
foreach (Component tmpComponent in tmpComponents) 
{ 
    if (tmpComponent.GetType() != Transform && tmpComponent.GetType() != MeshRenderer) 
    { 
     tmpComponent.enabled = false; <= ??? 
    } 
} 

私も

tmpGO.GetComponent <tmpComponent.GetType()>().enabled = false; 

を試してみましたしかし、それは動作しませんでした。

更新: 私はこれを試していますが、今は違う長さを与えています。

Component[] components = tmpGO.GetComponents <Component>(); 
Behaviour[] behaviours = tmpGO.GetComponents <Behaviour>(); 
for (int x = 0; x < components.Length; x++) 
{ 
    if (components[x].GetType() != typeof (Transform) && components[x].GetType() != typeof (MeshRenderer)) 
    { 
     Debug.Log (components.Length); 
     Debug.Log (behaviours.Length); 
     //behaviours [x].enabled = false; 
    } 
} 

動作を要求しても有効にできるコンポーネントの完全なリストが表示されないため、これは機能しません。

答えて

-1

変更するプロパティは「有効」ではなく「有効」です。

tmpComponent.enabled = false; 
1

コンパイラはそのクラスComponentenabledという名前のプロパティ/フィールドを持っていないあなたに警告しようとしている - 有効/無効にすることはできませんいくつかのコンポーネントの種類があるので、それはしません。

ただし、タイプBehaviourでコンポーネントにフィルタリングすることができます

foreach (var b in tmpGO.GetComponents<Behaviour>()) { 
    b.enabled = false; 
} 

マニュアルからの引用:

行動が有効または無効にすることができるコンポーネントです。

+0

[OK]を、どうやってタイプを比較しますか?私はすべてを無効にする必要がある場合は、私だけでなく、ゲームオブジェクトを無効にする可能性がありますか? – user3014330

+0

@ user3014330特定のタイプのコンポーネントだけが必要な場合は、通常は 'GetComponents'型の引数でフィルタリングします。どんな型を指定しても、その型のコンポーネントだけを返します。 – rutter

+0

さて、私の目標は、ビルドシステムのように、スクリーンに置かれた後に主にスクリプトを再び有効にすることでした。 私はを使用して終了しますが、構成要素が何もしなくても無効にすることはできないと嘆いています。 – user3014330

関連する問題