From b4f10943987cfce4a271d3be431f1fe57d57046a Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期二, 14 四月 2026 19:31:14 +0800
Subject: [PATCH] 602 坐骑优化-客户端 战马列表实现缓存,避免每次重新排序
---
Main/System/Horse/HorseCarouselView.cs | 14 ++------------
Main/System/Horse/HorseManager.cs | 23 +++++++++++++++++++++++
Main/Config/PartialConfigs/HorseSkinConfig.cs | 4 ++++
Main/System/Horse/HorseWin.cs | 14 ++------------
4 files changed, 31 insertions(+), 24 deletions(-)
diff --git a/Main/Config/PartialConfigs/HorseSkinConfig.cs b/Main/Config/PartialConfigs/HorseSkinConfig.cs
index a4ffee8..d60ccd4 100644
--- a/Main/Config/PartialConfigs/HorseSkinConfig.cs
+++ b/Main/Config/PartialConfigs/HorseSkinConfig.cs
@@ -4,6 +4,9 @@
public static List<int> itemsList = new List<int>(); //鐨偆閬撳叿瑙i攣/鍗囨槦
//鍧愰獞ID,鐨偆ID
public static Dictionary<int, int> horseIDTohorseSkinIDDict = new();
+ //鐨偆ID,鍧愰獞ID (鍙嶅悜鏄犲皠)
+ public static Dictionary<int, int> skinIDToHorseIDDict = new();
+
protected override void OnConfigParseCompleted()
{
@@ -18,6 +21,7 @@
if (UnlockWay == 3)
{
horseIDTohorseSkinIDDict[UnlockValue] = SkinID;
+ skinIDToHorseIDDict[SkinID] = UnlockValue;
}
}
diff --git a/Main/System/Horse/HorseCarouselView.cs b/Main/System/Horse/HorseCarouselView.cs
index ef0914e..ddb25ff 100644
--- a/Main/System/Horse/HorseCarouselView.cs
+++ b/Main/System/Horse/HorseCarouselView.cs
@@ -56,18 +56,8 @@
HorseItem item = go.GetComponent<HorseItem>();
items.Add(item);
}
- // 鍔ㄦ�佽幏鍙栨墍鏈夊潗楠戦厤缃�
- horseConfigs = HorseIDConfig.GetValues();
- // 鎸塇orseSkinConfig鐨剆ortOrder鍜孲kinID鎺掑簭
- horseConfigs = horseConfigs.OrderBy(c =>
- {
- int skinID = HorseSkinConfig.horseIDTohorseSkinIDDict.TryGetValue(c.HorseID, out var id) ? id : int.MaxValue;
- var skinConfig = HorseSkinConfig.Get(skinID);
- return skinConfig?.sortOrder ?? int.MaxValue;
- }).ThenBy(c =>
- {
- return HorseSkinConfig.horseIDTohorseSkinIDDict.TryGetValue(c.HorseID, out var skinID) ? skinID : int.MaxValue;
- }).ToList();
+ // 浣跨敤鎺掑簭缂撳瓨
+ horseConfigs = HorseManager.GetSortedHorseConfigs();
// 鑾峰彇褰撳墠楠戜箻鍧愰獞鐨勭储寮�
int currentHorseID = HorseManager.Instance.horseID;
diff --git a/Main/System/Horse/HorseManager.cs b/Main/System/Horse/HorseManager.cs
index b4b60d4..5af7aa5 100644
--- a/Main/System/Horse/HorseManager.cs
+++ b/Main/System/Horse/HorseManager.cs
@@ -39,6 +39,29 @@
public int quickRankLV;
public int defaultSkinID;
+ // 鎺掑簭鍚庣殑鍧愰獞閰嶇疆缂撳瓨
+ private static List<HorseIDConfig> sortedHorseConfigs;
+
+ /// <summary>
+ /// 鑾峰彇鎺掑簭鍚庣殑鍧愰獞閰嶇疆鍒楄〃锛堝甫缂撳瓨锛�
+ /// </summary>
+ public static List<HorseIDConfig> GetSortedHorseConfigs()
+ {
+ if (sortedHorseConfigs == null)
+ {
+ sortedHorseConfigs = HorseIDConfig.GetValues().OrderBy(c =>
+ {
+ int skinID = HorseSkinConfig.horseIDTohorseSkinIDDict.TryGetValue(c.HorseID, out var id) ? id : int.MaxValue;
+ var skinConfig = HorseSkinConfig.Get(skinID);
+ return skinConfig?.sortOrder ?? int.MaxValue;
+ }).ThenBy(c =>
+ {
+ return HorseSkinConfig.horseIDTohorseSkinIDDict.TryGetValue(c.HorseID, out var skinID) ? skinID : int.MaxValue;
+ }).ToList();
+ }
+ return sortedHorseConfigs;
+ }
+
public override void Init()
{
diff --git a/Main/System/Horse/HorseWin.cs b/Main/System/Horse/HorseWin.cs
index 134a9eb..8d5fe3a 100644
--- a/Main/System/Horse/HorseWin.cs
+++ b/Main/System/Horse/HorseWin.cs
@@ -130,18 +130,8 @@
if (carouselView != null)
{
int currentHorseID = HorseManager.Instance.horseID;
- // 鍔ㄦ�佽幏鍙栨墍鏈夊潗楠戦厤缃�
- var horseConfigs = HorseIDConfig.GetValues();
- // 鎸塇orseSkinConfig鐨剆ortOrder鍜孲kinID鎺掑簭
- horseConfigs = horseConfigs.OrderBy(c =>
- {
- int skinID = HorseSkinConfig.horseIDTohorseSkinIDDict.TryGetValue(c.HorseID, out var id) ? id : int.MaxValue;
- var skinConfig = HorseSkinConfig.Get(skinID);
- return skinConfig?.sortOrder ?? int.MaxValue;
- }).ThenBy(c =>
- {
- return HorseSkinConfig.horseIDTohorseSkinIDDict.TryGetValue(c.HorseID, out var skinID) ? skinID : int.MaxValue;
- }).ToList();
+ // 浣跨敤鎺掑簭缂撳瓨
+ var horseConfigs = HorseManager.GetSortedHorseConfigs();
int index = horseConfigs.FindIndex(c => c.HorseID == currentHorseID);
carouselView.InitWithHorse(index >= 0 ? index : 0);
--
Gitblit v1.8.0