48 lines
1.0 KiB
C#
48 lines
1.0 KiB
C#
using Mirror;
|
|
using UnityEngine;
|
|
using DamageNumbersPro;
|
|
|
|
/// <summary>
|
|
/// 网络伤害数字(负责自动同步并显示)
|
|
/// </summary>
|
|
public class DamageNumberNetwork : NetworkBehaviour
|
|
{
|
|
[SyncVar(hook = nameof(OnSyncVarChanged))]
|
|
public float damageValue;
|
|
|
|
[SyncVar]
|
|
public Vector3 worldPos;
|
|
|
|
[SyncVar]
|
|
public bool isCritical;
|
|
|
|
private bool hasSpawned;
|
|
|
|
public override void OnStartClient()
|
|
{
|
|
base.OnStartClient();
|
|
TrySpawnDamage();
|
|
}
|
|
|
|
void OnSyncVarChanged(float oldValue, float newValue)
|
|
{
|
|
TrySpawnDamage();
|
|
}
|
|
|
|
private void TrySpawnDamage()
|
|
{
|
|
if (hasSpawned || damageValue == 0) return;
|
|
hasSpawned = true;
|
|
|
|
// 实例化 DamageNumbersPro 的伤害数字显示
|
|
var dmgNum = GetComponent<DamageNumber>();
|
|
if (dmgNum != null)
|
|
{
|
|
dmgNum.Spawn(worldPos, damageValue);
|
|
}
|
|
else
|
|
{
|
|
Debug.LogWarning("[DamageNumberNetwork] Missing DamageNumber component!");
|
|
}
|
|
}
|
|
} |