プログラムを理解したいならフローチャートに書き起こすのが良いよ。
よくあるリバースエンジニアリングの手法だよ。


[SerializeField]でGameObject入れる箱用意して、
アタッチしあとに手動でGameObject指定とかstartにGameObject.Find省くためによくやるけれど、
インスペクター上の設定値で動いてコードでは値を入れないから、コード見ただけじゃわからん部分も少なからずあるね。