gpt4 book ai didi

c# - EventTrigger 在循环中的意外结果

转载 作者:太空宇宙 更新时间:2023-11-03 22:31:12 26 4
gpt4 key购买 nike

我在一个循环中使用一组游戏对象(图像 Sprite )填充了一个网格布局。在循环中,我希望图像是可点击的,并将玩家带到不同的场景。

如果尝试以下它有效:

    EventTrigger[] trigger = new EventTrigger[pocet];
EventTrigger.Entry[] entries = new EventTrigger.Entry[pocet];

entries[0] = new EventTrigger.Entry();
entries[0].eventID = EventTriggerType.PointerUp;
entries[0].callback.AddListener((eventData) => {
newObj[0].transform.localScale += new Vector3(2f, 2f, 0);
});
trigger[0].triggers.Add(entries[0]);

我可以继续用所有索引复制它,它会正常工作,但是如果我在这样的循环中创建它:

    for(int i = 0; i<pocet-1;i++)
{
entries[i] = new EventTrigger.Entry();
entries[i].eventID = EventTriggerType.PointerUp;
entries[i].callback.AddListener((eventData) => {
newObj[i].transform.localScale += new Vector3(2f, 2f, 0);
});
trigger[i].triggers.Add(entries[i]);
}

EventTrigger 适用于所有图像,但总是放大最后一个图像(对象)。几乎就像听众被重置,只记住最后一个,我不知道要改变什么才能让它工作。

最佳答案

您不能在 lambda 表达式中使用迭代器 i

当它最终调用时,最后一个值用于所有按钮中的 i

→ 先存到变量中

var index = i; 
entries[i].callback.AddListener((eventData) => {
newObj[index].transform.localScale += new Vector3(2f, 2f, 0);
});

关于c# - EventTrigger 在循环中的意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57705943/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com