C# System.Array.IndexOf返回值-1

C# System.Array.IndexOf返回值-1,c#,unity3d,system.array,C#,Unity3d,System.array,我放了一个截图,可以告诉你一切 private Transform[] hiddenObjects; void Start() { leftImageRandom = new Randomizer(0, LeftImageSequence.transform.childCount - 1, true); DoStart(); } private void DoStart() { leftImageIndex = leftImageRandom.getRandom(

我放了一个截图,可以告诉你一切

    private Transform[] hiddenObjects;
void Start()
{
    leftImageRandom = new Randomizer(0, LeftImageSequence.transform.childCount - 1, true);
    DoStart();
}
private void DoStart()
{
    leftImageIndex = leftImageRandom.getRandom();
    LeftImageSequence.setCurrentChildIndex(leftImageIndex);
    RightImageSequence.setCurrentChildIndex(leftImageIndex);

    //take hidden objects and put them in an array
    hiddenObjects = RightImageSequence.CurrentChild.transform.GetChild(0).transform.GetComponentsInChildren<Transform>();
    for(int i=1;i<hiddenObjects.Length;i++)
        hiddenObjects[i].gameObject.GetOrAddComponent<MouseEventSystem>().MouseEvent += ClickedHiddenObject;
    Debug.Log(hiddenObjects.Length);
}

private void ClickedHiddenObject(GameObject target, MouseEventType type)
{
    if (type == MouseEventType.CLICK && CanClick)
    {
        int targetIndex = System.Array.IndexOf(hiddenObjects, target.gameObject);
        Debug.Log(targetIndex);
        hiddenObjects[targetIndex].GetComponent<SpriteRenderer>().DOFade(1f, 0.3f).SetEase(Ease.Linear);
    }
}
private Transform[]隐藏对象;
void Start()
{
leftImageRandom=新的随机化器(0,LeftImageSequence.transform.childCount-1,true);
DoStart();
}
私有void DoStart()
{
leftImageIndex=leftImageRandom.getRandom();
setCurrentChildIndex(leftImageIndex);
setCurrentChildIndex(leftImageIndex);
//将隐藏的对象放入数组中
hiddenObjects=RightImageSequence.CurrentChild.transform.GetChild(0.transform.GetComponentsInChildren();
对于代码中的(int i=1;i:

private Transform[] hiddenObjects;
...
System.Array.IndexOf(hiddenObjects, target.gameObject)
hiddenObjects
是一个
Transform
数组,但是
target.gameObject
是一个
gameObject
(实际上
target
已经是一个gameObject,所以这是多余的):类型不匹配,所以实际上
gameObject
永远不会等于
Transform

相反,请尝试:

System.Array.IndexOf(hiddenObjects, target.transform)

“我放了一个屏幕截图,可以告诉你一切。”请不要这样做。相反,将代码作为文本发布,最好是以a的形式发布。从根本上说,我认为问题在于数组不包含您期望的元素。考虑到您的数组是
PolygonCallider2D
,并且您正试图找到
游戏对象,这并不奇怪……也许您应该这样做你找过目标的
PolygonCallider2D
部分了吗?好吧,现在我改成了Transform array,同样的事情是什么
target.gameObject
在运行时,当你执行代码的时候?代码是在我运行Unity时执行的。问题是我以前用过它,但我几乎没有遇到过任何错误关键在于使用调试器并查看值。