每次点击时的负指数(-1)

时间:2017-09-29 10:52:02

标签: c# unity3d target

我的代码有点问题:

 public GameObject[] Letters;
 Randomizer WordsChildIndex;
 Transform[] LetterInteract;
 void Start () 
 {
    WordsChildIndex = new Randomizer(0, 29, true);
    int ChildIndex = WordsChildIndex.getRandom();
    Words.setCurrentChildIndex(ChildIndex);
    LetterInteract = Letters[ChildIndex].GetComponentsInChildren<Transform();
    for(int i = 0; i < LetterInteract.Length; i++)
    {
        LetterInteract[i].gameObject.AddComponent<CircleCollider2D>();
        LetterInteract[i].gameObject.GetOrAddComponent<MouseEventSystem>().MouseEvent += CheckLetterSound;

    }
}   

private void CheckLetterSound(GameObject target, MouseEventType type)
{
    if(type == MouseEventType.CLICK)
    {
        int targetIndex = System.Array.IndexOf(LetterInteract, target);
        Debug.Log(targetIndex);
    }
}

从代码中,我注意到我将Circle Collider组件添加到随机生成的对象中。

问题是每次点击都会使targetIndex为-1。例如,单击索引为2的对象,targetIndex必须为2,依此类推。

有谁能告诉我代码中的错误在哪里?

1 个答案:

答案 0 :(得分:4)

从我所看到的内容,您希望Transform对象gameObject等于target

如果是,则需要使用Linq,首先找到Transform等于gameObject的{​​{1}},然后获取其索引。

target

另一种选择是:

var transform = LetterInteract.FirstOrDefault(x => x.gameObject == target);
var targetIndex = Array.IndexOf(LetterInteract, transform);