每日自动提交 2026-04-03 18:30

This commit is contained in:
2026-04-03 18:32:19 +08:00
parent 57bdff08a7
commit 4ab7ca2518
477 changed files with 29057 additions and 22756 deletions
@@ -43,6 +43,102 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
private Dictionary<GameTypeEnum, Dictionary<string, RoomFishDetailConfig>> createDic;
private Dictionary<string, FishTypeConfig> fishDatas;
public Dictionary<string, MonsterContral> fishDatas_hashCodekey = new Dictionary<string, MonsterContral>();
// ================= 新增缓存字典 =================
private Dictionary<string, FishArrayConfig> fishArrayConfigDic;
private Dictionary<string, FishTypeConfig> fishTypeConfigDic;
private void BuildConfigCache()
{
// 构建 fishArrayConfigs 字典缓存
fishArrayConfigDic = GameManager.Instance.gameConfig.fishArrayConfigs
.ToDictionary(a => a.fishArrayNumber, a => a);
// 构建 fishTypeConfigs 字典缓存
fishTypeConfigDic = GameManager.Instance.gameConfig.fishTypeConfigs
.ToDictionary(f => f.fishNumber, f => f);
}
///// <summary>
///// 懒加载初始化(只执行一次)
///// </summary>
//private void EnsureInit()
//{
// if (roomFishConfig != null)
// return;
// FishYZ.Init();
// roomFishConfig = new Dictionary<GameTypeEnum, RoomFishConfig>();
// createDic = new Dictionary<GameTypeEnum, Dictionary<string, RoomFishDetailConfig>>();
// var list = GameManager.Instance.gameConfig.roomFishConfigs;
// if (list == null || list.Count == 0)
// return;
// foreach (var item in list)
// {
// GameTypeEnum gameType = (GameTypeEnum)item.gameType;
// // 安全添加(避免重复 key 抛异常)
// roomFishConfig[gameType] = item;
// // 初始化子字典
// var fishDic = new Dictionary<string, RoomFishDetailConfig>();
// createDic[gameType] = fishDic;
// // 普通鱼
// if (item.normalFishList != null)
// {
// foreach (var fish in item.normalFishList)
// fishDic[fish.fishNumber] = fish;
// }
// // 等级鱼(若与基础鱼相同素材替换基础的)
// if (item.roomFishLevelList != null)
// {
// foreach (var fish in item.roomFishLevelList)
// fishDic[fish.fishNumber] = fish;
// }
// }
//}
private void EnsureInit()
{
if (roomFishConfig != null)
return;
FishYZ.Init();
roomFishConfig = new Dictionary<GameTypeEnum, RoomFishConfig>();
createDic = new Dictionary<GameTypeEnum, Dictionary<string, RoomFishDetailConfig>>();
var list = GameManager.Instance.gameConfig.roomFishConfigs;
if (list == null || list.Count == 0)
return;
// 初始化缓存字典
BuildConfigCache();
foreach (var item in list)
{
GameTypeEnum gameType = (GameTypeEnum)item.gameType;
roomFishConfig[gameType] = item;
var fishDic = new Dictionary<string, RoomFishDetailConfig>();
createDic[gameType] = fishDic;
if (item.normalFishList != null)
{
foreach (var fish in item.normalFishList)
fishDic[fish.fishNumber] = fish;
}
if (item.roomFishLevelList != null)
{
foreach (var fish in item.roomFishLevelList)
fishDic[fish.fishNumber] = fish;
}
}
}
public Dictionary<string, FishTypeConfig> FishDatas
{
get
@@ -58,48 +154,6 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
}
}
#region 初始化鱼生成配置
/// <summary>
/// 懒加载初始化(只执行一次)
/// </summary>
private void EnsureInit()
{
if (roomFishConfig != null)
return;
FishYZ.Init();
roomFishConfig = new Dictionary<GameTypeEnum, RoomFishConfig>();
createDic = new Dictionary<GameTypeEnum, Dictionary<string, RoomFishDetailConfig>>();
var list = GameManager.Instance.gameConfig.roomFishConfigs;
if (list == null || list.Count == 0)
return;
foreach (var item in list)
{
GameTypeEnum gameType = (GameTypeEnum)item.gameType;
// 安全添加(避免重复 key 抛异常)
roomFishConfig[gameType] = item;
// 初始化子字典
var fishDic = new Dictionary<string, RoomFishDetailConfig>();
createDic[gameType] = fishDic;
// 普通鱼
if (item.normalFishList != null)
{
foreach (var fish in item.normalFishList)
fishDic[fish.fishNumber] = fish;
}
// 等级鱼(若与基础鱼相同素材替换基础的)
if (item.roomFishLevelList != null)
{
foreach (var fish in item.roomFishLevelList)
fishDic[fish.fishNumber] = fish;
}
}
}
/// <summary>
/// 房间鱼配置(按游戏类型)
@@ -172,14 +226,24 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
}
if (item.type == 2)
{
var yz = GameManager.Instance.gameConfig.fishArrayConfigs.Find(a => a.fishArrayNumber == item.fishNumber);
if (!yz_FishConfig_Line.ContainsKey(yz.arrayNumber))
//var yz = GameManager.Instance.gameConfig.fishArrayConfigs.Find(a => a.fishArrayNumber == item.fishNumber);
//if (!yz_FishConfig_Line.ContainsKey(yz.arrayNumber))
//{
// yz_FishConfig_Line[yz.arrayNumber] = new List<RoomFishDetailConfig>();
//}
//yz_FishConfig_Line[yz.arrayNumber].Add(item);
// ====== 修改点:用字典替代 List.Find ======
if (fishArrayConfigDic.TryGetValue(item.fishNumber, out var yz))
{
yz_FishConfig_Line[yz.arrayNumber] = new List<RoomFishDetailConfig>();
if (!yz_FishConfig_Line.ContainsKey(yz.arrayNumber))
{
yz_FishConfig_Line[yz.arrayNumber] = new List<RoomFishDetailConfig>();
}
yz_FishConfig_Line[yz.arrayNumber].Add(item);
}
yz_FishConfig_Line[yz.arrayNumber].Add(item);
}
}
foreach (var item in config.roomFishLevelList)
@@ -194,14 +258,24 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
var yz = GameManager.Instance.gameConfig.fishArrayConfigs.Find(a => a.fishArrayNumber == item.fishNumber);
if (!yz_FishConfig_Line.ContainsKey(yz.arrayNumber))
//var yz = GameManager.Instance.gameConfig.fishArrayConfigs.Find(a => a.fishArrayNumber == item.fishNumber);
//if (!yz_FishConfig_Line.ContainsKey(yz.arrayNumber))
//{
// yz_FishConfig_Line[yz.arrayNumber] = new List<RoomFishDetailConfig>();
//}
//yz_FishConfig_Line[yz.arrayNumber].Add(item);
// ====== 修改点:用字典替代 List.Find ======
if (fishArrayConfigDic.TryGetValue(item.fishNumber, out var yz))
{
yz_FishConfig_Line[yz.arrayNumber] = new List<RoomFishDetailConfig>();
if (!yz_FishConfig_Line.ContainsKey(yz.arrayNumber))
{
yz_FishConfig_Line[yz.arrayNumber] = new List<RoomFishDetailConfig>();
}
yz_FishConfig_Line[yz.arrayNumber].Add(item);
}
yz_FishConfig_Line[yz.arrayNumber].Add(item);
}
@@ -253,7 +327,7 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
spawnList = null;
for (int i = 0; i < fishRoot.childCount; i++)
{
Destroy( fishRoot.GetChild(i).gameObject);
Destroy(fishRoot.GetChild(i).gameObject);
}
}
#endregion
@@ -287,13 +361,13 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
float boss = 1;
//float boss = 25;
float yz_Time;
int yzCount;
float yz_Time;
int yzCount;
Dictionary<RoomFishDetailConfig, bool> isyzCreate = new Dictionary<RoomFishDetailConfig, bool>();
float pt = 3;//1-3个
int ptCount;
public static List<int> RandomUniqueNumbers(int count, int min, int max)
{
HashSet<int> result = new HashSet<int>();
@@ -327,10 +401,10 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
JobHandle handle = job.Schedule();
handle.Complete();
boss -= Time.deltaTime;
yz_Time -= Time.deltaTime;
pt -= Time.deltaTime;
float deltatime = Time.deltaTime;
boss -= deltatime;
yz_Time -= deltatime;
pt -= deltatime;
if (boss <= 0)
{
if (fishTypeConfig.ContainsKey(FishTypeEnum.Boss鱼))
@@ -374,7 +448,7 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
yz_FishConfig_LineFalse[str].Add(va);
}
}
}
yz_Time = Random.Range(1, 6);
@@ -488,21 +562,14 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
else if (cfg.type == 2)
{
//cfg.fishNumber;3
var yz = GameManager.Instance.gameConfig.fishArrayConfigs.Find(a => a.fishArrayNumber == cfg.fishNumber);
foreach (var item in GameManager.Instance.gameConfig.fishArrayConfigs)
if (fishArrayConfigDic.TryGetValue(cfg.fishNumber, out var yz))
{
if (item.arrayNumber == cfg.fishNumber)
{
Debug.Log(item);
}
}
FishTypeConfig fishType = null;
foreach (var item in M_GameConfig.fishTypeConfigs)
if (fishTypeConfigDic.TryGetValue(yz.fishNumber, out var ft))
{
if (item.fishNumber == yz.fishNumber)
{
fishType = item;
}
fishType = ft;
}
// 3. 出生点
Vector3 pos = new Vector3(
@@ -512,7 +579,7 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
int pathId = 0;
int count = 0;
count=yz.fishCount;
count = yz.fishCount;
List<int> list = new List<int>();
switch (yz.arrayNumber.Substring(0, 3))
{
@@ -520,7 +587,7 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
case "700":
list = FishYZ.dicfishYZ[yz.arrayNumber];
StartCoroutine(IeShanXing(createFishData, yz, pos, prefab, list, time,count));
StartCoroutine(IeShanXing(createFishData, yz, pos, prefab, list, time, count));
break;
case "701":
@@ -534,7 +601,7 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
foreach (var item in list)
{
StartCoroutine(YZ7007(createFishData, yz, pos, prefab, item, time,count));
StartCoroutine(YZ7007(createFishData, yz, pos, prefab, item, time, count));
}
break;
@@ -542,12 +609,12 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
list = FishYZ.dicfishYZ[yz.arrayNumber];
foreach (var item in list)
{
StartCoroutine(YZ7007(createFishData, yz, pos, prefab, item, time,count));
StartCoroutine(YZ7007(createFishData, yz, pos, prefab, item, time, count));
}
break;
case "710":
list = FishYZ.dicfishYZ[yz.arrayNumber];
StartCoroutine(YZ7007(createFishData, yz, pos, prefab, list[Random.Range(0,list.Count)], time, count));
StartCoroutine(YZ7007(createFishData, yz, pos, prefab, list[Random.Range(0, list.Count)], time, count));
break;
default:
break;
@@ -560,7 +627,7 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
}
IEnumerator IeShanXing(FrameData_CreateFish createFishData, FishArrayConfig yz, Vector3 pos, GameObject prefab, List<int> list, long time,int count)
IEnumerator IeShanXing(FrameData_CreateFish createFishData, FishArrayConfig yz, Vector3 pos, GameObject prefab, List<int> list, long time, int count)
{
RoomFishDetailConfig cfg = spawnDic[createFishData.fishNumber];
foreach (var item in list)
@@ -611,7 +678,7 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
}
//顺序出
IEnumerator YZ7007(FrameData_CreateFish createFishData, FishArrayConfig yz, Vector3 pos, GameObject prefab, int pathId, long time,int count)
IEnumerator YZ7007(FrameData_CreateFish createFishData, FishArrayConfig yz, Vector3 pos, GameObject prefab, int pathId, long time, int count)
{
RoomFishDetailConfig cfg = spawnDic[createFishData.fishNumber];
List<int> list = FishDatas[yz.fishNumber].pathList;
@@ -650,14 +717,19 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
{
RoomFishDetailConfig cfg = spawnDic[createFishData.fishNumber];
// 1. 找到鱼的基础配置
FishTypeConfig fishType = M_GameConfig.fishTypeConfigs
.Find(f => f.fishNumber == cfg.fishNumber);
if (fishType == null)
//FishTypeConfig fishType = M_GameConfig.fishTypeConfigs
// .Find(f => f.fishNumber == cfg.fishNumber);
// ====== 修改点:用字典替代 List.Find ======
if (!fishTypeConfigDic.TryGetValue(cfg.fishNumber, out var fishType))
{
Debug.LogError($"找不到鱼配置:{cfg.fishNumber}");
return false;
}
//if (fishType == null)
//{
// Debug.LogError($"找不到鱼配置:{cfg.fishNumber}");
// return false;
//}
// 2. 加载 Prefab(imageUrl 你可以换成自己的字段)
//var prefab = await Addressables.LoadAssetAsync<GameObject>(fishType.imageUrl).Task;
@@ -793,7 +865,7 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
//Destroy(monster.gameObject);
fishDatas_hashCodekey.Remove(fishId);
}
}
}
public void Ws_DieFish(string msg)
{
var killFish = JsonConvert.DeserializeObject<WebSocketResponseBase<RoomKillNotice>>(msg).arguments[0];