
わかればなんてことはない問題ではありますが、「初心者うっかり」だったら結構ハマるかもしれないな…と思いデバッグの手順を記事にしてみました。
一つずつ問題を詰めていく手順も(恥ずかしいですが)載せておきます。
UnassignedReferenceException: The variable CanvasGroup of DDisp has not been assigned.
You probably need to assign the CanvasGroup variable of the DDisp script in the inspector.
ログにはこんなエラー。翻訳すると「DDispのCanvasGroupが設定されてないよ! インスペクタの設定し忘れかもね?」といったところでしょうか。
目次
インスペクタを確認
ところが、確認すると設定されている。

「インスペクタで設定してても、Awake で拾えないルールとかあったっけ…?」とか見当違いな憶測を立てつつ、デバッガでブレークポイントを貼ってみます。
Awake、Start、OnEnable には随分といじめられた
デバッガで指(マウスカーソル)さし確認

確かに null になっている。
Start だとどうかな? と F5実行 でブレークを進めてみる。

あれれー、おっかしいなぁ? もう一回 Awake が実行されて、値が入ってるんだけどー?
そう。
1つのGameObjectにアタッチしたつもりが2つのGameObjectに間違えて設定していた模様。
(1つのGameObjectに2つアタッチしちゃうことも稀によくある)
FindObjectsOfType で全てのアタッチされたオブジェクトを確認
どこに間違えて設定したか検討つけばいいんですが、間違えて設定した場合は検討がつきません。
シーンに大量の GameObject があったりしたら、目視で探すのは現実的ではないので、FindObjectsOfType<DDisp>() を使います。

こうすれば、シーン内で DDisp がアタッチされた全ての GameObject を確認できます。

今回の場合、DDisp 以外に PerformanceMeter という GameObject にもアタッチしていたようです…。
インスペクタで何も設定してないし、エラーが出るわけだ。

と、いうわけで PerformanceMeter の DDisp を消したところ、無事に動くようになりました。