少年修仙传客户端代码仓库
3637 【前端】系统设置修改,修改特效层级ABC,增加根据质量设置改变的玩家特效播放规则
16个文件已修改
2个文件已添加
192 ■■■■■ 已修改文件
Core/Camera/CameraController.cs 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0102_tagCDBPlayer.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0405_tagPlayerDisappear.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0434_tagAreaPlayerAppearEx.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0614_tagUseSkillPos.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HB4_Fight/DTCB401_tagMCSkillHurtList.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/SFX/SFXPlayUtility.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Actor/Skill/FlyObject/FoTransmit.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Actor/Skill/XRayShadow.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Actor/State/SMB/STM_BaseAttack.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Actor/State/SMB/STM_NormalAttack.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Actor/Status/Status_Base.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/BattleEffectPlayRule.cs 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/BattleEffectPlayRule.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GAMgr.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GActorPlayerBase.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/PreFightMission.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Utility/LayerUtility.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/Camera/CameraController.cs
@@ -61,6 +61,35 @@
        originalRotX = rotationX;
        originalRotY = rotationY;
        DontDestroyOnLoad(this);
        SystemSetting.Instance.qualityLevelChangeEvent += QualityLevelChanged;
    }
    public void QualityLevelChanged()
    {
        if (CameraObject == null)
        {
            return;
        }
        if (SystemSetting.Instance.GetCurrentQualityLevel() == GameQuality.Low)
        {
            CameraObject.cullingMask |= LayerUtility.BattleEffectLowMask;
            CameraObject.cullingMask &= ~LayerUtility.BattleEffectMidMask;
            CameraObject.cullingMask &= ~LayerUtility.BattleEffectHighMask;
        }
        else if (SystemSetting.Instance.GetCurrentQualityLevel() == GameQuality.Medium)
        {
            CameraObject.cullingMask |= LayerUtility.BattleEffectLowMask;
            CameraObject.cullingMask |= LayerUtility.BattleEffectMidMask;
            CameraObject.cullingMask &= ~LayerUtility.BattleEffectHighMask;
        }
        else if (SystemSetting.Instance.GetCurrentQualityLevel() == GameQuality.High)
        {
            CameraObject.cullingMask |= LayerUtility.BattleEffectLowMask;
            CameraObject.cullingMask |= LayerUtility.BattleEffectMidMask;
            CameraObject.cullingMask |= LayerUtility.BattleEffectHighMask;
        }
    }
    public void PlayAnimationClip(string name)
Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0102_tagCDBPlayer.cs
@@ -165,6 +165,7 @@
            UnityEngine.Object.Instantiate(Resources.Load<GameObject>("Prefabs/GameCamera"));
            CameraController.Instance.AcceptInput = false;
            CameraController.Instance.CameraObject.enabled = false;
            CameraController.Instance.QualityLevelChanged();
        }
        var hudRoot = HUDCenter.hudRoot;
Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0405_tagPlayerDisappear.cs
@@ -24,6 +24,11 @@
        for (int i = 0; i < vNetData.Players.Length; ++i)
        {
            if (BattleEffectPlayRule.Instance.sortPlayerList.Contains(vNetData.Players[i]))
            {
                BattleEffectPlayRule.Instance.sortPlayerList.Remove(vNetData.Players[i]);
            }
            _actor = GAMgr.Instance.GetBySID(vNetData.Players[i]);
            if (_actor != null)
Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0434_tagAreaPlayerAppearEx.cs
@@ -25,6 +25,11 @@
            // 异常
        }
        if (!BattleEffectPlayRule.Instance.sortPlayerList.Contains(vNetData.PlayerID))
        {
            BattleEffectPlayRule.Instance.sortPlayerList.Add(vNetData.PlayerID);
        }
        // 离线玩家
        if (vNetData.State == 1)
        {
Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0614_tagUseSkillPos.cs
@@ -57,6 +57,8 @@
            StatusMgr.Instance.GetBuffIds(vNetData.ObjID, ref _skill.cacheBuffList);
            _skill.OnRecv_SkillCast();
            if (BattleEffectPlayRule.Instance.CanPlay(vNetData.ObjID))
            {
            // 这里播放配置的技能特效
            if (_skill.skillInfo.config.EffectName > 0)
            {
@@ -101,6 +103,7 @@
                    }
                }
            }
            }
            // 被动技能的处理
            if (_skill.skillInfo.config.SkillType == (int)E_SkillType.Passive
Core/NetworkPackage/DTCFile/ServerPack/HB4_Fight/DTCB401_tagMCSkillHurtList.cs
@@ -41,6 +41,8 @@
            }
        }
        if (BattleEffectPlayRule.Instance.CanPlay(vNetData.ObjID))
        {
        if (_skill.skillInfo.config.EffectName != 0)
        {
            bool _playEffect = true;
@@ -60,6 +62,7 @@
                SFXPlayUtility.Instance.PlayBattleEffect(_skill.skillInfo.config.EffectName, _attacker);
            }
        }
        }
        GActorFight _cTarget = null;
        HB401_tagMCSkillHurtList.tagSkillPosHurtObj _sTarget;
