-3

我放了一张截图,它会告诉你一切。

    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);
    }
}

我有一个 targetIndex 需要返回我点击的对象的索引。每个对象都包含 PoligonCollider2D 组件。问题是它总是向任何对象返回-1。有什么问题,我做错了什么?

4

1 回答 1

0

从您的代码:

private Transform[] hiddenObjects;
...
System.Array.IndexOf(hiddenObjects, target.gameObject)

hiddenObjects是一个数组Transform,但是target.gameObject是一个GameObject(实际上target已经是一个游戏对象,所以这是多余的):类型不匹配,所以确实 aGameObject永远不会等于 a Transform

而是尝试:

System.Array.IndexOf(hiddenObjects, target.transform)
于 2018-03-02T15:43:46.340 回答