Почему int из другого класса читается как 0?

Есть у меня генерация случайного int ci И если сделать вывод в консоль в этом же классе то оно выводит нормально, но если получать это из другого метода, то оно все время как 0 выводится

    public class Works : MonoBehaviour
{
    public int ci;
    public IEnumerator CourierWorkShopColor()
    {
        while (true)
        {
            System.Random r = new System.Random();
            ci = r.Next(0, coloredPrefabs.Length);
            Debug.Log(ci);
            spriteRendererSHOP.color = new Color32(prefabColor[ci].r, prefabColor[ci].g, prefabColor[ci].b, 255);
            yield return new WaitForSeconds(3.5f);
        }
    }
}

другой метод

public Works works;

private void OnCollisionEnter2D(Collision2D coll)
    {
        if (coll.gameObject.CompareTag("Shop"))
        {
            Debug.Log(works.ci);
            if (gameObject.tag == works.ci.ToString())
            {
                allVariables.money += 5;
                works.howMuchEarn += 5;
                works.textMoneyCourierEarn.text = "Заработано - " + works.howMuchEarn;
                Destroy(gameObject);
            }
    }

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