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

(207评价)
优惠后 ¥1899.00优惠前 ¥2499.00 双十一全年最大力度限时优惠
1对1 答疑即时回复7天无理由退款30天价保提问必答

服务保障

1对1 答疑

提供专属的一对一在线答疑,快速答疑解惑。

即时回复

及时响应学习咨询,帮助解决问题。

7天无理由退款

购买后7天内可申请无理由退款。

30天价保

购买后30天内如遇降价,可申请价保。

提问必答

对于提问做到有问必答,帮您扫清学习过程中的种种障碍

保卫萝卜中,课时149中
小莽发起了问答2019-06-23
4
回复
473
浏览

函数的调用顺序:
这段代码进入ShowMask()中, 再调用 t.OnComplete(ExitSceneComplete);,进行了currentSceneState.EnterScene()操作  ,为何currentSceneState 此时已经变为了baseSceneState ,我认为现在 应该还没执行完ShowMask()函数,请老师解释一哈这个回调方法OnComplete()为何是在        currentSceneState = baseSceneState;后面执行的

   public void ChanegSceneState(IBaseSceneState baseSceneState)
    {
        lastSceneState = currentSceneState;
        ShowMask();
        currentSceneState = baseSceneState;
    }
    //显示遮罩
    public void ShowMask()
    {
        Tween t = DOTween.To(() => maskImage.color, toColor => maskImage.color = toColor, new Color(0, 0, 0, 1), 2f);
        t.OnComplete(ExitSceneComplete);//在tween动画完成时回调ExitSceneComplete()函数
    }
    //离开当前场景
    private void ExitSceneComplete()
    {
        lastSceneState.ExitScene();
        currentSceneState.EnterScene();
        HideMask();
    }

    //隐藏遮罩
    public void HideMask()
    {
        DOTween.To(() => maskImage.color, toColor => maskImage.color = toColor, new Color(0, 0, 0,0), 2f);
    }

 

所有回复
  • 老师_Trigger • 2019-06-23

    同学你好,它是先执行完毕ShowMask里的所有方法之后再去做回调的,没有在OnComplete这里挂起。

    • 小莽 • 2019-06-24

      ShowMask();函数是在currentSceneState = baseSceneState;之前执行的,而ExitSceneComplete()函数是在ShowMask()函数中执行的, 为何可以再ExitSceneComplete()中使用 currentSceneState.EnterScene();,此时的currentSceneState应该不等于baseState才对噻

      (0) 回复
    • 老师_Trigger • 2019-06-24

      回复 @ 小莽: 同学动手做一下实验,使用debug12345,看一下函数的执行顺序就清楚了哦,看看OnComplete具体怎么调用的。

      (0) 回复
    • 小莽 • 2019-06-24

      回复 @ 老师_Trigger: 我其实提问之前就做过试验了 我只想知道为什么要这样 嗨呀

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