Я пытаюсь синхронизировать значение с плавающей запятой между сервером и клиентом.
На экране сервера есть скрипт босса HpBar с настройкой значения MAXHP в сцене.
сборка игрока имеет свой собственный интерфейс HP босса и скрипт localhp, который будет получать текущее значение HP босса из скрипта HpBar на сервере.
когда пользователь нажимает кнопку «Атака», он отправляет значение урона в скрипт HpBar, после чего он должен обновляться до префаба игрока. но это не синхронизируется вместе. Благодарность
фото здесь https://imgur.com/a/KrYtC3T
Скрипт localPlayerHPBAR:
public class localHpBar : NetworkBehaviour
{
public HpBar serverHp;
public float localhpPoint;
public Image localhpBar;
// Start is called before the first frame update
void Start()
{
serverHp = GameObject.FindObjectOfType<HpBar>();
//Get OBJ of serverHP
}
public void sendDamage(float dmg)
{
serverHp.TakeDamage(dmg); //SendDamageToserver
}
// Update is called once per frame
void Update()
{
//get HP point from server
localhpPoint = serverHp.sum;
localhpBar.fillAmount = localhpPoint;
}
}
СЕРВЕР
public class HpBar : NetworkBehaviour
{
public Image HP;
public float MaxHP;
float currentHP;
public float localhp;
[SyncVar] public float sum;
void Start()
{
//set CURRENT HP
currentHP = MaxHP;
}
[ClientRpc]
void rpcDamage(float dmg)
{
sum = currentHP / MaxHP;
HP.fillAmount = sum;
}
public void TakeDamage(float dmg)
{
//recieve DamageFrom client
currentHP = currentHP - dmg;
rpcDamage(currentHP);
}
}