少年修仙传客户端代码仓库
client_linchunjie
2019-03-19 c68cef685da67cc8ea7ba0efc11dc8906390a627
6340  【前端】【2.0】境界改版开发单(优化特效表现)
2个文件已修改
100 ■■■■ 已修改文件
System/Realm/RealmAnimationBehaviour.cs 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Realm/RealmWin.cs 66 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Realm/RealmAnimationBehaviour.cs
@@ -17,10 +17,12 @@
        [SerializeField] UIEffect m_EffectLevelUp;
        [SerializeField] UIEffect m_EffectBoss;
        [SerializeField] UIEffect m_EffectBase;
        [SerializeField] UIEffect m_EffectCover;
        [SerializeField, Header("小境界升级特效时长")] float m_NormalLevelUpEffectTime = 1.5f;
        [SerializeField, Header("大境界升级特效时长")] float m_SpecialLevelUpEffectTime = 4.5f;
        [SerializeField, Header("Boss特效时长")] float m_BossEffectTime = 2f;
        [SerializeField, Header("罩子消失时机"), Range(0, 2f)] float m_CoverDisappearTime = 1.0f;
        [SerializeField, Header("罩子切换时机")] float m_CoverChangeTime = 3.0f;
        Coroutine m_RotateCoroutine = null;
@@ -28,10 +30,12 @@
        public bool rotating { get; private set; }
        public bool isPlayingAnimation { get; private set; }
        public bool isPlayingBossEffect { get; private set; }
        public event Action onRotateComplete;
        public event Action onLevelUpComplete;
        public event Action onBossAppearComplete;
        public event Action onCoverChange;
        RealmModel model { get { return ModelCenter.Instance.GetModel<RealmModel>(); } }
