老师,78之前都是能正常登录弹出的,然后78改了以后发现 RoomListPanel是加载出来了,但是一直是active=false状态,只调用了OnEnter函数,就马上变为Active=false的状态,连它的Start函数都没来得及调用 UI框架里没有代码让它变为active=false,它实例化出来后自身的脚本也是最先调用OnEnter函数 但OnEnter中也没有设置它为active=false状态 它是怎么变为false的 我手动点它为Active(true)状态,它才开始调用Start函数 这是什么回事
同学你好,造成这个的原因有很多,可能是同学写的代码里判断里有逻辑短路他不走,或者框架的执行调用有问题,亦或是一些地方有空引用他不报错也会这样,同学可以回到出问题之前那节,检查之后几节的代码,听一听老师的课程,找到问题的根源。
老师能看到代码截图吗?我把代码发你吧:
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就正常执行也没报错
这是什么回事啊
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();这个是播放进入动画,每次进入都要播放的