1
This commit is contained in:
@@ -1483,9 +1483,12 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
|
||||
string fishId = killFish.fishId; // 如果需要的话
|
||||
Action<int> onScoreAdd = (audioID) =>
|
||||
{
|
||||
long oldGold = sitData.goldNum; // 记录加金币前的值
|
||||
sitData.goldNum += goldToAdd; // 使用副本,不再依赖 killFish 对象
|
||||
sitData.tMP_GoldNum.text = sitData.goldNum.ToString();
|
||||
AudioManager.Instance.PlayerFX(audioID);
|
||||
// ⭐ 记录金币流水:杀鱼获得金币
|
||||
GameManager.LogGoldFlow("KillFish", $"击中鱼原有金币={oldGold} 增加金币=+{goldToAdd} 剩余金币={sitData.goldNum} 鱼ID={fishId} 座位={sitData.posID} 房间={GameManager.Instance.gameData?.roomInfo?.roomId}");
|
||||
};
|
||||
//// 加分回调(在金币/加分面板飞完后执行)
|
||||
//Action<int> onScoreAdd = (audioID) =>
|
||||
|
||||
@@ -256,6 +256,9 @@ public class GameManager : MonoSingleton<GameManager>
|
||||
_logFileWriter = new StreamWriter(logPath, true) { AutoFlush = true };
|
||||
Application.logMessageReceived += OnLogMessageReceived;
|
||||
Debug.Log($"[GameManager] 日志文件已创建: {logPath}");
|
||||
|
||||
// 同时初始化金币流水日志文件
|
||||
InitGoldFlowWriter(logDir);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
@@ -263,6 +266,43 @@ public class GameManager : MonoSingleton<GameManager>
|
||||
}
|
||||
}
|
||||
|
||||
// ⭐ 金币流水日志写入器:单独写入"金币流水"文件,格式对齐后端日志
|
||||
private StreamWriter _goldFlowWriter;
|
||||
private void InitGoldFlowWriter(string logDir)
|
||||
{
|
||||
try
|
||||
{
|
||||
string goldLogPath = Path.Combine(logDir, "金币流水_" + DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss") + ".log");
|
||||
_goldFlowWriter = new StreamWriter(goldLogPath, true) { AutoFlush = true };
|
||||
_goldFlowWriter.WriteLine($"# 金币流水日志 - 启动于 {DateTime.Now:yyyy-MM-dd HH:mm:ss}");
|
||||
_goldFlowWriter.WriteLine($"# 格式: 时间|service=client|INFO|GoldFlow|[金币流水] 玩家=名称(ID) 事件=xxx {描述}");
|
||||
_goldFlowWriter.WriteLine(new string('-', 80));
|
||||
Debug.Log($"[GameManager] 金币流水日志文件已创建: {goldLogPath}");
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Debug.LogError($"[GameManager] 初始化金币流水日志失败: {e.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 记录金币流水(供全项目调用)
|
||||
/// 用法: GameManager.LogGoldFlow("KillFish", $"击中鱼原有金币={oldGold} 增加金币=+{addGold} 剩余金币={newGold} 房间={roomId}");
|
||||
/// </summary>
|
||||
public static void LogGoldFlow(string eventName, string description)
|
||||
{
|
||||
var inst = Instance;
|
||||
if (inst == null || inst._goldFlowWriter == null) return;
|
||||
try
|
||||
{
|
||||
string userName = inst.user?.BaseInfo?.userName ?? "未知";
|
||||
string userId = inst.user?.id ?? "未知";
|
||||
string timeStr = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
|
||||
inst._goldFlowWriter.WriteLine($"{timeStr}|service=client|INFO|GoldFlow|[金币流水] 玩家={userName}({userId}) 事件={eventName} {description}");
|
||||
}
|
||||
catch { /* 写日志失败不影响游戏运行 */ }
|
||||
}
|
||||
|
||||
private void OnLogMessageReceived(string condition, string stackTrace, LogType type)
|
||||
{
|
||||
if (_logFileWriter == null) return;
|
||||
@@ -294,6 +334,11 @@ public class GameManager : MonoSingleton<GameManager>
|
||||
try { _logFileWriter.Flush(); _logFileWriter.Close(); } catch { }
|
||||
_logFileWriter = null;
|
||||
}
|
||||
if (_goldFlowWriter != null)
|
||||
{
|
||||
try { _goldFlowWriter.Flush(); _goldFlowWriter.Close(); } catch { }
|
||||
_goldFlowWriter = null;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task InItLoad()
|
||||
|
||||
@@ -21,9 +21,9 @@ namespace Assets.MyGame.Scripts.Net
|
||||
public const string baseURL = "http://47.109.132.12";
|
||||
|
||||
#else
|
||||
public const string baseURL = "http://47.109.132.12";
|
||||
//public const string baseURL = "http://47.109.132.12";
|
||||
|
||||
//public const string baseURL = "http://47.109.34.50";
|
||||
public const string baseURL = "http://47.109.34.50";
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -36,9 +36,9 @@ namespace Assets.MyGame.Scripts.Net
|
||||
private const string baseUrl = "ws://47.109.132.12";
|
||||
|
||||
#else
|
||||
private const string baseUrl = "ws://47.109.132.12";
|
||||
//private const string baseUrl = "ws://47.109.132.12";
|
||||
|
||||
//private const string baseUrl = "ws://47.109.34.50";
|
||||
private const string baseUrl = "ws://47.109.34.50";
|
||||
|
||||
#endif
|
||||
public bool isGame = false;
|
||||
|
||||
@@ -57,6 +57,14 @@ namespace Assets.MyGame.Scripts.Net
|
||||
/// <param name="msg"></param>
|
||||
public static void RoomJoinNotice(string msg)
|
||||
{
|
||||
// ⭐ 记录金币流水:收到 RoomJoinNotice 推送
|
||||
try
|
||||
{
|
||||
var notice = JsonConvert.DeserializeObject<WebSocketResponseBase<RoomJoinNotice>>(msg).arguments[0];
|
||||
GameManager.LogGoldFlow("RoomJoinNotice", $"推送金币={notice.gold} 钻石={notice.diamond} 炮台消耗={notice.cannonMultiple} 座位={notice.position}");
|
||||
}
|
||||
catch { }
|
||||
|
||||
string sceneName = "";
|
||||
UIPanel uIPanel = UIPanel.None;
|
||||
switch (GameManager.Instance.gameData.currGameType)
|
||||
@@ -217,14 +225,25 @@ namespace Assets.MyGame.Scripts.Net
|
||||
{
|
||||
var panel = UIManager.Instance.Get<GameMainPanel_FishBase>(panelType);
|
||||
if (panel == null || panel.currSitData == null) return;
|
||||
long oldGold = panel.currSitData.goldNum;
|
||||
panel.currSitData.goldNum = gold;
|
||||
if (panel.currSitData.tMP_GoldNum != null)
|
||||
panel.currSitData.tMP_GoldNum.text = gold.ToString();
|
||||
// ⭐ 记录金币流水:后端推送 SyncPlayerGold 修正
|
||||
GameManager.LogGoldFlow("SyncPlayerGold", $"推送金币={gold} 修正前金币={oldGold} 差值={gold - oldGold} 座位={panel.currSitData.posID}");
|
||||
}
|
||||
public static void GetRoomInfoResult(string msg)
|
||||
{
|
||||
//GameManager.Instance.StartGame();RoomChangeResponse
|
||||
var roomData = JsonConvert.DeserializeObject<WebSocketResponseBase<RoomChangeResponse>>(msg).arguments[0];
|
||||
// ⭐ 记录金币流水:收到 RoomInfo 推送
|
||||
if (roomData?.players != null)
|
||||
{
|
||||
foreach (var p in roomData.players)
|
||||
{
|
||||
GameManager.LogGoldFlow("RoomInfo", $"推送金币={p.gold} 钻石={p.diamond} 炮台消耗={p.cannonMultiple} 座位={p.position} 房间={roomData.roomId}");
|
||||
}
|
||||
}
|
||||
UIHome_BY_SelectRoomLevelPanel.StartGame(roomData);
|
||||
}
|
||||
public static void SyncGameDataResult(string msg)
|
||||
@@ -500,6 +519,8 @@ namespace Assets.MyGame.Scripts.Net
|
||||
{
|
||||
// 标记游戏已结束
|
||||
WebSocketManager.Instance.isGame = false;
|
||||
// ⭐ 记录金币流水:退出房间
|
||||
GameManager.LogGoldFlow("ExitRoom", $"退出房间 房间={GameManager.Instance.gameData?.currRoomData?.roomId}");
|
||||
// 关闭游戏连接
|
||||
WebSocketManager.Instance.Close(SocketType.game);
|
||||
// 拉取最新用户数据,触发 UI 同步更新(金币/钻石/等级/VIP等)
|
||||
|
||||
@@ -598,8 +598,11 @@ public class SitPosData : MonoBehaviour
|
||||
{
|
||||
long temp = goldNum - consumeGoldNum * mul;
|
||||
if (temp < 0) return false;
|
||||
long oldGold = goldNum;
|
||||
goldNum = temp;
|
||||
tMP_GoldNum.text = goldNum.ToString();
|
||||
// ⭐ 记录金币流水:开火消耗金币
|
||||
GameManager.LogGoldFlow("Fire", $"开火消耗 原有金币={oldGold} 消耗金币=-{consumeGoldNum * mul} 剩余金币={goldNum} 座位={posID} 房间={GameManager.Instance.gameData?.roomInfo?.roomId}");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ public class BaoJiangTSSmallFish : MonoBehaviour
|
||||
|
||||
private Dictionary<Transform, Vector3> originalPositions = new Dictionary<Transform, Vector3>();
|
||||
private Dictionary<Transform, Vector3> originalScales = new Dictionary<Transform, Vector3>();
|
||||
public Action<int> JiaFen;
|
||||
public Action JiaFen;
|
||||
private void Start()
|
||||
{
|
||||
// 保存所有特效的原始位置和缩放
|
||||
@@ -221,7 +221,7 @@ public class BaoJiangTSSmallFish : MonoBehaviour
|
||||
|
||||
// 销毁GameObject
|
||||
//Destroy(target.gameObject);
|
||||
JiaFen?.Invoke(0);
|
||||
JiaFen?.Invoke();
|
||||
Destroy(gameObject);
|
||||
|
||||
}
|
||||
|
||||
@@ -3,11 +3,10 @@ using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class DieEffect_TSY : BJBase
|
||||
public class DieEffect_TSY : BJEventBase
|
||||
{
|
||||
public int radius;
|
||||
public int count;
|
||||
public int paoBei;
|
||||
public float time = 0.5f;
|
||||
|
||||
[Header("爆奖特效")]
|
||||
@@ -23,7 +22,7 @@ public class DieEffect_TSY : BJBase
|
||||
paoBei = (int)CreateFishManager.Instance.currGameType.currSitData.consumeGoldNum;
|
||||
}
|
||||
|
||||
public override void SetCoinCount()
|
||||
public void SetCoinCount()
|
||||
{
|
||||
StartCoroutine(enumerator());
|
||||
}
|
||||
@@ -73,7 +72,7 @@ public class DieEffect_TSY : BJBase
|
||||
if (baoJiang != null)
|
||||
{
|
||||
// 计算总奖金
|
||||
long totalReward = coinCount; // 可以根据需要修改
|
||||
long totalReward = count; // 可以根据需要修改
|
||||
|
||||
// 根据枚举类型调用不同的方法
|
||||
if (effectType == TSBJ.转盘)
|
||||
|
||||
@@ -6,195 +6,195 @@ using UnityEngine;
|
||||
|
||||
public class EffectZuanTouDie : DieEffect_TSY
|
||||
{
|
||||
public float moveSpeed = 5;
|
||||
public float desTime = 10f;
|
||||
Vector3 vector3_startPosition;
|
||||
public bool isTriggerFirst = true;
|
||||
MonsterContral target;
|
||||
public string bulletID;
|
||||
// Start is called before the first frame update
|
||||
void Awake()
|
||||
{
|
||||
Init();
|
||||
//Destroy(gameObject, desTime);
|
||||
}
|
||||
/// <summary>
|
||||
/// 对象池用
|
||||
/// </summary>
|
||||
public void Init()
|
||||
{
|
||||
vector3_startPosition = transform.position;
|
||||
}
|
||||
//子弹同步分为两种一种是锁定目标一种是不锁定目标
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
if (!ismove)
|
||||
{
|
||||
return;
|
||||
}
|
||||
//方便帧同步
|
||||
//currShowTime += Time.deltaTime;
|
||||
Vector3 targetPoint = transform.up.normalized * moveSpeed * Time.deltaTime;
|
||||
transform.position +=targetPoint;
|
||||
//public float moveSpeed = 5;
|
||||
//public float desTime = 10f;
|
||||
//Vector3 vector3_startPosition;
|
||||
//public bool isTriggerFirst = true;
|
||||
//MonsterContral target;
|
||||
//public string bulletID;
|
||||
//// Start is called before the first frame update
|
||||
//void Awake()
|
||||
//{
|
||||
// Init();
|
||||
// //Destroy(gameObject, desTime);
|
||||
//}
|
||||
///// <summary>
|
||||
///// 对象池用
|
||||
///// </summary>
|
||||
//public void Init()
|
||||
//{
|
||||
// vector3_startPosition = transform.position;
|
||||
//}
|
||||
////子弹同步分为两种一种是锁定目标一种是不锁定目标
|
||||
//// Update is called once per frame
|
||||
//void Update()
|
||||
//{
|
||||
// if (!ismove)
|
||||
// {
|
||||
// return;
|
||||
// }
|
||||
// //方便帧同步
|
||||
// //currShowTime += Time.deltaTime;
|
||||
// Vector3 targetPoint = transform.up.normalized * moveSpeed * Time.deltaTime;
|
||||
// transform.position +=targetPoint;
|
||||
|
||||
|
||||
|
||||
}
|
||||
public static Quaternion RotationFromVector2(Vector2 dir)
|
||||
{
|
||||
float angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg;
|
||||
return Quaternion.Euler(0, 0, angle);
|
||||
}
|
||||
// 计算反射角度
|
||||
Vector2 GetReflectionAngle(Vector2 velocity, Vector2 normal)
|
||||
{
|
||||
// 反射向量
|
||||
return Vector2.Reflect(velocity.normalized, normal.normalized);
|
||||
//}
|
||||
//public static Quaternion RotationFromVector2(Vector2 dir)
|
||||
//{
|
||||
// float angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg;
|
||||
// return Quaternion.Euler(0, 0, angle);
|
||||
//}
|
||||
//// 计算反射角度
|
||||
//Vector2 GetReflectionAngle(Vector2 velocity, Vector2 normal)
|
||||
//{
|
||||
// // 反射向量
|
||||
// return Vector2.Reflect(velocity.normalized, normal.normalized);
|
||||
|
||||
}
|
||||
public int peng = 7;
|
||||
public void OnTriggerEnter2D(Collider2D collision)
|
||||
{
|
||||
//}
|
||||
//public int peng = 7;
|
||||
//public void OnTriggerEnter2D(Collider2D collision)
|
||||
//{
|
||||
|
||||
if (collision.tag == "Fish")
|
||||
{
|
||||
// if (collision.tag == "Fish")
|
||||
// {
|
||||
|
||||
isTriggerFirst = false;
|
||||
var monster = collision.transform.GetComponentInParent<MonsterContral>();
|
||||
if (peng<=0)
|
||||
{
|
||||
StartCoroutine(enumerator());
|
||||
}
|
||||
if (monster.fishenum == FishTypeEnum.普通鱼)
|
||||
{
|
||||
CreateFishManager.Instance.Id_DieFish_FX(monster.guid, new RedPacketRecord { Amount = paoBei * monster.monsterData.fishTypeConfig.fishScore }, CreateFishManager.Instance.currGameType.currSitData.transform.position, isLocal: isLocalCoin);
|
||||
}
|
||||
// isTriggerFirst = false;
|
||||
// var monster = collision.transform.GetComponentInParent<MonsterContral>();
|
||||
// if (peng<=0)
|
||||
// {
|
||||
// StartCoroutine(enumerator());
|
||||
// }
|
||||
// if (monster.fishenum == FishTypeEnum.普通鱼)
|
||||
// {
|
||||
// CreateFishManager.Instance.Id_DieFish_FX(monster.guid, new RedPacketRecord { Amount = paoBei * monster.monsterData.fishTypeConfig.fishScore }, CreateFishManager.Instance.currGameType.currSitData.transform.position, isLocal: isLocalCoin);
|
||||
// }
|
||||
|
||||
}
|
||||
else if (collision.tag == "Wall")
|
||||
{
|
||||
Vector3 v3 = transform.eulerAngles;
|
||||
peng--;
|
||||
switch (collision.name)
|
||||
{
|
||||
case "up":
|
||||
v3.z = -v3.z + 180;
|
||||
break;
|
||||
case "down":
|
||||
v3.z = -v3.z + 180;
|
||||
break;
|
||||
case "left":
|
||||
v3.z = -v3.z;
|
||||
break;
|
||||
case "right":
|
||||
v3.z = -v3.z;
|
||||
break;
|
||||
default:
|
||||
// }
|
||||
// else if (collision.tag == "Wall")
|
||||
// {
|
||||
// Vector3 v3 = transform.eulerAngles;
|
||||
// peng--;
|
||||
// switch (collision.name)
|
||||
// {
|
||||
// case "up":
|
||||
// v3.z = -v3.z + 180;
|
||||
// break;
|
||||
// case "down":
|
||||
// v3.z = -v3.z + 180;
|
||||
// break;
|
||||
// case "left":
|
||||
// v3.z = -v3.z;
|
||||
// break;
|
||||
// case "right":
|
||||
// v3.z = -v3.z;
|
||||
// break;
|
||||
// default:
|
||||
|
||||
break;
|
||||
}
|
||||
// break;
|
||||
// }
|
||||
|
||||
transform.eulerAngles = v3;
|
||||
// transform.eulerAngles = v3;
|
||||
|
||||
|
||||
}
|
||||
// }
|
||||
|
||||
|
||||
}
|
||||
//}
|
||||
|
||||
|
||||
|
||||
|
||||
private void Start()
|
||||
{
|
||||
paoBei = (int)CreateFishManager.Instance.currGameType.currSitData.consumeGoldNum;
|
||||
}
|
||||
//private void Start()
|
||||
//{
|
||||
// paoBei = (int)CreateFishManager.Instance.currGameType.currSitData.consumeGoldNum;
|
||||
//}
|
||||
|
||||
public override void SetCoinCount()
|
||||
{
|
||||
transform.position =CreateFishManager.Instance.currGameType.currSitData.GetBulletStartPos();
|
||||
transform.eulerAngles =Vector3.forward* CreateFishManager.Instance.currGameType.currSitData.currentAngle;
|
||||
//public void SetCoinCount()
|
||||
//{
|
||||
// transform.position =CreateFishManager.Instance.currGameType.currSitData.GetBulletStartPos();
|
||||
// transform.eulerAngles =Vector3.forward* CreateFishManager.Instance.currGameType.currSitData.currentAngle;
|
||||
|
||||
//StartCoroutine(enumerator());
|
||||
}
|
||||
public GameObject BZ;
|
||||
bool ismove = true;
|
||||
public override IEnumerator enumerator()
|
||||
{
|
||||
ismove = false;
|
||||
CreateBaoJiangEffect();
|
||||
// //StartCoroutine(enumerator());
|
||||
//}
|
||||
//public GameObject BZ;
|
||||
//bool ismove = true;
|
||||
//public override IEnumerator enumerator()
|
||||
//{
|
||||
// ismove = false;
|
||||
// CreateBaoJiangEffect();
|
||||
|
||||
foreach (Transform item in transform)
|
||||
{
|
||||
item.gameObject.SetActive(false);
|
||||
}
|
||||
// 在销毁前创建爆奖特效
|
||||
BZ.SetActive(true);
|
||||
yield return new WaitForSeconds(time);
|
||||
// foreach (Transform item in transform)
|
||||
// {
|
||||
// item.gameObject.SetActive(false);
|
||||
// }
|
||||
// // 在销毁前创建爆奖特效
|
||||
// BZ.SetActive(true);
|
||||
// yield return new WaitForSeconds(time);
|
||||
|
||||
|
||||
Destroy(gameObject);
|
||||
}
|
||||
// Destroy(gameObject);
|
||||
//}
|
||||
|
||||
public void BZOnTriggerEnter2D(Collider2D collision)
|
||||
{
|
||||
if (collision.tag == "Fish")
|
||||
{
|
||||
var control = collision.transform.GetComponentInParent<MonsterContral>();
|
||||
if (control.fishenum == FishTypeEnum.普通鱼)
|
||||
{
|
||||
CreateFishManager.Instance.Id_DieFish_FX(control.guid, new RedPacketRecord { Amount = paoBei * control.monsterData.fishTypeConfig.fishScore }, CreateFishManager.Instance.currGameType.currSitData.transform.position, isLocal: isLocalCoin);
|
||||
}
|
||||
}
|
||||
}
|
||||
//public void BZOnTriggerEnter2D(Collider2D collision)
|
||||
//{
|
||||
// if (collision.tag == "Fish")
|
||||
// {
|
||||
// var control = collision.transform.GetComponentInParent<MonsterContral>();
|
||||
// if (control.fishenum == FishTypeEnum.普通鱼)
|
||||
// {
|
||||
// CreateFishManager.Instance.Id_DieFish_FX(control.guid, new RedPacketRecord { Amount = paoBei * control.monsterData.fishTypeConfig.fishScore }, CreateFishManager.Instance.currGameType.currSitData.transform.position, isLocal: isLocalCoin);
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
private void CreateBaoJiangEffect()
|
||||
{
|
||||
if (baoJiangEffectPrefab == null)
|
||||
{
|
||||
Debug.LogWarning("爆奖特效预制体未设置!");
|
||||
return;
|
||||
}
|
||||
//private void CreateBaoJiangEffect()
|
||||
//{
|
||||
// if (baoJiangEffectPrefab == null)
|
||||
// {
|
||||
// Debug.LogWarning("爆奖特效预制体未设置!");
|
||||
// return;
|
||||
// }
|
||||
|
||||
// 确定父对象:优先用 Inspector 指定的 parentTransform → 否则用统一爆奖父节点 bjEffectRoot
|
||||
Transform parent = parentTransform != null ? parentTransform : CreateFishManager.Instance.bjEffectRoot;
|
||||
// // 确定父对象:优先用 Inspector 指定的 parentTransform → 否则用统一爆奖父节点 bjEffectRoot
|
||||
// Transform parent = parentTransform != null ? parentTransform : CreateFishManager.Instance.bjEffectRoot;
|
||||
|
||||
// 获取源对象的世界坐标
|
||||
Vector3 sourcePosition = CreateFishManager.Instance.currGameType.currSitData.transform.position;
|
||||
// // 获取源对象的世界坐标
|
||||
// Vector3 sourcePosition = CreateFishManager.Instance.currGameType.currSitData.transform.position;
|
||||
|
||||
// 计算生成位置(世界坐标 + 偏移量)
|
||||
Vector3 spawnPosition = sourcePosition + offsetPosition;
|
||||
// // 计算生成位置(世界坐标 + 偏移量)
|
||||
// Vector3 spawnPosition = sourcePosition + offsetPosition;
|
||||
|
||||
// 实例化爆奖特效,设置父对象
|
||||
GameObject effectObj = Instantiate(baoJiangEffectPrefab, parent);
|
||||
// // 实例化爆奖特效,设置父对象
|
||||
// GameObject effectObj = Instantiate(baoJiangEffectPrefab, parent);
|
||||
|
||||
// 设置位置(世界坐标)
|
||||
effectObj.transform.position = spawnPosition;
|
||||
// // 设置位置(世界坐标)
|
||||
// effectObj.transform.position = spawnPosition;
|
||||
|
||||
// 重置缩放(避免父对象缩放影响)
|
||||
effectObj.transform.localScale = Vector3.one;
|
||||
// // 重置缩放(避免父对象缩放影响)
|
||||
// effectObj.transform.localScale = Vector3.one;
|
||||
|
||||
// 获取BaoJiangTSSmallFish组件
|
||||
BaoJiangTSSmallFish baoJiang = effectObj.GetComponent<BaoJiangTSSmallFish>();
|
||||
baoJiang.JiaFen = JiaFen;
|
||||
// // 获取BaoJiangTSSmallFish组件
|
||||
// BaoJiangTSSmallFish baoJiang = effectObj.GetComponent<BaoJiangTSSmallFish>();
|
||||
// baoJiang.JiaFen = JiaFen;
|
||||
|
||||
if (baoJiang != null)
|
||||
{
|
||||
// 计算总奖金
|
||||
long totalReward = coinCount; // 可以根据需要修改
|
||||
// if (baoJiang != null)
|
||||
// {
|
||||
// // 计算总奖金
|
||||
// long totalReward = coinCount; // 可以根据需要修改
|
||||
|
||||
// 根据枚举类型调用不同的方法
|
||||
if (effectType == TSBJ.转盘)
|
||||
{
|
||||
// 调用转盘特效(不带图片)
|
||||
baoJiang.ZP(totalReward, true, null, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
// 调用爆奖特效
|
||||
baoJiang.BJ(totalReward, effectType, true, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
// // 根据枚举类型调用不同的方法
|
||||
// if (effectType == TSBJ.转盘)
|
||||
// {
|
||||
// // 调用转盘特效(不带图片)
|
||||
// baoJiang.ZP(totalReward, true, null, true);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// // 调用爆奖特效
|
||||
// baoJiang.BJ(totalReward, effectType, true, true);
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
}
|
||||
@@ -26,7 +26,7 @@ public class HHWK_ZDX_DieEvent : DieEffect_TSY
|
||||
if (fishLayer == 0) fishLayer = LayerMask.GetMask("Fish");
|
||||
}
|
||||
|
||||
public override void SetCoinCount()
|
||||
public void SetCoinCount()
|
||||
{
|
||||
StartCoroutine(BombRoutine());
|
||||
}
|
||||
|
||||
@@ -0,0 +1,120 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1001 &5411344393109950423
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_Modifications:
|
||||
- target: {fileID: 236781439713602893, guid: a96966a1d55149a4f83724f224013303,
|
||||
type: 3}
|
||||
propertyPath: m_Name
|
||||
value: UI_baojiang Variant
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 685976588209175045, guid: a96966a1d55149a4f83724f224013303,
|
||||
type: 3}
|
||||
propertyPath: m_Pivot.x
|
||||
value: 0.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 685976588209175045, guid: a96966a1d55149a4f83724f224013303,
|
||||
type: 3}
|
||||
propertyPath: m_Pivot.y
|
||||
value: 0.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 685976588209175045, guid: a96966a1d55149a4f83724f224013303,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMax.x
|
||||
value: 0.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 685976588209175045, guid: a96966a1d55149a4f83724f224013303,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 0.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 685976588209175045, guid: a96966a1d55149a4f83724f224013303,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMin.x
|
||||
value: 0.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 685976588209175045, guid: a96966a1d55149a4f83724f224013303,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 0.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 685976588209175045, guid: a96966a1d55149a4f83724f224013303,
|
||||
type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 266.4422
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 685976588209175045, guid: a96966a1d55149a4f83724f224013303,
|
||||
type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 128.3306
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 685976588209175045, guid: a96966a1d55149a4f83724f224013303,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 685976588209175045, guid: a96966a1d55149a4f83724f224013303,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 685976588209175045, guid: a96966a1d55149a4f83724f224013303,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 685976588209175045, guid: a96966a1d55149a4f83724f224013303,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 685976588209175045, guid: a96966a1d55149a4f83724f224013303,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 685976588209175045, guid: a96966a1d55149a4f83724f224013303,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 685976588209175045, guid: a96966a1d55149a4f83724f224013303,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 685976588209175045, guid: a96966a1d55149a4f83724f224013303,
|
||||
type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: -365.77893
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 685976588209175045, guid: a96966a1d55149a4f83724f224013303,
|
||||
type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -143.83472
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 685976588209175045, guid: a96966a1d55149a4f83724f224013303,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 685976588209175045, guid: a96966a1d55149a4f83724f224013303,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 685976588209175045, guid: a96966a1d55149a4f83724f224013303,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: a96966a1d55149a4f83724f224013303, type: 3}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9ee39999eb28a2a46a9852d14689ac34
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -958,16 +958,28 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier:
|
||||
beilv: 0
|
||||
guid:
|
||||
lastMoveLineId:
|
||||
monsterData:
|
||||
die_Score: 0
|
||||
isDie: 0
|
||||
fishTypeConfig:
|
||||
fishNumber:
|
||||
fishName:
|
||||
fishBrief:
|
||||
fishType: 0
|
||||
fishScore: 0
|
||||
killWeight: 0
|
||||
pathList:
|
||||
fishImage:
|
||||
fishMultipleDesc:
|
||||
moveLine:
|
||||
bezierCurveData:
|
||||
name:
|
||||
start: {x: 0, y: 0}
|
||||
controlPoints: []
|
||||
end: {x: 0, y: 0}
|
||||
moveTime: 0
|
||||
moveSpeed: 0
|
||||
skeleton: {fileID: 0}
|
||||
isSpine: 1
|
||||
fishTypeID: 13026
|
||||
@@ -987,7 +999,9 @@ MonoBehaviour:
|
||||
colliderList: []
|
||||
lockPoint: {fileID: 0}
|
||||
bingDongEffect: {fileID: 0}
|
||||
createVideoClip: {fileID: 0}
|
||||
rotationPY: 60
|
||||
baseMmove: 0
|
||||
isRotate: 1
|
||||
isNot1: 0
|
||||
ischild0: 1
|
||||
|
||||
@@ -2388,6 +2388,9 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
|
||||
sit.user = user ?? GameManager.Instance.user.id;
|
||||
sit.goldNum = goldNum;
|
||||
sit.consumeGoldNum = consumeGold;
|
||||
|
||||
// ⭐ 记录金币流水:进房初始金币
|
||||
GameManager.LogGoldFlow("JoinGame", $"座位={sitNum} 初始金币={goldNum} 钻石={diamondNum} 炮台消耗={consumeGold} 房间={GameManager.Instance.gameData?.currRoomData?.roomId}");
|
||||
// ⭐ 同步 indexConsume 到后端下发的 cannonMultiple 对应档位,避免加减炮倍时从 0 档跳变
|
||||
sit.SyncIndexByConsume(consumeGold);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user