EventTrigger 在循环中的意外结果
Unexpected results of EventTrigger in loop
我在一个循环中使用一组游戏对象(图像精灵)填充了一个网格布局。在循环中,我希望图像是可点击的,并将玩家带到不同的场景。
如果尝试以下方法有效:
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);
});
我在一个循环中使用一组游戏对象(图像精灵)填充了一个网格布局。在循环中,我希望图像是可点击的,并将玩家带到不同的场景。
如果尝试以下方法有效:
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);
});