YugGO
@YugGO

Как синхронизировать данные от клиента до хоста используя Mirror Network в Unity?

При изучении Mirror я столкнулся с проблемой, что хост передаёт данные клиентам, а клиенты не передают данные серверу.
Реализовал я передачу через "SyncVar":
spoiler
public class MirrorTest : NetworkBehaviour
{
    [SyncVar(hook = nameof(SetColor))]
    public Color playerColor = Color.black;

    public SpriteRenderer playerSprite;
    public Color[] colors;

    private void Update()
    {
        if (isLocalPlayer)
        {
            if (Input.GetKeyDown(KeyCode.Space))
            {
                int randomColor = Random.Range(0, colors.Length);
                playerColor = colors[randomColor];
            }
        }
    }

    void SetColor(Color oldColor, Color newColor)
    {
        playerSprite.color = newColor;
    }
}


Итог:
Если хост нажимает "Space" он меняет цвет(в инспекторе), и это видит как и хост, так и клиент.
Если клиент нажимает "Space" он меняет цвет(в инспекторе), но как и клиент, так и хост не видят новый цвет.

Если надо что-то уточнить, спрашивайте.
Спасибо.
  • Вопрос задан
  • 26 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы