每日自动提交 2026-04-03 18:30
This commit is contained in:
@@ -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];
|
||||
|
||||
Reference in New Issue
Block a user