(Unity)如何将AddComponent与通用类型一起使用

时间:2017-04-09 00:34:55

标签: c# generics unity3d components

我正在尝试从List中添加组件。

这是一个非常类似的情况,除了他没有从列表中抓取它们。 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);
    }
}

1 个答案:

答案 0 :(得分:0)

如果您只想将列表中的一堆组件添加到GameObject,那么您可以使用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);
    }
  }
}