Unity - A计划 3.0(三年有效期) 已关闭

Unity - A计划 3.0(三年有效期) 扫二维码继续学习 二维码时效为半小时

(4评价)
价格: 1666.00元
丛林战争78讲 RoomListPanel弹出的问题
sky100shu发起了问答2018-03-01
5
回复
409
浏览

老师,78之前都是能正常登录弹出的,然后78改了以后发现 RoomListPanel是加载出来了,但是一直是active=false状态,只调用了OnEnter函数,就马上变为Active=false的状态,连它的Start函数都没来得及调用   UI框架里没有代码让它变为active=false,它实例化出来后自身的脚本也是最先调用OnEnter函数  但OnEnter中也没有设置它为active=false状态  它是怎么变为false的 我手动点它为Active(true)状态,它才开始调用Start函数 这是什么回事

所有回复
  • 老师_Trigger 2018-03-01

    同学你好,造成这个的原因有很多,可能是同学写的代码里判断里有逻辑短路他不走,或者框架的执行调用有问题,亦或是一些地方有空引用他不报错也会这样,同学可以回到出问题之前那节,检查之后几节的代码,听一听老师的课程,找到问题的根源。

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • sky100shu 2018-03-01

    老师,还是行不通啊,我对着视频又检查了一遍代码,都还是那样

    77做完都还是可以的 ,就是78那里改为用Start赋值就行不通了

    我改为用OnEnter赋值,结果又可以了

    但是一改为用Start赋值就又那样了,变为active=false状态:

    这是RoomListPanel这个脚本里,我就对比修改了这两处

    这是什么问题

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • sky100shu 2018-03-01

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • sky100shu 2018-03-01

    老师能看到代码截图吗?我把代码发你吧:

            battleRes = transform.Find("BattleRes").GetComponent<RectTransform>();
            roomList = transform.Find("RoomList").GetComponent<RectTransform>();
            transform.Find("RoomList/CloseButton").GetComponent<Button>().onClick.AddListener(OnCloseClick);
            EnterAnim();

    这段代码只在OnEnter中调用就正常显示,但是有按钮多次注册的问题,这也是siki老师解决的bug

    但是这段代码一放在Start中执行,就会出现active=false的问题了.

    然后我手动点击设置它active=true, Start就正常执行也没报错

    这是什么回事啊

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • siki 2018-03-02

     battleRes = transform.Find("BattleRes").GetComponent<RectTransform>();
            roomList = transform.Find("RoomList").GetComponent<RectTransform>();
            transform.Find("RoomList/CloseButton").GetComponent<Button>().onClick.AddListener(OnCloseClick);

    这些都是要执行一次的东西,放在Start里面即可

     EnterAnim();这个要放在OnEnter里面,因为 EnterAnim();这个是播放进入动画,每次进入都要播放的

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
发表回复
你还没有登录,请先 登录或 注册!