Main/Component/UI/Core/GradientText.cs
@@ -5,7 +5,7 @@ /// <summary> /// 支持渐变效果的文本组件 /// </summary> public class GradientText : Text public class GradientText : RichText { [Header("渐变设置")] [SerializeField] Main/Component/UI/Effect/EffectPlayer.cs
@@ -260,8 +260,8 @@ { //LoadAsset 已经有缓存SkeletonDataAsset spineComp.skeletonDataAsset = ResManager.Instance.LoadAsset<SkeletonDataAsset>("UIEffect/" + effectConfig.packageName, effectConfig.fxName); //为true时会有部分特效不显示 如主界面装备特效;改成伽马后不会出现BUG故注释代码 // spineComp.MeshGenerator.settings.pmaVertexColors = !closePMA; //为true时会有部分特效不显示 如满级经验条;改成伽马后部分特效正常,还有部分依然要改此设置 spineComp.MeshGenerator.settings.pmaVertexColors = !closePMA; spineComp.raycastTarget = false; spineComp.Initialize(true); spineComp.timeScale = speedRate; Main/Component/UI/Effect/EllipseMask.cs
@@ -154,7 +154,7 @@ { if (m_MaskMaterial == null) { Shader ellipseShader = Shader.Find("GUI/EllipseMask"); Shader ellipseShader = ResManager.Instance.LoadAsset<Shader>("Shader", "GUI_EllipseMask"); if (ellipseShader != null) { m_MaskMaterial = new Material(ellipseShader); @@ -237,7 +237,8 @@ { if (graphic.material == null || !graphic.material.shader.name.Contains("EllipseMaskedContent")) { Shader maskedShader = Shader.Find("GUI/EllipseMaskedContent"); // Shader maskedShader = Shader.Find("GUI/EllipseMaskedContent"); Shader maskedShader = ResManager.Instance.LoadAsset<Shader>("Shader", "GUI_EllipseMaskedContent"); if (maskedShader != null) { Material maskedMaterial = new Material(maskedShader); Main/Main.cs
@@ -113,6 +113,8 @@ // 前面有重新InitManagers了 这里就不在做清除 // ReleaseMgrs(); ClearGameData(); //销毁所有战场 BattleManager.Instance.DestroyAllBattleField(); } private static void ReleaseMgrs() Main/ResModule/ResManager.cs
@@ -167,7 +167,7 @@ //外部用到的自己加后缀,内部统一去除后缀名 name = name.Substring(0, name.LastIndexOf(".")); } //TODO: 临时特殊处理打包后的路径读取 if (directory == "UI" || directory == "UIComp" || directory.StartsWith("Sprite") || directory == "Battle/Prefabs" || directory == "Materials") { @@ -182,6 +182,10 @@ { directory = "maps/" + name; } else if (directory.Contains("Shader")) { directory = "graphic/shader"; } var assetInfo = new AssetInfo(directory.ToLower(), name.ToLower()); Main/System/Arena/ArenaBattleFailWin.cs
@@ -32,6 +32,10 @@ } Display(); CreateScroller(); if (!FirstChargeManager.Instance.GetLocalFail()) { FirstChargeManager.Instance.SetLocalFail(); } FirstChargeManager.Instance.TryPopWin("ArenaBattleFailWin"); } Main/System/Battle/BattleField/BattleField.cs
@@ -534,9 +534,21 @@ recordPlayer.HaveRest(); battleObjMgr.HaveRest(BattleCamp.Red); battleObjMgr.DestroyTeam(BattleCamp.Blue); SetBattleStartState(); SetBattleMode(BattleMode.Stop); } //清场敌方但不终止战斗,用于切换主线BOSS战斗后,正常显示敌方 public virtual void CleanBattle() { battleEffectMgr.HaveRest(); battleTweenMgr.HaveRest(); recordPlayer.HaveRest(); battleObjMgr.HaveRest(BattleCamp.Blue); battleObjMgr.DestroyTeam(BattleCamp.Blue); SetBattleStartState(); } public bool IsBattleEnd() { return IsBattleFinish; Main/System/Battle/BattleManager.cs
@@ -659,4 +659,16 @@ } return null; } public void DestroyAllBattleField() { foreach (var kvp in battleFields) { BattleField battleField = kvp.Value; if (battleField == null) continue; DestroyBattleField(battleField); } } } Main/System/Battle/BattleObject/BattleObject.cs
@@ -101,8 +101,15 @@ var heroInfoBarScale = heroInfoBar.transform.localScale; heroInfoBarScale.x *= Camp == BattleCamp.Red ? 1 : -1; heroInfoBar.transform.localScale = heroInfoBarScale; if (battleField is StoryBattleField && (battleField as StoryBattleField).battleState == StoryBattleState.Break) { //主线关卡休息中的不显示血条 heroInfoBar.SetActive(false); } else { heroInfoBar.SetActive(true); } SetFront(); } Main/System/BattlePass/BattlePassCommonCell.cs
@@ -69,6 +69,9 @@ var betterAwardState = BattlePassManager.Instance.GetBPCellAwardState(battlePassData, totalValue, config.NeedValue, 1); for (int i = 0; i < betterAwards.Length; i++) { if (i < config.ZLRewardItemList.Length) { betterAwards[i].SetActive(true); int itemID = config.ZLRewardItemList[i][0]; betterAwards[i].Init(new ItemCellModel(itemID, false, config.ZLRewardItemList[i][1])); betterAwards[i].button.AddListener(() => @@ -79,6 +82,11 @@ betterCanGetAwardRects[i].SetActive(betterAwardState == 1); betterLockRects[i].SetActive(battlePassData.isActivite == 0); } else { betterAwards[i].SetActive(false); } } } void GetAward(BattlePassData battlePassData, int awardState, int itemID) Main/System/BattlePass/BattlePassCommonWin.cs
@@ -81,12 +81,7 @@ var ctgID = BattlePassManager.Instance.GetCTGIDByType(battlePasstype); var config = CTGConfig.Get(ctgID); welfarePerText.text = config.Percentage + "%"; if (!config.GainItemList.IsNullOrEmpty() && config.GainItemList.Length >= 2) { //约定第二个物品 itemNameText.text = Language.Get("BattlePass8", config.GainItemList[1][1], ItemConfig.Get(config.GainItemList[1][0]).ItemName); } itemNameText.text = Language.Get("BattlePassAD" + battlePasstype); tabNameText.text = Language.Get("BattlePassTab" + battlePasstype); titleText.text = Language.Get("BattlePassTitle" + battlePasstype); } @@ -99,6 +94,7 @@ lockRect.SetActive(battlePassData.isActivite == 0); scroller.m_Scorller.RefreshActiveCellViews(); var _rect = scroller.GetComponent<RectTransform>(); if (battlePassData.isActivite == 0) { rechargeRect.SetActive(true); @@ -114,11 +110,15 @@ { ItemTipUtility.Show(itemID); }); _rect.sizeDelta = new Vector2(_rect.rect.width, 630); } else { rechargeRect.SetActive(false); _rect.sizeDelta = new Vector2(_rect.rect.width, 757); } } void ShowTotalValueStr() Main/System/FirstCharge/FirstChargeManager.cs
@@ -4,7 +4,8 @@ public class FirstChargeManager : GameSystemManager<FirstChargeManager> { public const int FuncID = 21; public int taskID; public int nextTaskID; public int mainItemId { get { return GetMainItemId(); } } public int heroItemID; public int maxGiftCount @@ -27,7 +28,7 @@ DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitializeEvent; DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk; RechargeManager.Instance.rechargeCountEvent += OnRechargeCountEvent; FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent; TaskManager.Instance.OnTaskUpdate += OnTaskUpdate; InitClickTabDict(); InitRedPoint(); } @@ -37,21 +38,28 @@ DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitializeEvent; DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent -= OnPlayerLoginOk; RechargeManager.Instance.rechargeCountEvent -= OnRechargeCountEvent; FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent; TaskManager.Instance.OnTaskUpdate -= OnTaskUpdate; } private void OnFuncStateChangeEvent(int obj) public event Action OnFirstChargeTaskUpdateEvent; int beforeMainID; private void OnTaskUpdate() { if (FuncID == obj) int currentTaskID = TaskManager.Instance.mainTask.TaskID; if (beforeMainID == taskID && currentTaskID == nextTaskID) { string key = $"FirstCharge_FirstTime_{FuncID}_{PlayerDatas.Instance.baseData.PlayerID}"; string key = $"FirstCharge_FirstTime_{taskID}_{PlayerDatas.Instance.baseData.PlayerID}"; if (!LocalSave.HasKey(key)) { // 第一次开启功能 // 第一次完成任务 LocalSave.SetBool(key, true); PopupWindowsProcessor.Instance.Add("FirstChargeWin"); OnFirstChargeTaskUpdateEvent?.Invoke(); } } beforeMainID = currentTaskID; } public void InitClickTabDict() @@ -108,11 +116,15 @@ public void OnBeforePlayerDataInitializeEvent() { firstChargeInfoDict.Clear(); FuncConfigConfig config = FuncConfigConfig.Get("FirstCharge"); taskID = int.Parse(config.Numerical1); nextTaskID = int.Parse(config.Numerical2); } public void OnPlayerLoginOk() { if (FuncOpen.Instance.IsFuncOpen(FuncID) && TryGetUnBuyFirstId(out int firstId)) if (IsFuncOpen() && TryGetUnBuyFirstId(out int firstId)) { PopupWindowsProcessor.Instance.Add("FirstChargeWin"); } @@ -130,6 +142,8 @@ return; if (battleName == "TianziBillboradBattleField") return; if (!IsFuncOpen()) return; if (!TryGetUnBuyFirstId(out int firstId)) return; if (!UIManager.Instance.IsOpened<FirstChargeWin>()) @@ -138,6 +152,52 @@ } } public string loaclKey = "FirstCharge_Fail_"; public bool GetLocalFail() { return LocalSave.GetBool(StringUtility.Contact(loaclKey + PlayerDatas.Instance.PlayerId)); } public void SetLocalFail() { LocalSave.SetBool(StringUtility.Contact(loaclKey + PlayerDatas.Instance.PlayerId), true); } public bool IsFuncOpen() { if (IsBuyOne()) return true; if (TaskConfig.HasKey(taskID) && TaskManager.Instance.mainTask != null && TaskConfig.HasKey(TaskManager.Instance.mainTask.TaskID) && TaskManager.Instance.GetNeedFinishTaskCount(taskID) <= 0) return true; bool isLocalFail = GetLocalFail(); return isLocalFail; } // 有一档被购买就返回true public bool IsBuyOne() { var firstChargeList = FirstChargeConfig.GetKeys(); if (firstChargeList != null) { firstChargeList.Sort(); foreach (int item in firstChargeList) { if (TryGetFirstChargeDataByFirstId(item, out FirstChargeData data)) { if (data.IsUnlock() && data.IsBuy()) { return true; } } } } return false; } public bool TryGetUnBuyFirstId(out int firstId) { firstId = 0; Main/System/HeroUI/HeroBestWin.cs
@@ -1,5 +1,6 @@ using System.Collections.Generic; using System.Linq; using Cysharp.Threading.Tasks; using UnityEngine; using UnityEngine.UI; @@ -159,8 +160,31 @@ RefreshFetter(); RefreshGift(); RefreshAwake(); ForceRefreshLayout(); } /// <summary> /// 强制刷新Layout,解决嵌套Layout和ContentSizeFitter的重叠问题 /// </summary> async UniTask ForceRefreshLayout() { await UniTask.DelayFrame(2); // 刷新所有Layout组件 var layouts = allAttrScroll.GetComponentsInChildren<LayoutGroup>(true); foreach (var layout in layouts) { LayoutRebuilder.ForceRebuildLayoutImmediate(layout.GetComponent<RectTransform>()); } await UniTask.DelayFrame(2); // 刷新所有Layout组件 foreach (var layout in layouts) { LayoutRebuilder.ForceRebuildLayoutImmediate(layout.GetComponent<RectTransform>()); } } void RefreshConn() @@ -255,8 +279,10 @@ foldImg.SetActive(true); unfoldImg.SetActive(false); attrPanel.localPosition = foldPos.localPosition; //禁止attrScroll滚动 allAttrScroll.enabled = false; // //禁止attrScroll滚动 // allAttrScroll.enabled = false; var _rect = allAttrScroll.GetComponent<RectTransform>(); _rect.sizeDelta = new Vector2(_rect.rect.width, 197); } else @@ -264,7 +290,9 @@ foldImg.SetActive(false); unfoldImg.SetActive(true); attrPanel.localPosition = unfoldPos.localPosition; allAttrScroll.enabled = true; // allAttrScroll.enabled = true; var _rect = allAttrScroll.GetComponent<RectTransform>(); _rect.sizeDelta = new Vector2(_rect.rect.width, 933); } } Main/System/HeroUI/HeroUIManager.OnTeam.cs
@@ -297,9 +297,11 @@ //推荐最多6个,存在相同heroid,则跳过 List<string> selectHeroList = new List<string>(); List<int> selectHeroIDList = new List<int>(); int maxCnt = TeamConst.MaxTeamHeroCount - lockIndexList.Count; for (int i = 0; i < tmpList.Count; i++) { if (selectHeroList.Count >= TeamConst.MaxTeamHeroCount) if (selectHeroList.Count >= maxCnt) break; string guid = tmpList[i]; Main/System/ItemTip/OwnMoneyCell.cs
@@ -64,7 +64,14 @@ // Debug.LogError("moneyType == 0"); return; } numText.text = UIHelper.ReplaceLargeNum(UIHelper.GetMoneyCnt(moneyType)); double count = UIHelper.GetMoneyCnt(moneyType); int decimalPlaces = 1; if (moneyType == 99) { count = count / 100.0; decimalPlaces = 2; } numText.text = UIHelper.ReplaceLargeNum(count, decimalPlaces); if (resetIcon) { moneyIcon.SetIconWithMoneyType(moneyType); Main/System/Main/HomeWin.cs
@@ -1,6 +1,7 @@ using System; using System.Collections; using System.Collections.Generic; using DG.Tweening; using UnityEngine; using UnityEngine.UI; @@ -13,6 +14,8 @@ //经验区 [SerializeField] Text playerLevelText; [SerializeField] SmoothSlider expSlider; [SerializeField] UIEffectPlayer fullEffect; [SerializeField] UIEffectPlayer headEffect; [SerializeField] Button officialUpBtn; [SerializeField] Transform officialTip; @@ -150,6 +153,8 @@ GlobalTimeEvent.Instance.secondEvent += OnSecondEvent; HeroUIManager.Instance.OnUnLockHeroCountEvent += OnUnLockHeroCountEvent; OfficialRankManager.Instance.OnOfficialCanLVUpEvent += OnOfficialCanLVUpEvent; FirstChargeManager.Instance.OnFirstChargeTaskUpdateEvent += OnFirstChargeTaskUpdateEvent; OfficialRankManager.Instance.RealmMissionRefreshEvent += OnOfficialCanLVUpEvent; Display(); DisplayFirstChargeBtn(); @@ -173,7 +178,8 @@ GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent; HeroUIManager.Instance.OnUnLockHeroCountEvent -= OnUnLockHeroCountEvent; OfficialRankManager.Instance.OnOfficialCanLVUpEvent -= OnOfficialCanLVUpEvent; FirstChargeManager.Instance.OnFirstChargeTaskUpdateEvent -= OnFirstChargeTaskUpdateEvent; OfficialRankManager.Instance.RealmMissionRefreshEvent -= OnOfficialCanLVUpEvent; // 关闭的时候把战斗界面也给关了 虽然是在外面开的 UIManager.Instance.CloseWindow<BattleWin>(); } @@ -211,6 +217,8 @@ { lastLV = PlayerDatas.Instance.baseData.LV; lvUPEffect.Play(); fullEffect.Play(closePMA: true); headEffect.Stop(); } playerLevelText.text = PlayerDatas.Instance.baseData.LV.ToString(); break; @@ -260,15 +268,21 @@ private void UpdatePlayerInfo() { playerLevelText.text = PlayerDatas.Instance.baseData.LV.ToString(); ShowExp(); headEffect.transform.localPosition = new Vector3(400 * expSlider.value - 200 - 24, 0, 0); ShowExp(false); } void ShowExp() void ShowExp(bool showEffect = true) { var lvConfig = PlayerLVConfig.Get(PlayerDatas.Instance.baseData.LV); expSlider.value = (float)PlayerDatas.Instance.baseData.curExp / lvConfig.EXP; expSlider.Text.text = PlayerDatas.Instance.baseData.curExp + "/" + PlayerLVConfig.Get(PlayerDatas.Instance.baseData.LV).EXP; if (showEffect) { headEffect.transform.DOLocalMove(new Vector3(400 * expSlider.value - 200 - 24, 0, 0), 0.5f); headEffect.Play(closePMA:true); } } @@ -313,6 +327,7 @@ getReward.RewardType = 66; getReward.DataEx = (uint)TaskManager.Instance.mainTask.TaskID; GameNetSystem.Instance.SendInfo(getReward); return; } TaskManager.Instance.ClickTask(); @@ -428,7 +443,7 @@ private void DisplayFirstChargeBtn() { bool isFirstChargeFuncOpen = FuncOpen.Instance.IsFuncOpen(FirstChargeManager.FuncID); bool isFirstChargeFuncOpen = FirstChargeManager.Instance.IsFuncOpen(); if (FirstChargeManager.Instance.IsAllFirstChargeRewardsClaimed() && FirstChargeManager.Instance.IsNextDayAfterAllClaimed()) { @@ -438,16 +453,16 @@ { FirstChargeBtn.SetActive(isFirstChargeFuncOpen); } } private void OnFirstChargeTaskUpdateEvent() { DisplayFirstChargeBtn(); } private void OnFuncStateChange(int funcId) { if (funcId == FirstChargeManager.FuncID) { DisplayFirstChargeBtn(); } else if (funcId == GeneralDefine.mainRightFuncOpenFuncID) if (funcId == GeneralDefine.mainRightFuncOpenFuncID) { funcColBtn.SetActive(FuncOpen.Instance.IsFuncOpen(GeneralDefine.mainRightFuncOpenFuncID)); } Main/System/MainLevel/MainBossEnterWin.cs
@@ -137,6 +137,7 @@ if (MainLevelManager.Instance.CanChallengeBoss()) { BattleManager.Instance.SendTurnFight(2); BattleManager.Instance.storyBattleField.CleanBattle(); AutoFightModel.Instance.isPause = true; } CloseWindow(); Main/System/NewBieGuidance/NewBieCenter.cs
@@ -95,6 +95,15 @@ } } } if (_ui.name == "StoryBossBattleWin") { var guides = GuideConfig.GetGuideListByType((int)GuideTriggerType.PassMainBoss); if (guides != null) { TryStartNewBieGuides(guides, true); } } } void OnTaskUpdateEvent() @@ -470,6 +479,8 @@ return TaskManager.Instance.GetMainTaskType() == config.Condition && TaskManager.Instance.GetMainTaskState() != 2; } return false; case GuideTriggerType.PassMainBoss: return PlayerDatas.Instance.baseData.ExAttr1/100 >= config.Condition; default: return false; } @@ -550,5 +561,6 @@ OpenWindow = 5, //打开界面的时机 如装备替换界面 Level = 6, //等级满足条件 Realm = 7, //官职所有任务完成时触发引导,如6升7,6的任务全部完成,配置6 PassMainBoss = 8, //通关主线BOSS,在关闭界面StoryBossBattleWin时触发,触发条件为通关后的关卡如201 } Main/System/NewBieGuidance/NewBieWin.cs
@@ -111,6 +111,9 @@ CloseWindow(); return; } Debug.Log($"引导ID:{NewBieCenter.Instance.currentGuide} 引导步骤:{step}"); lastShowTime = Time.time; if (config.WinName != "EquipExchangeWin" && UIManager.Instance.IsOpened<EquipExchangeWin>()) Main/System/Settlement/BattleFailWin.cs
@@ -28,6 +28,10 @@ protected override void OnPreOpen() { if (!FirstChargeManager.Instance.GetLocalFail()) { FirstChargeManager.Instance.SetLocalFail(); } FirstChargeManager.Instance.TryPopWin("BattleFailWin"); } Main/System/Settlement/BoneBattleFailWin.cs
@@ -30,6 +30,10 @@ { int funcId = BoneFieldManager.Instance.funcId; txtFuncName.text = FuncOpenLVConfig.HasKey(funcId) ? FuncOpenLVConfig.Get(funcId).Name : string.Empty; if (!FirstChargeManager.Instance.GetLocalFail()) { FirstChargeManager.Instance.SetLocalFail(); } FirstChargeManager.Instance.TryPopWin("BoneBattleFailWin"); } Main/System/TianziBillborad/TianziBillboradManager.cs
@@ -349,7 +349,7 @@ for (int i = 0; i < jsonData["itemInfo"].Count; i++) { JsonData itemData = jsonData["itemInfo"][i]; Item itemInfo = new Item((int)itemData["ItemID"], (long)itemData["ItemID"]); Item itemInfo = new Item((int)itemData["ItemID"], (long)itemData["Count"]); itemInfos.Add(itemInfo); } } Main/Utility/UIHelper.cs
@@ -226,7 +226,7 @@ /// 大数值转化 格式 最多两个小数 ,向下取整 /// K -千,M -百萬,B-十億,T -萬億 /// </summary> public static string ReplaceLargeNum(double num) public static string ReplaceLargeNum(double num, int decimalPlaces = 1) { const long K = 10000; //国内为万,海外为千 const long M = K * 10000; @@ -243,15 +243,15 @@ } else if (num >= M) { return StringUtility.Contact(FormatWithoutRounding(num / M, 1), Language.Get("L1070")); return StringUtility.Contact(FormatWithoutRounding(num / M, decimalPlaces), Language.Get("L1070")); } else if (num >= K) { return StringUtility.Contact(FormatWithoutRounding(num / K, 1), Language.Get("L1071")); return StringUtility.Contact(FormatWithoutRounding(num / K, decimalPlaces), Language.Get("L1071")); } else { return FormatWithoutRounding(num, 1); return FormatWithoutRounding(num, decimalPlaces); } }