UnityではGetComponentやSerializeFieldでコンポーネントを取得しますが、
SerializeFieldでは参照の数が増えるとinspectorが汚くなってしまい、
不具合で参照が外れてしまうなどあるため怖いです。
一方GetComponentをAwakeやStartで行う方法も、
コンポーネントの数が増えてくると負荷が大きいです。
Getterで変数がnullの場合にGetComponentを行う方法もありますが、
一々プロパティを実装するのがめんどうです。
プロパティの部分を共通のクラスに書き出す方法も考えましたが、
GetComponentはMonobehaviourでしか使えないのでデリゲートをAwakeやStartで参照する必要があり
スマートな感じになりません。
Unityでコンポーネントを取得する最適な方法を教えていただきたいです。地道にプロパティを実装するほかないのでしょうか?