Core/SFX/SFXPlayUtility.cs
@@ -21,11 +21,6 @@
        SFXController _controller = Play(id, parent, scale);
        if (_controller != null)
        {
            _controller.gameObject.SetLayer(LayerUtility.BattleEffect, true);
        }
        return _controller;
    }
@@ -79,11 +74,6 @@
    public SFXController PlayBattleEffect(int id, Vector3 position, Vector3 forward, float scale = 1f)
    {
        SFXController _controller = Play(id, position, forward, scale);
        if (_controller != null)
        {
            _controller.gameObject.SetLayer(LayerUtility.BattleEffect, true);
        }
        return _controller;
    }
Fight/Actor/Skill/FlyObject/FoTransmit.cs
@@ -108,6 +108,8 @@
                    if (m_FoTransMit.ammoEffectId > 0)
                    {
                        if (BattleEffectPlayRule.Instance.CanPlay(m_InitInfo.casterServerObjID))
                        {
                        SFXController _sfx = SFXPlayUtility.Instance.PlayBattleEffect(m_FoTransMit.ammoEffectId, _fight);
                        if (_sfx)
                        {
@@ -121,9 +123,9 @@
                            m_CacheAllEffect.Add(_sfx);
                        }
                        //Debug.LogFormat("播放特效: 开始: {0}, 结束: {1}", _start, _end);
                    }
                    }
                    if (_target2 != null)
                    {
Fight/Actor/Skill/XRayShadow.cs
@@ -32,7 +32,7 @@
        _xayShadow.transform.localScale = requester.transform.localScale;
        _xayShadow.transform.position = requester.transform.position;
        _xayShadow.transform.rotation = requester.transform.rotation;
        _xayShadow.layer = LayerUtility.BattleEffect;
        _xayShadow.layer = LayerUtility.BattleEffectLow;
        XRayShadowController _controller = _xayShadow.AddComponent<XRayShadowController>();
        _controller.duration = lastTime;
Fight/Actor/State/SMB/STM_BaseAttack.cs
@@ -934,6 +934,11 @@
            }
        }
        if (!BattleEffectPlayRule.Instance.CanPlay(owner.ServerInstID))
        {
            return;
        }
        SFXController _controller = SFXPlayUtility.Instance.PlayBattleEffect(id, owner);
        if (_controller)
        {
Fight/Actor/State/SMB/STM_NormalAttack.cs
@@ -79,11 +79,14 @@
                {
                    if (_player.SelectTarget != null)
                    {
                        if (BattleEffectPlayRule.Instance.CanPlay(_player.ServerInstID))
                        {
                        m_StartHeadEffect = SFXPlayUtility.Instance.PlayBattleEffect(m_CacheSkill.skillInfo.soFile.effectOnTargetHead, _player.SelectTarget);
                    }
                }
            }
        }
        }
        if (owner is GA_Player || owner is GA_Hero)
        {
Fight/Actor/Status/Status_Base.cs
@@ -32,6 +32,8 @@
        GActorFight _target = GAMgr.Instance.GetBySID(data.ObjID) as GActorFight;
        if (!(_target is GA_Player) || BattleEffectPlayRule.Instance.CanPlay(data.ObjID))
        {
        if (_target != null)
        {
            if (m_SkillConfig.BuffEffectID > 0)
@@ -62,6 +64,7 @@
                }
            }
        }
        }
        if (data.BuffType == (int)E_BuffType.bfActionBuff)
        {
Fight/GameActor/BattleEffectPlayRule.cs
New file
@@ -0,0 +1,89 @@
using System.Collections.Generic;
using UnityEngine;
public class BattleEffectPlayRule : Singleton<BattleEffectPlayRule>
{
    public List<uint> sortPlayerList = new List<uint>();
    private int limit
    {
        get
        {
            if (SystemSetting.Instance.GetCurrentQualityLevel() == GameQuality.High)
            {
                return 7;
            }
            else if (SystemSetting.Instance.GetCurrentQualityLevel() == GameQuality.Medium)
            {
                return 3;
            }
            else
            {
                return 0;
            }
        }
    }
    public float timeEscape;
    public void Update()
    {
        if (Time.realtimeSinceStartup - timeEscape > .5f)
        {
            GA_Hero _hero = PlayerDatas.Instance.hero;
            if (_hero == null)
            {
                return;
            }
            sortPlayerList.Sort((id1, id2) =>
            {
                GActor _actor1 = GAMgr.Instance.GetBySID(id1);
                GActor _actor2 = GAMgr.Instance.GetBySID(id2);
                float _dis1 = MathUtility.DistanceSqrtXZ(_hero.Pos, _actor1.Pos);
                float _dis2 = MathUtility.DistanceSqrtXZ(_hero.Pos, _actor2.Pos);
                return _dis2 > _dis1 ? -1 : 1;
            });
            timeEscape = Time.realtimeSinceStartup;
        }
    }
    public bool CanPlay(uint sid)
    {
        GA_Hero _hero = PlayerDatas.Instance.hero;
        if (_hero == null)
        {
            return false;
        }
        // 选中英雄必显示
        if (_hero.SelectTarget != null)
        {
            if (_hero.SelectTarget.ServerInstID == sid
             || _hero.LockTarget.ServerInstID == sid)
            {
                return true;
            }
        }
        // 获取传入的玩家在排序后的队列中的索引
        int _index = sortPlayerList.IndexOf(sid);
        // 不存在可能是异常,不播放
        if (_index < 0)
        {
            return false;
        }
        // 在限定的数量内,允许播放
        if (_index < limit)
        {
            return true;
        }
        return false;
    }
}
Fight/GameActor/BattleEffectPlayRule.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 52c66c7311d7af341b7bdb32f3cd7096
timeCreated: 1537445788
licenseType: Free
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Fight/GameActor/GAMgr.cs
@@ -12,6 +12,8 @@
    public Dictionary<int, string> s_NpcID2BundleName = new Dictionary<int, string>();
    public Dictionary<int, string> s_NpcID2Assetname = new Dictionary<int, string>();
    public event UnityAction<uint> OnGActorRequest;
    public event UnityAction<uint> OnGActorServerDie;
@@ -923,6 +925,8 @@
        }
        UpdateOffLinePlayer();
        BattleEffectPlayRule.Instance.Update();
    }
    public void DoLateUpdate()
