IT小白can 2018-05-23 15:15 采纳率: 0%
浏览 8912
已结题

请教一个有关UnityEvent.AddListener()的问题

小白一枚,求教大佬
最近在学习UGUI控件,我发现如果button.onClick.AddListener()在Update()中使用,当点击一下鼠标就会出现AddListener()的 匿名方法参数被多次调用的情况,而在Start()或者Awake()中就不会出现这个问题。

想请教一下,AddListener()这个方法只能在Start()或者Awake()中使用吗?但这两个函数不是在项目运行中只执行一次吗?

  • 写回答

6条回答

  • sika0819 2018-05-30 05:15
    关注

    AddListener是在监听列表里面添加一个监听的委托,放在update里面会导致重复添加,相当于List.Add在Update当中的效果。使用AddListener注册了监听以后,程序满足了OnClick条件时就会自动调用这个事件。委托是在程序外一直等待,直到满足条件执行(想象协程的感觉,协程也只需要在start调用一次。相当于委托自己开了一个线程等待,如果放在update里面就会无限注册委托导致程序崩溃)。所以只需要在start或awake当中注册一次就可以了。update里由于重复添加监听很多遍,就会重复调用该委托。

    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料