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

请教一个有关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里由于重复添加监听很多遍,就会重复调用该委托。

    评论

报告相同问题?

悬赏问题

  • ¥188 寻找能做王者评分提取的
  • ¥15 matlab用simulink求解一个二阶微分方程,要求截图
  • ¥30 matlab解优化问题代码
  • ¥15 写论文,需要数据支撑
  • ¥15 identifier of an instance of 类 was altered from xx to xx错误
  • ¥100 反编译微信小游戏求指导
  • ¥15 docker模式webrtc-streamer 无法播放公网rtsp
  • ¥15 学不会递归,理解不了汉诺塔参数变化
  • ¥15 基于图神经网络的COVID-19药物筛选研究
  • ¥30 软件自定义无线电该怎样使用