Problemas con clases generales

Hola, ¿qué tal?
Realizando mi proyecto todo funcionaba correctamente pero añadí unas líneas de código en un script y me salió el aviso que os muestro en la imagen adjunta que hace referencia a que si deseaba producir un cambio en las APIS y tras aceptar, en Rider me da error en todos los scripts debido a que no reconoce las librerías básicas de Unity como pueden observar en la imagen adjunta, me gustaría saber cómo puedo reestablecer esta acción, eliminé el script reinstalé Unity, Rider y Visual Studio, he probado otros IDES y otros proyectos en Unity pero sigo con las librerías sin poder utilizarlas, un saludo.
Pienso que ha variado algún ajuste referente al uso de las clases generales pero no he podido resolverlo aún.

No me deja adjuntar una segunda imagen pero lo que ocurre en la segunda imagen es que se muestra en gris cómo si no reconociera las clases:
usando.system.collections
y using.system.collections.generics
Muchas gracias de antemano. Un saludo

Este es el Script

using UnityEngine;

public class ExcavationController : MonoBehaviour
{
    public float excavationDepth = 0.1f; // La profundidad de la excavación
    public float excavationRadius = 5f;  // El radio de la excavación
    private Terrain terrain;
    private TerrainData terrainData;
    private int heightmapWidth;
    private int heightmapHeight;

    void Start()
    {
        // Obtén el componente Terrain y sus datos
        terrain = Terrain.activeTerrain;
        terrainData = terrain.terrainData;
        heightmapWidth = terrainData.heightmapResolution;
        heightmapHeight = terrainData.heightmapResolution;
    }

    void Update()
    {
        // Detecta si se presiona el botón izquierdo del mouse
        if (Input.GetMouseButton(0))
        {
            Excavate();
        }
    }

    void Excavate()
    {
        // Lanza un raycast desde la posición del mouse
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        if (Physics.Raycast(ray, out RaycastHit hit))
        {
            // Verifica si el raycast golpea el terreno
            if (hit.collider.gameObject == terrain.gameObject)
            {
                Vector3 terrainPosition = hit.point;
                DeformTerrain(terrainPosition);
            }
        }
    }

    void DeformTerrain(Vector3 position)
    {
        // Convierte la posición del mundo a la posición en el terreno
        Vector3 terrainPosition = terrain.transform.InverseTransformPoint(position);
        int xBase = Mathf.RoundToInt((terrainPosition.x / terrainData.size.x) * heightmapWidth);
        int zBase = Mathf.RoundToInt((terrainPosition.z / terrainData.size.z) * heightmapHeight);

        int radiusInHeightmapSpace = Mathf.RoundToInt((excavationRadius / terrainData.size.x) * heightmapWidth);

        // Obtén los datos de altura alrededor del área de excavación
        int xOffset = Mathf.Clamp(xBase - radiusInHeightmapSpace, 0, heightmapWidth);
        int zOffset = Mathf.Clamp(zBase - radiusInHeightmapSpace, 0, heightmapHeight);
        int width = Mathf.Clamp(xBase + radiusInHeightmapSpace, 0, heightmapWidth) - xOffset;
        int height = Mathf.Clamp(zBase + radiusInHeightmapSpace, 0, heightmapHeight) - zOffset;

        float[,] heights = terrainData.GetHeights(xOffset, zOffset, width, height);

        // Modifica los datos de altura para crear la excavación
        for (int x = 0; x < width; x++)
        {
            for (int z = 0; z < height; z++)
            {
                float distance = Vector2.Distance(new Vector2(x, z), new Vector2(radiusInHeightmapSpace, radiusInHeightmapSpace));
                if (distance < radiusInHeightmapSpace)
                {
                    float depthMultiplier = 1.0f - (distance / radiusInHeightmapSpace);
                    heights[x, z] -= excavationDepth * depthMultiplier * Time.deltaTime;
                }
            }
        }

        // Aplica los datos de altura modificados de vuelta al terreno
        terrainData.SetHeights(xOffset, zOffset, heights);
    }
}