C# 向下投射整个阵列

C# 向下投射整个阵列,c#,unity3d,unity-ui,C#,Unity3d,Unity Ui,在Unity中,我试图检测对象上文本类型的所有组件 this.GetComponents(typeof(Text)) 但它返回一个组件数组。 因为我知道每个组件都必须是文本类型,所以我应该能够向下转换它。 我试着把它演出来 Text[] a = (Text[])this.GetComponents(typeof(Text)); 但那没用。 Text是组件的派生类,但我不知道如何向下转换数组,以便使用与Text类型关联的方法。有人能告诉我如何将数组转换为文本类型吗?您应该使用通用语法:this

在Unity中,我试图检测对象上文本类型的所有组件

this.GetComponents(typeof(Text))
但它返回一个组件数组。 因为我知道每个组件都必须是文本类型,所以我应该能够向下转换它。 我试着把它演出来

Text[] a = (Text[])this.GetComponents(typeof(Text));
但那没用。 Text是组件的派生类,但我不知道如何向下转换数组,以便使用与Text类型关联的方法。有人能告诉我如何将数组转换为文本类型吗?

您应该使用通用语法:
this.GetComponents()
。它返回一个
文本[]
,因此不再需要强制转换。

从中,您可以使用泛型方法
GetComponents
,而无需键入每个强制转换

using UnityEngine;

public class Example : MonoBehaviour
{
    void Start()
    {
        HingeJoint[] hinges = GetComponents<HingeJoint>();
        for (int i = 0; i < hinges.Length; i++)
        {
            hinges[i].useSpring = false;
        }
    }
}
使用UnityEngine;
公共课示例:单一行为
{
void Start()
{
铰链关节[]铰链=GetComponents();
对于(int i=0;i
应该是您要查找的内容。实际上,一个游戏对象上只能有一个UIElement类型的组件。。。所以这根本不应该起作用。。。