2017-04-09 2 views
0

Ich versuche, Komponenten aus einer Liste hinzuzufügen.(Unity) Verwendung von AddComponent mit einem generischen Typ

Hier ist eine sehr ähnliche Situation, außer er greift sie nicht aus einer Liste. Unity how can AddComponent<T>()?

Hier ist mein Code so weit, aber ich weiß wirklich nicht, wohin ich davon gehen soll. Es ist C# nebenbei, ich sehe einfach keine Option dafür, also tut es mir leid.

Es funktioniert, fügt eine Komponente ohne Fehler hinzu, aber die Komponente, die hinzugefügt wird, ist leer.

Edit: Ich habe vergessen, AddComponentToObject hinzuzufügen. Hier ist jetzt der vollständige Code.

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 
{ 

} 

Und hier ist, wie ich es teste. Es ist nur ein Editor-Skript.

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

Antwort

0

Wenn Sie nur eine Reihe von Komponenten aus einer Liste zu einem Gameobject hinzufügen möchten, dann können Sie eine Liste von Type ‚s verwenden.

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

Was passiert, wenn ich den Typ vorher nicht kenne? Ich erstelle ein Editor-Tool, und ich möchte nicht, dass die Leute codieren müssen. – LittleRain

Verwandte Themen