记录副本更新ui

This commit is contained in:
2026-02-09 10:44:38 +08:00
parent 3de1afe838
commit 5269bc7e6a
176 changed files with 615126 additions and 638503 deletions
@@ -15,18 +15,18 @@ public class MonsterContral : MonoBehaviour
public MonsterDataBase monsterData = new MonsterDataBase(new MonsterHealthBase());
public SkeletonAnimation skeleton;
public bool isSpine = true;
public Dictionary<CharacterAnimationType, string> dic_AnimKeyAnimName = new Dictionary<CharacterAnimationType, string>();
public CharacterStateType currState;
public GameObject effect_Hurt;//遮罩闪烁
public int HP = 5;
public GameObject effect_Die;//删除
GameObject hurt;
public FishTypeEnum fishType=FishTypeEnum.普通鱼;
public bool isMove = true;
//递归查找子物体
Transform FindDeepChild(Transform parent, string name)
{
foreach (Transform child in parent)
{
if (child.name == name)
@@ -37,29 +37,63 @@ public class MonsterContral : MonoBehaviour
}
return null;
}
public void Init(BezierCurveData bezierCurveData, float Time, bool isyuzhen = false)
public void Init(BezierCurveData bezierCurveData, float Time, bool isyuzhen = false, string yzID = "")
{
monsterData.moveLine.Init(bezierCurveData, 10);
monsterData.moveLine.Init(bezierCurveData, Time);
isyz = isyuzhen;
if (bezierCurveData.start.y>0)
this.yzID = yzID;
if (yzID != "")
switch (yzID.Substring(0, 3))
{
case "700":
if (bezierCurveData.start.y < 0)
{
//float z = transform.localEulerAngles.z; transform.localEulerAngles = new Vector3(0, 0, z + 180);
//transform.rotation= Quaternion.Euler(Vector3.forward*180+transform.eulerAngles);
var v = transform.localScale;
v.y *= -1;
transform.localScale = v;
}
break;
case "701":
break;
default:
break;
}
switch ((FishTypeEnum)monsterData.fishTypeConfig.fishType)
{
transform.Rotate(Vector3.forward * 180);
case FishTypeEnum.普通鱼:
Destroy(gameObject, Time);
break;
case FishTypeEnum.Boss鱼:
Destroy(gameObject, Time);
break;
case FishTypeEnum.黄金鱼:
Destroy(gameObject, Time);
break;
case FishTypeEnum.特殊鱼:
Destroy(gameObject, Time);
break;
default:
break;
}
}
private void Awake()
{
var t = FindDeepChild(transform,"HitEffect");
if (t!=null)
var t = FindDeepChild(transform, "HitEffect");
if (t != null)
{
hurt = t.gameObject;
hurt.SetActive(false);
}
}
public void OnHurt()
{
if (hurt!=null)
if (hurt != null)
{
StartCoroutine(Hurt());
}
@@ -97,18 +131,61 @@ public class MonsterContral : MonoBehaviour
}
float moveTime = 0;
public bool isyz = false;
public string yzID="";
public string yzID = "";
public virtual void OnMoveUpdata()
{
if (isyz)
{
switch (yzID)
switch (yzID.Substring(0, 3))
{
case "30001":
//向正前方移动
case "700":
moveTime += Time.deltaTime;
var movestart=monsterData.moveLine.bezierCurveData.start;
Vector2 v2 = movestart+(Vector2)(transform.up*moveTime* monsterData.moveLine.moveTime);
transform.position = v2;
//可优化
var movestart = monsterData.moveLine.bezierCurveData.start;
movestart = CoordinateTransformation.CanvasToWorld(movestart, UIManager.Instance.uiRoot.GetComponent<RectTransform>(), Camera.main);
//Debug.Log("movestart:"+movestart);
if (monsterData.moveLine.bezierCurveData.start.y > 0)
{
Vector2 v2 = movestart + (Vector2)(-1 * transform.up * moveTime * monsterData.moveLine.moveTime);
transform.position = v2;
}
else
{
Vector2 v2 = movestart + (Vector2)(transform.up * moveTime * monsterData.moveLine.moveTime);
transform.position = v2;
}
//Vector2 v2 = movestart+(Vector2)(-1*transform.up*moveTime* monsterData.moveLine.moveTime);
//transform.position = v2;
break;
case "701":
moveTime += Time.deltaTime;
//可优化
movestart = monsterData.moveLine.bezierCurveData.start;
movestart = CoordinateTransformation.CanvasToWorld(movestart, UIManager.Instance.uiRoot.GetComponent<RectTransform>(), Camera.main);
//Debug.Log("movestart:" + movestart);
{
Vector2 v2 = movestart + (Vector2)(-1 * transform.up * moveTime * monsterData.moveLine.moveTime);
transform.position = v2;
}
break;
case "702":
moveTime += Time.deltaTime;
{
Vector2 v2 = monsterData.moveLine.GetBezierPoint(moveTime);
if ( (FishTypeEnum)monsterData.fishTypeConfig.fishType != FishTypeEnum.Boss鱼)
{
transform.up = ((Vector2)transform.position - v2).normalized;
}
transform.position = v2;
}
break;
default:
break;
@@ -118,21 +195,21 @@ public class MonsterContral : MonoBehaviour
{
moveTime += Time.deltaTime;
Vector2 v2 = monsterData.moveLine.GetBezierPoint(moveTime);
if (fishType != FishTypeEnum.Boss鱼)
if ((FishTypeEnum)monsterData.fishTypeConfig.fishType != FishTypeEnum.Boss鱼)
{
transform.up = ((Vector2)transform.position - v2).normalized;
}
transform.position = v2;
}
}
public void PlayAnim(CharacterAnimationType animType, bool loop = true)
{
if (skeleton!=null)
skeleton.AnimationState.SetAnimation(0, dic_AnimKeyAnimName[animType], loop);
if (skeleton != null)
skeleton.AnimationState.SetAnimation(0, dic_AnimKeyAnimName[animType], loop);
}
public void OnEnter(CharacterStateType stateType)
{
@@ -149,6 +226,10 @@ public class MonsterContral : MonoBehaviour
}
public void OnUpdate(CharacterStateType stateType)
{
if (!isMove)
{
return;
}
switch (stateType)
{
case CharacterStateType.move:
@@ -7,7 +7,7 @@ public class MonsterDataBase : CharactersDataBase
{
public float die_Score;
public bool isDie;
public RoomFishDetailConfig roomFishDetailConfig;
public FishTypeConfig fishTypeConfig;
public MonsterMoveLine moveLine=new MonsterMoveLine();
public MonsterDataBase(MonsterHealthBase health) : base(health)
@@ -64,7 +64,7 @@ public class BullitMove : MonoBehaviour
var ABdistance = Vector3.Distance(transform.position, target.transform.position);
var rotateSpeed = 1/ABdistance;
Vector3 targetPoint = (target.transform.position-transform.position).normalized * moveSpeed*Time.deltaTime;
transform.up = Vector3.Slerp(transform.up, targetPoint, rotateSpeed);
transform.up = Vector3.Lerp(transform.up, targetPoint, rotateSpeed);
targetPoint = transform.up.normalized * moveSpeed * Time.deltaTime;
transform.position+= targetPoint;
if (ABdistance <= 2)
@@ -173,7 +173,11 @@ public class BullitMove : MonoBehaviour
//请求服务端是否杀死
var v1 = GameManager.Instance.gameData.roomJoinNotice;
var v2 = GameManager.Instance.gameData.currRoomData;
WebSocketSendList.KillFish(v2.roomId, user.userId, monster.monsterData.roomFishDetailConfig.fishNumber, monster.hashCode,GameManager.Instance.gameData.roomJoinNotice.cannonMultiple);
if (true)
{
WebSocketSendList.KillFish(v2.roomId, user.userId,monster.monsterData.fishTypeConfig.fishNumber, monster.hashCode, GameManager.Instance.gameData.roomJoinNotice.cannonMultiple);
}
//受激
@@ -3,8 +3,10 @@ using Assets.MyGame.Scripts.Net.API;
using Assets.MyGame.Scripts.Net.API.GameConfig_SubClass;
using Assets.MyGame.Scripts.Net.APIResponses.Enum;
using Assets.MyGame.Scripts.Net.WebResponses;
using cfg;
using Newtonsoft.Json;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Drawing;
using System.Threading;
@@ -57,7 +59,7 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
{
if (roomFishConfig != null)
return;
FishYZ.Init();
roomFishConfig = new Dictionary<GameTypeEnum, RoomFishConfig>();
createDic = new Dictionary<GameTypeEnum, Dictionary<string, RoomFishDetailConfig>>();
@@ -171,6 +173,7 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
}
// CreateSingleFish();
new FishResourcesData(); //这里用来测试加载鱼预制体
}
private void Update()
@@ -210,37 +213,63 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
return;
}
}
else if (cfg.type==2)
else if (cfg.type==2)
{
//cfg.fishNumber;3
var yz = GameManager.Instance.gameConfig.fishArrayConfigs.Find(a => a.arrayNumber == cfg.fishNumber);
FishTypeConfig fishType = M_GameConfig.fishTypeConfigs
.Find(f => f.fishNumber == yz.fishNumber);
var yz = GameManager.Instance.gameConfig.fishArrayConfigs.Find(a => a.fishArrayNumber == cfg.fishNumber);
foreach (var item in GameManager.Instance.gameConfig.fishArrayConfigs)
{
if (item.arrayNumber==cfg.fishNumber)
{
Debug.Log(item);
}
}
FishTypeConfig fishType = null;
foreach (var item in M_GameConfig.fishTypeConfigs)
{
if (item.fishNumber == yz.fishNumber)
{
fishType = item;
}
}
// 3. 出生点
Vector3 pos = new Vector3(
9999, 9999, 0
);
var prefab = FishResourcesData.GetFishPrefab(fishType.fishNumber);
switch (cfg.fishNumber)
int pathId = 0;
int count = 0;
List<int> list = new List<int>();
switch (yz.arrayNumber.Substring(0, 3))
{
case "30001":
for (int i = 0; i < yz.fishCount; i++)
case "700":
list = FishYZ.dicfishYZ[yz.arrayNumber];
StartCoroutine( IeShanXing(cfg, yz, pos, prefab, list));
break;
case "701":
list = FishYZ.dicfishYZ[yz.arrayNumber];
foreach (var item in list)
Quan(cfg, yz, pos, prefab, item, 10);
break;
case "702":
list = FishYZ.dicfishYZ[yz.arrayNumber];
foreach (var item in list)
{
// 4. 实例化
GameObject fish = Instantiate(prefab, pos, Quaternion.Euler(Vector3.forward* (yz.fishCount *10/2)+ Vector3.forward*i*10), fishRoot);
var v = fish.GetComponent<MonsterContral>();
v.monsterData.roomFishDetailConfig = cfg;
v.hashCode = v.gameObject.GetHashCode().ToString();
fishDatas_hashCodekey[v.hashCode] = v;
var list = FishDatas[cfg.fishNumber].pathList;
//int pathId = list[Random.Range(0, list.Count)];
int pathId = list[Random.Range(0, 5)];
v.Init(MonsterMoveLine.dic_BezierCurveDatas["鱼阵" + pathId+1], 10,true);
v.fishType = (FishTypeEnum)FishDatas[cfg.fishNumber].fishType;
StartCoroutine(YZ7007(cfg, yz, pos, prefab, item));
}
break;
case "7007":
list = FishYZ.dicfishYZ[yz.arrayNumber];
foreach (var item in list)
{
StartCoroutine(YZ7007(cfg, yz, pos, prefab, item));
}
break;
default:
@@ -254,6 +283,83 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
}
IEnumerator IeShanXing(RoomFishDetailConfig cfg, FishArrayConfig yz, Vector3 pos, GameObject prefab, List<int> list)
{
foreach (var item in list)
{
ShanXing(cfg, yz, pos, prefab, item, 10);
yield return new WaitForSeconds(0.8f);
}
}
private void ShanXing(RoomFishDetailConfig cfg, FishArrayConfig yz, Vector3 pos, GameObject prefab, int pathId,int count)
{
for (int i = 1; i <= 16; i++)
{
// 4. 实例化
GameObject fish = Instantiate(prefab, pos, Quaternion.Euler((i * 5 * (i % 2 == 0 ? -1 : 1)) * Vector3.forward), fishRoot);
var v = fish.GetComponent<MonsterContral>();
v.monsterData.fishTypeConfig = FishDatas[yz.fishNumber];
v.hashCode = v.gameObject.GetHashCode().ToString();
fishDatas_hashCodekey[v.hashCode] = v;
//int pathId = list[Random.Range(0, list.Count)];
v.Init(MonsterMoveLine.dic_BezierCurveDatas["鱼阵" + (pathId)],cfg.times, true, yz.arrayNumber);
}
}
private void Quan(RoomFishDetailConfig cfg, FishArrayConfig yz, Vector3 pos, GameObject prefab, int pathId,int count)
{
for (int i = 0; i < count; i++)
{
// 4. 实例化
GameObject fish = Instantiate(prefab, pos, Quaternion.Euler((360 / count) * i * Vector3.forward), fishRoot);
var v = fish.GetComponent<MonsterContral>();
v.monsterData.fishTypeConfig = FishDatas[yz.fishNumber];
v.hashCode = v.gameObject.GetHashCode().ToString();
fishDatas_hashCodekey[v.hashCode] = v;
//int pathId = list[Random.Range(0, list.Count)];
v.Init(MonsterMoveLine.dic_BezierCurveDatas["鱼阵" + (pathId)], cfg.times, true, yz.arrayNumber);
}
}
//顺序出
IEnumerator YZ7007(RoomFishDetailConfig cfg, FishArrayConfig yz, Vector3 pos, GameObject prefab, int pathId)
{
List<int> list = FishDatas[yz.fishNumber].pathList;
for (int i = 0; i < 8; i++)
{
yield return new WaitForSeconds(1f);
//// 4. 实例化
//GameObject fish = Instantiate(prefab, pos, Quaternion.Euler((360 / 20) * i * Vector3.forward), fishRoot);
//var v = fish.GetComponent<MonsterContral>();
//v.monsterData.roomFishDetailConfig = cfg;
//v.hashCode = v.gameObject.GetHashCode().ToString();
//fishDatas_hashCodekey[v.hashCode] = v;
////int pathId = list[Random.Range(0, list.Count)];
//v.Init(MonsterMoveLine.dic_BezierCurveDatas["鱼阵" + (pathId + 1)], 15, true, cfg.fishNumber);
//v.fishType = (FishTypeEnum)FishDatas[yz.fishNumber].fishType;
// 4. 实例化
GameObject fish = Instantiate(prefab, pos, Quaternion.identity, fishRoot);
var v = fish.GetComponent<MonsterContral>();
// 5. 初始化路径
if (v == null)
{
v = fish.AddComponent<MonsterContral>();
}
v.monsterData.fishTypeConfig = FishDatas[yz.fishNumber];
v.hashCode = v.gameObject.GetHashCode().ToString();
fishDatas_hashCodekey[v.hashCode] = v;
v.Init(MonsterMoveLine.dic_BezierCurveDatas["鱼阵" + pathId], 10);
}
}
private bool OnlyFish(RoomFishDetailConfig cfg)
{
// 1. 找到鱼的基础配置
@@ -283,13 +389,13 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
{
v = fish.AddComponent<MonsterContral>();
}
v.monsterData.roomFishDetailConfig = cfg;
v.monsterData.fishTypeConfig = FishDatas[cfg.fishNumber];
v.hashCode = v.gameObject.GetHashCode().ToString();
fishDatas_hashCodekey[v.hashCode] = v;
var list = FishDatas[cfg.fishNumber].pathList;
int pathId = list[Random.Range(0, list.Count)];
v.monsterData.moveLine.Init(MonsterMoveLine.dic_BezierCurveDatas["曲线" + pathId], 10);
v.fishType = (FishTypeEnum)FishDatas[cfg.fishNumber].fishType;
v.Init(MonsterMoveLine.dic_BezierCurveDatas["曲线" + pathId], 10);
//v.monsterData.moveLine.Init(MonsterMoveLine.dic_BezierCurveDatas["曲线" + Random.Range(1, 4).ToString()], 10);
////初始化
//GameObject obj = Instantiate(prefab, Vector3.one * 999, Quaternion.identity);
@@ -390,14 +496,27 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
public void DesFish(string msg)
{
var killFish = JsonConvert.DeserializeObject<WebSocketResponseBase<RoomKillNotice>>(msg).arguments[0];
Debug.Log("时间123:" + (DateTimeOffset.Now.ToUnixTimeSeconds() - killFish.timespan) + "秒");
if (fishDatas_hashCodekey.ContainsKey(killFish.fishId))
{
var monster = fishDatas_hashCodekey[killFish.fishId];
Instantiate(monster.effect_Die == null ? dieFXPrefab : monster.effect_Die, monster.transform.position, Quaternion.identity, transform.parent);
Destroy(monster.gameObject);
fishDatas_hashCodekey.Remove(killFish.fishId);
//GameManager.Instance.gameData.roomJoinNotice.gold += killFish.gold;
var list = UIManager.Instance.Get<GameMainPanel_XJMH>(UIPanel.MainGamePanelXJMH).list_Sits;
foreach (var item in list)
{
if (item.user!=null)
{
if (item.user.id==killFish.userId)
{
item.goldNum +=killFish.gold;
}
}
}
GameManager.Instance.gameData.roomJoinNotice.gold += killFish.gold;
}
}
+1 -1
View File
@@ -15,7 +15,7 @@ namespace Assets.MyGame.Scripts.Net
public static class APIManager
{
public static Dictionary<APIType, string> dic_API = new Dictionary<APIType, string>();
public const string baseURL = "http://524game.32.hzgqapp.com";
public const string baseURL = "http://game5241.wzaxr.top";
static string token;
static APIManager()
@@ -32,6 +32,12 @@ namespace Assets.MyGame.Scripts.Net.API.GameConfig_SubClass
/// 场内最大数量
/// </summary>
public int maxCount;
/// <summary>
/// 阵型类型编号
/// </summary>
public string arrayNumber;
public int times;
}
@@ -29,5 +29,9 @@ namespace Assets.MyGame.Scripts.Net.WebResponses
/// 鱼的唯一实例 ID
/// </summary>
public string fishId;
public int timespan;
public int killtime;
public string msg;
}
}
@@ -21,16 +21,16 @@ namespace Assets.MyGame.Scripts.Net
private readonly Dictionary<SocketType, WebSocket> sockets = new();
private readonly Dictionary<SocketType, string> socketPaths = new();
private const string baseUrl = "ws://524game.32.hzgqapp.com/";
private const string baseUrl = "ws://game5241.wzaxr.top";
protected override void Awake()
{
base.Awake();
socketPaths[SocketType.game] = "gamehub";
socketPaths[SocketType.room] = "fishingroomhub";
socketPaths[SocketType.login] = "loginhub";
socketPaths[SocketType.chess] = "chesshub";
socketPaths[SocketType.game] = "/gamehub";
socketPaths[SocketType.room] = "/fishingroomhub";
socketPaths[SocketType.login] = "/loginhub";
socketPaths[SocketType.chess] = "/chesshub";
}
/// <summary>
@@ -40,10 +40,11 @@ namespace Assets.MyGame.Scripts.Net
WebSocketReponseList.RoomInfo(msg);
break;
case "RoomKillNotice":
CreateFishManager.Instance.DesFish(msg);
WebSocketReponseList.RoomKillNotice(msg);
break;
case "SyncPlayerGold":
WebSocketReponseList.SyncPlayerGold(msg);
break;
//case "GetRoomListResult":
// break;
default:
break;
}
@@ -75,6 +75,10 @@ namespace Assets.MyGame.Scripts.Net
{
CreateFishManager.Instance.DesFish(msg);
}
public static void SyncPlayerGold(string msg)
{
UIManager.Instance.Get<GameMainPanel_XJMH>(UIPanel.MainGamePanelXJMH).currSitData.goldNum = int.Parse(msg);
}
}
}
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 59d21bb464dd9d742afb09585f23be9c
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,85 @@
using Assets.MyGame.Scripts.Net.API;
using Spine.Unity;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using TMPro;
using UnityEngine;
public class SitPosData : MonoBehaviour
{
public UserToken user;
public int posID;
public TextMeshProUGUI tMP_TurretConsumeNum;
public TextMeshProUGUI tMP_GoldNum;
public int goldNum;
public int consumeGoldNum;
public Dictionary<string, TurretData> dic_Turrets=new Dictionary<string, TurretData>();
public List<TurretData> list_Turrets=new List<TurretData>();
public int currentTurretIndex = 0;
public string currentTurretID = "";
public TurretData currentTurret;
public SkeletonGraphic skeletonAnimation;
public Transform tra_CurrTurret;
public Transform tra_CurrFly;
public GameObject changeTurretList;
public void Awake()
{
//list_Turrets.Sort((td1,td2) =>
//{
// return td1.turretID.CompareTo(td2.turretLevel);
//});
dic_Turrets = list_Turrets.ToDictionary(td => td.turretID);
}
public void Update()
{
}
public void ChangeTurret(int n=0)
{
if (currentTurretIndex>list_Turrets.Count|| currentTurretIndex<0)
{
//currentTurretIndex = currentTurretIndex;
}
else
{
currentTurretIndex = n;
}
if (currentTurret != null)
{
currentTurret.gameObject.SetActive(false);
}
currentTurretID = list_Turrets[currentTurretIndex].turretID; //dic_Turrets[currentTurretID];
currentTurret=dic_Turrets[currentTurretID];
currentTurret.gameObject.SetActive(true);
gameObject.SetActive(true);
tra_CurrTurret =currentTurret.transform.GetChild(0);
tra_CurrFly = currentTurret.transform.GetChild(1);
skeletonAnimation = tra_CurrTurret.GetChild(0).GetComponent<SkeletonGraphic>();
}
public void ChangeTurretConsumeNum(int n = 0)
{
consumeGoldNum = n;
tMP_TurretConsumeNum.text = consumeGoldNum.ToString();
}
public bool ConsumeGold(int bl=1)
{
int temp = goldNum - consumeGoldNum*bl;
if (temp > 0)
{
goldNum = temp;
tMP_GoldNum.text = goldNum.ToString();
return true;
}
return false;
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 16cfaab69e1fa404dbb8432276bd7537
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,29 @@
using Spine.Unity;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class TurretData : MonoBehaviour
{
public string turretID;
public int turretLevel;
public SitPosData setPosData;
public Button btn_AddTurretNum;
public Button btn_SubTractTurretNum;
public GameObject bulletPrefab;
public GameObject bulletPrefab_Two;
public void OnEnable()
{
foreach (var item in GetComponentsInChildren<SkeletonGraphic>())
{
if (item.gameObject.activeSelf)
{
item.AnimationState.SetAnimation(0, "out", false);
}
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 1a0bd2a3126c052438fc0291e214e0a0
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: af1aadaff0e5a824d9b7d3cc53d3e869
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,66 @@
using Newtonsoft.Json;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AddressableAssets;
[Serializable]
public class FishResourcesData
{
public int fishNumber;
public string prefabFishResourcesPath;
const string prefabFish_AAGroup="FishPrefab";
private static Dictionary<string,string> FishResourcesDatas ;
static FishResourcesData()
{
string prefabFishPath = Resources.Load<TextAsset>("tbfishresources").text;
var v = JsonConvert.DeserializeObject<List<FishResourcesData>>(prefabFishPath);
FishResourcesDatas=new Dictionary<string, string>();
foreach (var item in v)
{
if (item.prefabFishResourcesPath!=null&& item.prefabFishResourcesPath != "")
{
Debug.Log($"添加鱼资源数据: {item.fishNumber} - {item.prefabFishResourcesPath}");
FishResourcesDatas.Add(item.prefabFishResourcesPath, item.fishNumber.ToString());
}
}
LoadFishPrefabs();
}
private static Dictionary<string, GameObject> fishPrefabDic;
public static async void LoadFishPrefabs()
{
if (fishPrefabDic != null)
return;
fishPrefabDic = new Dictionary<string, GameObject>();
await Addressables.LoadAssetsAsync<GameObject>(prefabFish_AAGroup, prefab =>
{
if (FishResourcesDatas.ContainsKey(prefab.name))
{
fishPrefabDic.Add(FishResourcesDatas[prefab.name], prefab);
}
}).Task;
Debug.Log($"加载完成,共 {fishPrefabDic.Count} 个鱼Prefab");
}
public static GameObject GetFishPrefab(string fishNumber)
{
if (fishPrefabDic != null && fishPrefabDic.ContainsKey(fishNumber))
{
return fishPrefabDic[fishNumber];
}
else
{
Debug.LogError($"鱼Prefab未找到: {fishNumber}");
return null;
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: eb1a23671b68d0b468438deaca987a7e
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,56 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using UnityEngine;
namespace cfg
{
[Serializable]
public partial class FishYZ
{
/// <summary>
/// 鱼镇id
/// </summary>
public int YzNumber;
/// <summary>
/// 鱼镇路线列表
/// </summary>
public List<int> LineList;
/// <summary>
/// 鱼数量
/// </summary>
public int Count;
public static Dictionary<string, List<int>> dicfishYZ;
public static void Init()
{
}
static FishYZ()
{
string prefabFishPath = Resources.Load<TextAsset>("tbfishyz").text;
var v = JsonConvert.DeserializeObject<List<FishYZ>>(prefabFishPath);
dicfishYZ = new Dictionary<string, List<int>>();
foreach (var item in v)
{
if (item.YzNumber != null && item.YzNumber !=0)
{
dicfishYZ.Add(item.YzNumber.ToString(), item.LineList);
}
}
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ff4cd9503f959e540a9463910d41d43c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 70d32038eea4f784f9c965bac673074a
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,598 @@
[
{
"fishNumber": 11001,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11002,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11003,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11004,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11005,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11006,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11007,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11008,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11009,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11010,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11011,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11012,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11013,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11014,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11015,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11016,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11017,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11018,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11019,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11020,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11021,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11022,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11023,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11024,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11025,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11026,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11027,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11028,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11029,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11030,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11031,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11032,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11033,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11034,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11035,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11036,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11037,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11038,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11039,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 11040,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 12001,
"prefabFishResourcesPath": "PW_Enemy_2"
},
{
"fishNumber": 12002,
"prefabFishResourcesPath": "PW_Enemy_9"
},
{
"fishNumber": 12003,
"prefabFishResourcesPath": "PW_Enemy_4"
},
{
"fishNumber": 12004,
"prefabFishResourcesPath": "PW_Enemy_1"
},
{
"fishNumber": 12005,
"prefabFishResourcesPath": "PW_Enemy_6"
},
{
"fishNumber": 12006,
"prefabFishResourcesPath": "PW_Enemy_3"
},
{
"fishNumber": 12007,
"prefabFishResourcesPath": "PW_Enemy_7"
},
{
"fishNumber": 12008,
"prefabFishResourcesPath": "PW_Enemy_8"
},
{
"fishNumber": 12009,
"prefabFishResourcesPath": "PW_Spine_Plane_ZiHong_SkeletonData"
},
{
"fishNumber": 12010,
"prefabFishResourcesPath": "PW_Enemy_108"
},
{
"fishNumber": 12011,
"prefabFishResourcesPath": "PW_Enemy_101"
},
{
"fishNumber": 12012,
"prefabFishResourcesPath": "PW_Enemy_106"
},
{
"fishNumber": 12013,
"prefabFishResourcesPath": "PW_Enemy_107"
},
{
"fishNumber": 12014,
"prefabFishResourcesPath": "PW_Enemy_103"
},
{
"fishNumber": 12015,
"prefabFishResourcesPath": "PW_Enemy_105"
},
{
"fishNumber": 12016,
"prefabFishResourcesPath": "PW_Enemy_104"
},
{
"fishNumber": 12017,
"prefabFishResourcesPath": "PW_Enemy_109"
},
{
"fishNumber": 12018,
"prefabFishResourcesPath": "PW_Enemy_110"
},
{
"fishNumber": 12019,
"prefabFishResourcesPath": "PW_Enemy_111"
},
{
"fishNumber": 12020,
"prefabFishResourcesPath": "PW_Enemy_32"
},
{
"fishNumber": 12021,
"prefabFishResourcesPath": "PW_Enemy_31"
},
{
"fishNumber": 12022,
"prefabFishResourcesPath": "PW_Enemy_114"
},
{
"fishNumber": 12023,
"prefabFishResourcesPath": "PW_Enemy_113"
},
{
"fishNumber": 12024,
"prefabFishResourcesPath": "PW_Enemy_112"
},
{
"fishNumber": 12025,
"prefabFishResourcesPath": "PW_Enemy_102"
},
{
"fishNumber": 12026,
"prefabFishResourcesPath": "PW_Enemy_1000"
},
{
"fishNumber": 12027,
"prefabFishResourcesPath": "PW_Spine_Plane_JXL_SkeletonData"
},
{
"fishNumber": 12028,
"prefabFishResourcesPath": "PW_Spine_Plane_XZ_SkeletonData"
},
{
"fishNumber": 12029,
"prefabFishResourcesPath": "PW_Enemy_4000"
},
{
"fishNumber": 12030,
"prefabFishResourcesPath": "PW_Spine_Plane_PHQ_SkeletonData"
},
{
"fishNumber": 12031,
"prefabFishResourcesPath": "PW_Enemy_6000"
},
{
"fishNumber": 12032,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 12033,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 12034,
"prefabFishResourcesPath": "PW_Enemy_115"
},
{
"fishNumber": 13001,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13002,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13003,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13004,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13005,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13006,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13007,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13008,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13009,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13010,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13011,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13012,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13013,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13014,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13015,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13016,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13017,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13018,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13019,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13020,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13021,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13022,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13023,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13024,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13025,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13026,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13027,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13028,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13029,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13030,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13031,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13032,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13033,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13034,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13035,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13036,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13037,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13038,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 13039,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15001,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15002,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15003,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15004,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15005,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15006,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15007,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15008,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15009,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15010,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15011,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15012,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15013,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15014,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15015,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15016,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15017,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15018,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15019,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15020,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15021,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15022,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15023,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15024,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15025,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15026,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15027,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15028,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15029,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15030,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15031,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15032,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15033,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15034,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15035,
"prefabFishResourcesPath": ""
},
{
"fishNumber": 15036,
"prefabFishResourcesPath": ""
}
]
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 86d459f2d16820a4da1e4fe4c1cd147f
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,224 @@
[
{
"yzNumber": 70001,
"lineList": [
1
],
"count": 16
},
{
"yzNumber": 70002,
"lineList": [
2
],
"count": 10
},
{
"yzNumber": 70101,
"lineList": [
3
],
"count": 20
},
{
"yzNumber": 70102,
"lineList": [
4
],
"count": 20
},
{
"yzNumber": 70103,
"lineList": [
5
],
"count": 20
},
{
"yzNumber": 70104,
"lineList": [
3,
4,
5
],
"count": 10
},
{
"yzNumber": 70201,
"lineList": [
6
],
"count": 8
},
{
"yzNumber": 70202,
"lineList": [
7
],
"count": 8
},
{
"yzNumber": 70203,
"lineList": [
8
],
"count": 10
},
{
"yzNumber": 70204,
"lineList": [
9
],
"count": 10
},
{
"yzNumber": 70205,
"lineList": [
10
],
"count": 5
},
{
"yzNumber": 70206,
"lineList": [
11
],
"count": 5
},
{
"yzNumber": 70207,
"lineList": [
12
],
"count": 7
},
{
"yzNumber": 70208,
"lineList": [
13
],
"count": 9
},
{
"yzNumber": 70209,
"lineList": [
14
],
"count": 8
},
{
"yzNumber": 70210,
"lineList": [
15
],
"count": 6
},
{
"yzNumber": 70211,
"lineList": [
16
],
"count": 5
},
{
"yzNumber": 70212,
"lineList": [
17
],
"count": 8
},
{
"yzNumber": 70213,
"lineList": [
18
],
"count": 6
},
{
"yzNumber": 70214,
"lineList": [
19
],
"count": 20
},
{
"yzNumber": 70215,
"lineList": [
20
],
"count": 8
},
{
"yzNumber": 70216,
"lineList": [
21
],
"count": 20
},
{
"yzNumber": 70217,
"lineList": [
22
],
"count": 20
},
{
"yzNumber": 70218,
"lineList": [
23
],
"count": 9
},
{
"yzNumber": 70219,
"lineList": [
24
],
"count": 8
},
{
"yzNumber": 70220,
"lineList": [
25
],
"count": 12
},
{
"yzNumber": 70221,
"lineList": [
26
],
"count": 8
},
{
"yzNumber": 70222,
"lineList": [
27
],
"count": 6
},
{
"yzNumber": 70223,
"lineList": [
6,
7
],
"count": 15
},
{
"yzNumber": 70224,
"lineList": [
10,
11
],
"count": 8
},
{
"yzNumber": 70225,
"lineList": [
21,
22
],
"count": 20
}
]
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 55fd8cf24b731614f82a74cafa2c814b
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant: