获取Unity中游戏对象的所有组件的列表

时间:2018-03-23 12:53:05

标签: c# unity3d

说,我的场景中有一个游戏对象有12个组件。其中一些组件可能属于同一类型:例如,此游戏对象可能具有两个音频源。现在,我想以这样的方式为这个游戏对象添加一个C#脚本,它收集所有这些组件的名称(在列表中?),并在控制台中打印出来。我怎么能这样做?

3 个答案:

答案 0 :(得分:2)

这样的东西?

    var list = GetComponents(typeof(Component));
    for(int i = 0; i < list.Length; i++)
    {
        Debug.Log(list[i].name);
    }

答案 1 :(得分:1)

使用GetComponents方法获取组件数组,如下所示。

Component[] components = gameObject.GetComponents(typeof(Component));
foreach(Component component in components) {
    Debug.Log(component.ToString());
}

这也会显示添加到GameObject

的重复组件

答案 2 :(得分:0)

    string text = string.Empty;
    foreach(var component in myGameObject.GetComponents(typeof(Component)))
    {
        text += component.GetType().ToString() + " ";
    }

示例输出: "text": "UnityEngine.RectTransform UnityEngine.CanvasRenderer UnityEngine.UI.RawImage UnityEngine.UI.Button DebugLayoverButton UnityEngine.Canvas UnityEngine.UI.GraphicRaycaster UnityEngine.UI.LayoutElement "