2017-04-09 179 views
0

我試圖從列表中添加組件。(Unity)如何使用具有通用類型的AddComponent

這是一個非常相似的情況,除非他不從列表中抓取它們。 Unity how can AddComponent<T>()?

這是我的代碼到目前爲止,但我真的不知道從哪裏去。順便說一下,這是C#,我只是沒有看到它的選項,所以我很抱歉。

它是一種工作,它確實添加了一個沒有錯誤的組件,但它添加的組件是空白的。

編輯:我忘了添加AddComponentToObject。這裏是完整的代碼。

public class LittleComponent : MonoBehaviour { 

    public List<UnityEngine.Object> specialScripts = new List<UnityEngine.Object>(); 

    public Type GenericSpecialtyScript(int script) 
    { 
     return specialScripts[script].GetType(); 
    } 


    public void AddComponentToObject(GameObject addToObject) 
    { 

     GenericSpecialtyScript(0); 
     addToObject.AddComponent<GenericSpecialtyScript>(); 

    } 
} 

public class GenericSpecialtyScript : MonoBehaviour 
{ 

} 

這裏是我如何測試它。它只是一個編輯器腳本。

public void TestButton() 
{ 
    if (GUILayout.Button("Test", GUILayout.Height(30))) 
    { 
     _LittleComponent.AddComponentToObject(_LittleComponent.gameObject); 
    } 
} 

回答

0

如果你只是想從一個列表中添加了一堆組件的遊戲對象,那麼你可以使用Type的列表。

public class MultiComponentAdder : MonoBehaviour { 
    List<Type> types = new List<Type>(); 

    void Awake() { 
    types.Add(typeof(Apple)); 
    types.Add(typeof(Orange)); 
    types.Add(typeof(Banana)); 

    foreach (var t in types) 
    { 
     this.gameObject.AddComponent(t); 
    } 
    } 
} 
+0

如果我以前不知道類型該怎麼辦? 我正在創建一個編輯器工具,我不希望人們必須執行任何編碼。 – LittleRain

相關問題