小白一枚,求教大佬
最近在学习UGUI控件,我发现如果button.onClick.AddListener()在Update()中使用,当点击一下鼠标就会出现AddListener()的 匿名方法参数被多次调用的情况,而在Start()或者Awake()中就不会出现这个问题。
想请教一下,AddListener()这个方法只能在Start()或者Awake()中使用吗?但这两个函数不是在项目运行中只执行一次吗?
小白一枚,求教大佬
最近在学习UGUI控件,我发现如果button.onClick.AddListener()在Update()中使用,当点击一下鼠标就会出现AddListener()的 匿名方法参数被多次调用的情况,而在Start()或者Awake()中就不会出现这个问题。
想请教一下,AddListener()这个方法只能在Start()或者Awake()中使用吗?但这两个函数不是在项目运行中只执行一次吗?
AddListener是在监听列表里面添加一个监听的委托,放在update里面会导致重复添加,相当于List.Add在Update当中的效果。使用AddListener注册了监听以后,程序满足了OnClick条件时就会自动调用这个事件。委托是在程序外一直等待,直到满足条件执行(想象协程的感觉,协程也只需要在start调用一次。相当于委托自己开了一个线程等待,如果放在update里面就会无限注册委托导致程序崩溃)。所以只需要在start或awake当中注册一次就可以了。update里由于重复添加监听很多遍,就会重复调用该委托。