I noticed you have a preference for Editor references over GetComponent<>() calls in Awake() - I imagine there must be some performance benefit.
But then I wondered why you chose to use GetComponent() to get the GridSystemVisualSingle when you could avoid the call by directly instantiating the component (rather than its transform).
I realize we’d need a different editor reference here for the GridSystemVisualSingle. We could use the Awake() method to get its transform so that we can also have that cached if we expect to use the transform later on in the lesson.
Sorry for all the questions, but I’m trying to understand why certain design choices were made and if there’s some higher level principle you’re applying. I’ll post a separate question re: overall system design because I have questions there too.