public 修飾子で宣言した型の変数には、ヒエラルキー上にあるゲームオブジェクトの情報(クラスやコンポーネント)をアサインしておくことが出来ます。
ただしこれは、ゲーム実行時に、アサイン元のゲームオブジェクトがヒエラルキー上に存在していることと
アサイン先であるゲームオブジェクトとが、ヒエラルキー上に同時に存在している必要があります。
アサインできる場合
この例の場合ですと、インスペクターの表示されているGameManager(Script)はMapDataのアサインを取得出来ています。
何故ならばMapDataの情報を持つゲームオブジェクトがヒエラルキー上にあり、かつ、このGameManagerのゲームオブジェクトもヒエラルキー上に存在しているからです。
アサインできない場合
この例の場合では、PlayerというプレファブにGameManagerのアサイン情報を取得したいのですが、残念ながらアサインは出来ません。
何故ならば、Playerというゲームオブジェクトはヒエラルキー上にない設計図の状態であり、アサインしたい情報であるGameManagerは
ヒエラルキー上に存在しているためです。
そのため、プレファブ化してヒエラルキー上に存在していないゲームオブジェクトには、ヒエラルキー上にあるゲームオブジェクトの情報を事前にアサインすることはできません。
よってプレファブのアサイン情報は、プレファブが生成された後にアサインを行う必要があります。
例外として、プレファブ自身やプレファブの子オブジェクトの持つ情報(クラスやコンポーネント)については、事前のアサインが可能です。