我的代码有点问题:
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,依此类推。
有谁能告诉我代码中的错误在哪里?
答案 0 :(得分:4)
从我所看到的内容,您希望Transform
对象gameObject
等于target
。
如果是,则需要使用Linq
,首先找到Transform
等于gameObject
的{{1}},然后获取其索引。
target
另一种选择是:
var transform = LetterInteract.FirstOrDefault(x => x.gameObject == target);
var targetIndex = Array.IndexOf(LetterInteract, transform);