Скрипт работает только у одного объекта, а у других нет

у меня есть скрипт государства и несколько объектов с этим скриптом на сцене. Есть проблема, скрипт работает только у последнего созданного объекта, а у остальных нет.

Я вот не знаю в чем причина, код работал стабильно до появления второго государства.

Код государства, который работает только у одного объекта.

    private GameObject hr;
    public int id;

    [Header("Экономика")]
    public int econ = 0;
    public float econp = 24;

    [Header("Население")]
    public int nas = 0;
    public float nasp = 75;

    [Header("Доход")]
    public int money = 0;
    public float nalogst = 12;
    public float moneyprirost;

    [Header("Остальное")]
    public float Счастье = 93;
    public string Name;
    private float minusnalog = 1f;

    private void Start()
    {
        hr = GameObject.FindGameObjectWithTag("GBS");
        hr.GetComponent<GameBaseScript>().selectedcountry = gameObject.GetComponent<Country>().id;
    }

    public void Update()
    {
        float timeupd = hr.GetComponent<GameBaseScript>().timeupd;
        if (hr.GetComponent<GameBaseScript>().timeto <= 0 && hr.GetComponent<GameBaseScript>().timeto != -1)
        {
            hr.GetComponent<GameBaseScript>().timeto = -1;

            nas += Mathf.RoundToInt(Random.Range(24, 65) * nasp);
            econ += Mathf.RoundToInt(Random.Range(4, 9) * econp);

            float ecprirost = 1;
            if (nas >= econ)
                ecprirost = nas / econ;
            if (nas < econ)
                ecprirost = 1;

            moneyprirost = (100 / ecprirost) + ((nalogst / 100 * nas) / 100);

            money += Mathf.RoundToInt(moneyprirost);

            if (nalogst > 20)
            {
                float a = minusnalog / (100 / nalogst);
                Счастье -= a;
            }

            Счастье = ((float)(int)(Счастье * 100)) / 100;

            hr.GetComponent<GameBaseScript>().NewDay();
            hr.GetComponent<GameBaseScript>().timeto = timeupd;
        }
    }

    public void OnMouseDown()
    {
        GameObject select;
        select = GameObject.FindGameObjectWithTag("Select");
        if(gameObject.CompareTag("D'Select"))
        {
            gameObject.tag = "Select";
            select.tag = "D'Select";
            hr.GetComponent<GameBaseScript>().selectedcountry = gameObject.GetComponent<Country>().id;
        }
    }

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