This commit is contained in:
2026-07-23 01:51:07 +08:00
parent ea98a770fc
commit 83699675e1
23 changed files with 1844 additions and 138 deletions
@@ -32,10 +32,16 @@ public class MonsterControl_BossBase : MonsterContral
// ==================== 死亡 ====================
public bool isDieFish;
public float dieTime = 3f;
public Vector3 v3; // 分数飞出目标位置(Inspector 设置)
public Vector3 v3; // 分数飞出目标位置(Inspector 设置)
private long _turretNum;
private bool _isJia;
/// <summary>是否本地玩家击杀(金/银币样式切换用,由 Ws_DieFish 设置)</summary>
public bool isLocalCoin = false;
/// <summary>击杀者座位 ID(人机击杀时由房主代发,但 sitPos 应为人机座位,而非房主自己)</summary>
public int killerSitPos = -1;
// ==================== Unity 生命周期 ====================
public override void Awake()
@@ -46,9 +52,38 @@ public class MonsterControl_BossBase : MonsterContral
action_effect_DieAward = obj =>
{
tMP_CurrBossScore = obj.transform.GetChild(0).GetComponent<TextMeshProUGUI>();
// ⭐ 按 isLocalCoin 切金/银:自己击杀=金币,他人=银币
ApplyBossScoreStyle(obj.transform);
};
}
/// <summary>
/// 按 isLocalCoin 切换 Boss 分数 TMP 的 spriteAsset:
/// 自己击杀 → goldSprite
/// 他人击杀 → silverSprite
/// 优先用 BJImage(新预制体),回退 ScoreNumScrollEvent,再回退直接取 TMP。
/// 需对应 sprite 已在 Inspector 赋值,否则跳过不影响原显示。
/// </summary>
private void ApplyBossScoreStyle(Transform root)
{
if (tMP_CurrBossScore == null) return;
var bjImage = root.GetComponentInChildren<BJImage>();
if (bjImage != null)
{
var spriteAsset = isLocalCoin ? bjImage.goldSprite : bjImage.silverSprite;
if (spriteAsset != null)
tMP_CurrBossScore.spriteAsset = spriteAsset;
return;
}
var scrollEvent = root.GetComponentInChildren<ScoreNumScrollEvent>();
if (scrollEvent != null)
{
scrollEvent.SetScoreStyle(isLocalCoin);
}
}
public override void OnEnable()
{
base.OnEnable();
@@ -58,6 +93,8 @@ public class MonsterControl_BossBase : MonsterContral
redPacketRecords.Clear();
_isJia = false;
isDieFish = false;
isLocalCoin = false;
killerSitPos = -1;
var res = FishResourcesData.fishResourcesDatasDic[fishTypeID];
if (res.showAudio != null && res.showAudio.Count > 0)
@@ -111,8 +148,10 @@ public class MonsterControl_BossBase : MonsterContral
var parent = CreateFishManager.Instance.bjEffectRoot;
if (parent == null) return;
tMP_CurrBossScore = Instantiate(prefab, parent)
.transform.GetChild(0).GetComponent<TextMeshProUGUI>();
var board = Instantiate(prefab, parent);
tMP_CurrBossScore = board.transform.GetChild(0).GetComponent<TextMeshProUGUI>();
// ⭐ 按 isLocalCoin 切金/银:自己击杀=金币,他人=银币
ApplyBossScoreStyle(board.transform);
}
/// <summary>初始化红包分层对象池</summary>
@@ -128,7 +167,7 @@ public class MonsterControl_BossBase : MonsterContral
EnsureScorePanel();
EnsureLayeredPool();
var records = layeredPool.BossGlodCoinRandrom(tMP_CurrBossScore.transform.position, min, max);
var records = layeredPool.BossGlodCoinRandrom(tMP_CurrBossScore.transform.position, min, max, killerSitPos);
AddRedPacket(records);
}
@@ -150,7 +189,7 @@ public class MonsterControl_BossBase : MonsterContral
EnsureScorePanel();
EnsureLayeredPool();
var records = layeredPool.BossGlodCoin(smallFishCount, tMP_CurrBossScore.transform.position);
var records = layeredPool.BossGlodCoin(smallFishCount, tMP_CurrBossScore.transform.position, killerSitPos);
AddRedPacket(records);
}
@@ -201,7 +240,17 @@ public class MonsterControl_BossBase : MonsterContral
{
yield return new WaitForSeconds(0.15f);
var inst = Instantiate(addScorePrefab, parent.position + Vector3.up * 60, Quaternion.identity, parent);
inst.transform.GetChild(0).GetComponent<TextMeshProUGUI>().text = CoinScript.NumAdd(item.Amount.ToString());
// ⭐ 按 isLocalCoin 切金/银:优先用 ScoreNumScrollEvent,回退直接赋文本
var scrollEvent = inst.GetComponent<ScoreNumScrollEvent>();
if (scrollEvent != null)
{
scrollEvent.SetScoreStyle(isLocalCoin);
scrollEvent.SetScoreText(CoinScript.NumAdd(item.Amount.ToString()));
}
else
{
inst.transform.GetChild(0).GetComponent<TextMeshProUGUI>().text = CoinScript.NumAdd(item.Amount.ToString());
}
AudioManager.Instance.PlayerFX(61009);
}
}