上記の例のように、これが組込み型の代入の場合ですとわかりやすいのですが、Unity専用の型やクラスの代入になると、途端にわかりにくくなります。
そのため、「左辺 = 右辺」という式があった際には、「型 = 型」であると、まずは念頭に置きましょう。
そして初期から使用しているいくつかの処理を思い出してみます。
int value = Random.Range(0, 100);
↓
int = int であるため、代入が出来ている
BoxCollider boxCol;
boxCol = GetComponent<BoxCollider>();
↓
BoxCollider = BoxCollider であるため、代入が出来ている
GameManager gameManager;
gameManager = GameObject.FindGameObjectWithTag("GameManager").GetComponent<GameManager>();
↓
GameManager = GameObject を経由して GameManager であるため、代入が出来ている
どちらも式だけを見るのではなくて、その式がどの型によって処理を行うようにするのかを置き換えて見るようにします。
こうすることによって、徐々にUnity専用の型やクラスであっても、代入処理の理解を深めていくことが出来ます。
特に最後の例題はドットの位置により、処理が3つ行われています。
まずは「GameObject」までが1つの処理で、「GameObject型の持つ処理を行います」という命令です。
続いて「.FindGameObjectWithTag("GameManager")」までが2つ目の処理です。この処理は文字にすると長くなり
「GameObject型の持つ、(ドットの位置)FindGameObjectWithTagという関数を実行します。
この関数は引数("指定した文字列")と、同じ文字列のタグを持つゲームオブジェクト1つをヒエラルキー上から探してきて取得します。
指定する文字列は"GameManager"です。」という処理になります。
最後は「.GetComponent<GameManager>()」です。
ドットがありますので、2つ目の処理に対して行われる処理になります。
つまり「2つ目の処理で取得したGameManagerというタグを持つゲームオブジェクトの中から、GameManagerという型を1つ見つけて取得します」という命令です。
このように最後の処理まで到達することによって、無事にGameManager型が右辺の値になりますので、これが左辺のgameManagerの変数の値として代入されることになります。
このように代入の流れの説明ができるようになってくれば、理解は深まってきていると思います。