There’s a few new concepts here skimmed over.
[SerializeField] List Path = new List();
We seem to be creating a list with reference to the Waypoint class, and then assigning that to a variable, but no explanation given about how this really works? I feel like that is quite a new substantial step that needs a bit more explanation?