@@ -39,6 +43,7 @@
        {
            rotating = false;
            isPlayingAnimation = false;
            isPlayingBossEffect = false;
            m_ContainerLine.gameObject.SetActive(false);
            for (int i = 0; i < m_RealmStages.Length; i++)
            {
@@ -125,7 +130,19 @@
            m_EffectLevelUp.effect = levelUpEffectId;
            m_EffectLevelUp.Play();
            var effectTime = config.BossID != 0 ? m_SpecialLevelUpEffectTime : m_NormalLevelUpEffectTime;
            yield return WaitingForSecondConst.GetWaitForSeconds(effectTime);
            if (config.BossID != 0)
            {
                yield return WaitingForSecondConst.GetWaitForSeconds(m_CoverChangeTime);
                if (onCoverChange != null)
                {
                    onCoverChange();
                }
                yield return WaitingForSecondConst.GetWaitForSeconds(effectTime - m_CoverChangeTime);
            }
            else
            {
                yield return WaitingForSecondConst.GetWaitForSeconds(effectTime);
            }
            if (index != -1)
            {
@@ -151,7 +168,7 @@
            {
                StartBossEffectShow();
                model.SetBossEffectShow(model.displayRealmLevel);
                yield return WaitingForSecondConst.GetWaitForSeconds(Mathf.Max(0f, 3.1f - m_BossEffectTime));
                yield return WaitingForSecondConst.WaitMS3000;
            }
            isPlayingAnimation = false;
@@ -191,6 +208,7 @@
        IEnumerator Co_BossEffectShow()
        {
            isPlayingBossEffect = true;
            m_EffectBoss.Play();
            Animator animator = null;
            if (m_EffectBoss.target != null)
@@ -207,8 +225,15 @@
                    obj.gameObject.SetActive(false);
                }
            }
            yield return WaitingForSecondConst.GetWaitForSeconds(m_CoverDisappearTime);
            if (m_EffectCover.IsPlaying)
            {
                m_EffectCover.StopImediatly();
            }
            yield return WaitingForSecondConst.GetWaitForSeconds(2f - m_CoverDisappearTime);
            yield return WaitingForSecondConst.GetWaitForSeconds(m_BossEffectTime);
            isPlayingBossEffect = false;
            if (onBossAppearComplete != null)
            {
                onBossAppearComplete();
@@ -285,6 +310,7 @@
        {
            rotating = false;
            isPlayingAnimation = false;
            isPlayingBossEffect = false;
            StopAllCoroutines();
            if (m_RotateCoroutine != null)
            {
System/Realm/RealmWin.cs
@@ -36,6 +36,7 @@
        int cacheRealmLevel = 0;
        long cacheFightPower = 0;
        long customUpPower = 0;
        bool tweenOnStart = false;
        const int REALM_STAGE_COUNT = 5;
@@ -100,6 +101,7 @@
            m_RealmAnimation.onRotateComplete += OnRotateComplete;
            m_RealmAnimation.onLevelUpComplete += OnLevelUpComplete;
            m_RealmAnimation.onBossAppearComplete += OnBossAppearComplete;
            m_RealmAnimation.onCoverChange += OnCoverChange;
            mainDateModel.customDisplayPower += CustomDisplayPower;
            cacheRealmLevel = PlayerDatas.Instance.baseData.realmLevel;
@@ -113,16 +115,15 @@
            m_RealmState = RealmState.LevelUp;
            HideRealmBoss();
            DisplayRealmUp();
            m_RealmBriefTween.Play();
            var realmLevel = PlayerDatas.Instance.baseData.realmLevel;
            var requireLevelUp = realmLevel < model.realmMaxLevel && model.selectRealm > realmLevel;
            if (requireLevelUp)
            tweenOnStart = true;
            m_RealmBriefTween.SetStartState();
            m_RealmLevelUpTween.SetStartState();
            if (!m_RealmAnimation.isPlayingBossEffect)
            {
                m_RealmLevelUpTween.Play();
                StartTween();
            }
        }
@@ -138,6 +139,7 @@
            m_RealmAnimation.onLevelUpComplete -= OnLevelUpComplete;
            m_RealmAnimation.onBossAppearComplete -= OnBossAppearComplete;
            mainDateModel.customDisplayPower -= CustomDisplayPower;
            m_RealmAnimation.onCoverChange -= OnCoverChange;
            HideRealmUp();
        }
@@ -172,9 +174,9 @@
            DisplayUnlockEquip();
            DisplayCover();
            if (model.SatisfyChallengeBoss(model.selectRealm - 1))
            if (model.SatisfyChallengeBoss(model.displayRealmLevel))
            {
                if (model.GetBossEffectShow(model.selectRealm - 1))
                if (model.GetBossEffectShow(model.displayRealmLevel))
                {
                    DisplayEffectBoss();
                }
@@ -182,7 +184,7 @@
                {
                    m_RealmAnimation.StartBossEffectShow();
                    m_GotoBoss.gameObject.SetActive(false);
                    model.SetBossEffectShow(model.selectRealm - 1);
                    model.SetBossEffectShow(model.displayRealmLevel);
                }
            }
        }
@@ -338,7 +340,20 @@
                    obj.gameObject.SetActive(!requireBossEffect);
                }
            }
        }
        void StartTween()
        {
            m_RealmBriefTween.Play();
            var realmLevel = PlayerDatas.Instance.baseData.realmLevel;
            var requireLevelUp = realmLevel < model.realmMaxLevel && model.selectRealm > realmLevel;
            if (requireLevelUp)
            {
                m_RealmLevelUpTween.Play();
            }
            tweenOnStart = false;
        }
        private void PlayerDataRefreshEvent(PlayerDataType dataType)
@@ -362,6 +377,20 @@
                    customUpPower += (PlayerDatas.Instance.baseData.FightPoint - cacheFightPower);
                }
                cacheFightPower = PlayerDatas.Instance.baseData.FightPoint;
            }
            else if (dataType == PlayerDataType.LV)
            {
                m_RealmLevelUp.DisplayCondition();
                if (m_RealmAnimation.isPlayingAnimation || m_RealmAnimation.rotating)
                {
                    return;
                }
                if (model.SatisfyChallengeBoss(model.displayRealmLevel)
                    && !model.GetBossEffectShow(model.displayRealmLevel))
                {
                    model.SetBossEffectShow(model.displayRealmLevel);
                    m_RealmAnimation.StartBossEffectShow();
                }
            }
        }
@@ -455,6 +484,23 @@
        public void OnBossAppearComplete()
        {
            m_GotoBoss.gameObject.SetActive(true);
            if (tweenOnStart)
            {
                StartTween();
            }
            if (m_EffectCover.IsPlaying)
            {
                m_EffectCover.StopImediatly();
            }
        }
        private void OnCoverChange()
        {
            var id = model.GetRealmCoverEffect(model.displayRealmLevel + 1);
            m_EffectCover.effect = id;
            m_EffectCover.Play();
        }
        private bool CustomDisplayPower()