Hey there. What I recommend that you do, for some suggestions/feedback, is to post a script (or 2) that are concerning you the most, in the forums. Please take a moment to look at this page for how to do it, if you don’t know how: Using code tags properly
Then, you’ve already mostly described what it is you’re looking for, so that’s good.
People will be able to come to this page, and take a look at your question and offer their comments more easily, without having to change pages
I took a quick look at 1 file you linked BlockController. You said one of your problems was not being able to avoid FindObject. If you want to keep your variable private but avoid that find, you can add the attribute [SerializeField] above any variable, and then drag & drop it in the inspector.