最近素朴な疑問があるんだが
他のオブジェクトにアタッチされてる頻繁に参照したいスクリプトやtransform類って
下のようにStartで取得してそのスクリプトのメンバー変数に保持し続けること多いやん?

GameObject a;
GameObject b;

void Start(){
a = GameObject.Find("a");
b = GameObject.Find("b");
}

サンプルコード程度ならこれでいいんだが、実際にゲーム作ってると
あっちこっちのスクリプトで似たようにStart()でaとbを保持し続ける事が増えていきて
同一スクリプトを他のあちらこちらで重複して保持が増えてなんか無駄に感じる

そこで
static class tmp {
static GameObject a;
static GameObject b;
}
を作り、まあどっかのスタートアップで一度だけ

tmp.a = GameObject.Find("a");
tmp.b = GameObject.Find("b");

と保持させて、全てのスクリプトからこっち使う方が効率いいんじゃないかと思ってきたわけだが実際どうなのかな?
これをやるとあっちこっちのStart()で同じような事しなくて済むと思うんだが