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

(196评价)
价格: 4019.00元
保卫萝卜中,课时149中
小莽发起了问答2019-06-23
4
回复
313
浏览

函数的调用顺序:
这段代码进入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条回复,点击查看
    你还没有登录,请先登录注册
发表回复
你还没有登录,请先 登录或 注册!