2016-05-13 5 views
0

GameObjectに特定のスクリプトを添付する必要があります。Unity AddComponentはどのようにできますか<T>()?

public T ElegirScript<T>() 
    { 
     switch((int)tipoEdificio) // enum 
     { 
     case 0: 

      return Edificios; // a class/script not instance 
      break; 
     case 1: 

      return PlantaEnergia; // a class/script not instance 
      break; 
     default: 
      break; 
     } 
    } 


gameobject.AddComponent<ElegirScript()>(); 

どうすればいいですか?私はエラーがあります、ありがとう。

私は最初に型またはコンポーネントを返すメソッドが必要です。戻り値はスクリプトでなければなりません。次にAddComponentを選択し、プログラムで選択するタイプを指定します。これはどのように行うことができますか?例。

+1

エラーはどうなりますか?あなたの質問にそれらを含める! :) – Tom

+1

それはジェネリックスの動作ではないthatsどのようにジェネリックスhttps://msdn.microsoft.com/en-us/library/ms379564(v=vs.80).aspx – yes

答えて

2

Addコンポーネントで非コンポーネントタイプのクラスを使用することはできません。あなたのクラスがMonoBehaviourから継承してgameObjectに追加できることを意味します。第二に、どのようにジェネリック医薬品を最初に使用するかではありません。あなただけでもジェネリックでなぜわざわざ条件に異なるコンポーネント拠点を追加したい場合は、単に試してみてください。私は最終的にOPは望んでいたが、そのない汎用的なソリューションを付与何をするために管理

if(condition) 
gameObject.AddComponent<MyMonoBehaviourClass1>(); 
else 
gameObject.AddComponent<MyMonoBehaviourClass2>(); 

。 OPコードに Chages:

public Type ElegirScript() 
    { 
     switch ((int)tipoEdificio) // enum 
     { 
      case 0: 
       return typeof(Edificios); // a class/script not instance 
      case 1: 
       return typeof(PlantaEnergia); // a class/script not instance 
      default: 
       return null;//Or throw exception here 
     } 
    } 

今、あなたはgameObject.AddComponent(ElegirScript());を呼び出すことができますし、それだけで正常に動作します。

+0

理解していない、私は、タイプまたはコンポーネントを返すメソッドが必要do addComponent () – user3481415

+0

私はあなたが非常に混乱していると思います。 AddComponentの型としてメソッドを呼び出すことはできません。あなたのメソッドがTypeを返すとしても。 –

+0

ok、私はいつもプログラムのコンポーネントを特定しなければなりませんか?プログラムは決定を下すことができませんか? – user3481415

関連する問題