Fight/GameActor/GActorPlayerBase.cs
@@ -2323,12 +2323,15 @@
        SetAnimatorSpeed(JobSetup.RushAnimatorSpeed * Constants.F_DELTA);
        m_LastRushTime = Time.time;
        if (this is GA_Hero || BattleEffectPlayRule.Instance.CanPlay(ServerInstID))
        {
        if (m_RushEffect == null)
        {
            m_RushEffect = SFXPlayUtility.Instance.PlayBattleEffect(50401, this);
            m_RushEffect.duration = 0;
        }
    }
    }
    public void StopRush()
    {
Fight/PreFightMission.cs
@@ -631,7 +631,8 @@
        if (GA_Hero.s_MapSwitching)
        {
            if (PlayerDatas.Instance.hero.IsRun())
            if (PlayerDatas.Instance.hero != null
             && PlayerDatas.Instance.hero.IsRun())
            {
                PlayerDatas.Instance.hero.IdleImmediate();
            }
Utility/LayerUtility.cs
@@ -46,8 +46,12 @@
    public static readonly int BossShow = LayerMask.NameToLayer("BossShow");
    public static readonly int BossShowMask = 1 << BossShow;
    public static readonly int BattleEffect = LayerMask.NameToLayer("BattleEffect");
    public static readonly int BattleEffectMask = 1 << BattleEffect;
    public static readonly int BattleEffectLow = LayerMask.NameToLayer("BattleEffectLow");
    public static readonly int BattleEffectLowMask = 1 << BattleEffectLow;
    public static readonly int BattleEffectMid = LayerMask.NameToLayer("BattleEffectMid");
    public static readonly int BattleEffectMidMask = 1 << BattleEffectMid;
    public static readonly int BattleEffectHigh = LayerMask.NameToLayer("BattleEffectHigh");
    public static readonly int BattleEffectHighMask = 1 << BattleEffectHigh;
    public static readonly int Hide = LayerMask.NameToLayer("Hide");
    public static readonly int HideMask = 1 << Hide;