Когда игрок являющиеся хостом нажимает кнопку то клиент удаляеться

У меня есть два скрипта - один висит на префабе кнопки(условной кнопке - это 2д обьект) , а второй на префабе игрока. Первый скрипт это синхронизация позиции кнопки а второй увелечение, синхронизация и выведение на екран очков. Мне нужно чтобы при вызове функции ClickButton() host игроком client игрок не удалялся из-за кучи ошибок.

Первый скрипт:

using System.Collections;
using System.Collections.Generic;
using Mirror;
using UnityEngine;
using Random = UnityEngine.Random;

public class Button : NetworkBehaviour
{
    public List<float> Yposes = new List<float>();

    private void Start()
    {
        StartCoroutine(Timer());
    }

    IEnumerator Timer()
    {
        yield return new WaitForSeconds(120f);
        Destroy(gameObject);
    }
    
    [Server]
    private void OnTriggerEnter2D(Collider2D other)
    {
        if (other.CompareTag("Player"))
        {
            NetworkIdentity playerNetworkIdentity = other.GetComponent<NetworkIdentity>();
            
            if (playerNetworkIdentity != null)
            {
                ScoreManager playerScoreManager = playerNetworkIdentity.GetComponent<ScoreManager>();

                if (playerScoreManager != null)
                {
                    playerScoreManager.CmdIncreaseScore(playerNetworkIdentity);
                }
            }

            if (isServer)
            {
                ClickButton();
            }
        }
    }



    [Server]
    private void ClickButton()
    {
        float randomY = 0, randomX;
        randomX = Random.Range(-27, 27);
        while (Yposes.Contains(randomY))
        {
            randomY = Random.Range(-13, 13);
        }
        Yposes.Add(randomY);

        Vector2 spawnPosition = new Vector2(randomX, randomY);
        RaycastHit2D hit = Physics2D.Raycast(spawnPosition, Vector2.down);
        if (hit.collider != null && hit.collider.CompareTag("Ground"))
        {
            float objectHeight = GetComponent<Collider2D>().bounds.extents.y;
            RpcSpawnObjectOnSolidGround(new Vector2(hit.point.x, hit.point.y + objectHeight));
        }
    }

    [ClientRpc]
    private void RpcSpawnObjectOnSolidGround(Vector2 position)
    {
        transform.position = position;
    }
}

Второй скрипт:

using System.Linq;
using Mirror;
using TMPro;
using UnityEngine;

public class ScoreManager : NetworkBehaviour
{
    public SyncListPlayerScore playerScores = new SyncListPlayerScore();
    public TextMeshProUGUI score;

    private void Start()
    {
        score = GameObject.FindWithTag("ScoreText").GetComponent<TextMeshProUGUI>();

        if (isServer)
        {
            UpdateScoreText();
        }
    }

    [Command]
    public void CmdIncreaseScore(NetworkIdentity player)
    {
        if (player != null && player.connectionToClient != null)
        {
            uint netId = player.netId;
            
            PlayerScore playerScore = playerScores.Find(x => x.netId == netId);

            if (playerScore == null)
            {
                playerScore = new PlayerScore { netId = netId, score = 0 };
                playerScores.Add(playerScore);
            }

            playerScore.score++;
            
            RpcUpdateScoreText(playerScores.ToArray());
        }
    }

    [ClientRpc]
    private void RpcUpdateScoreText(PlayerScore[] scores)
    {
        UpdateLocalScore(scores);
    }

    [Client]
    private void UpdateLocalScore(PlayerScore[] scores)
    {
        playerScores.Clear();
        playerScores.AddRange(scores);
        UpdateScoreText();
    }

    private void UpdateScoreText()
    {
        string scoreText = "Scores:\n";
        foreach (var entry in playerScores)
        {
            scoreText += $"Player {entry.netId}: {entry.score} очків\n";
        }

        
        score.text = scoreText;
    }

   
}

[System.Serializable]
public class PlayerScore
{
    public uint netId;
    public int score;
}

public class SyncListPlayerScore : SyncList<PlayerScore> { }

Я мог некоректно описать вопрос, если что поправьте или спросите. Надеюсь на помощь


Ответы (0 шт):