[Unity] スクリプトの有効/無効状態にコルーチンを連動させる

GameObjectにアタッチしたスクリプトのenabledフィールドをfalseにした場合(スクリプトを無効にした場合)、Update()などが呼び出されなくなり更新処理が止まります。
しかし、前述のスクリプトから呼び出されたコルーチンは止まりません。
たとえば、以下のようなカウンタ値を1秒ごとに出力するスクリプトでは、スクリプトを無効にしてもコルーチンが動き続け値が表示され続けます。

コルーチンをスクリプトの有効/無効状態すなわちenableの値に連動させるためには、OnDisable()、OnEnable()内でコルーチンを停止/再開させる必要があります。
これを実装すると以下のようになります。

Start()などUnity側から呼び出されるメソッドをコルーチンとしている場合は戻り値を受け取る術が無いので別のメソッド名にしてAwake()内部で呼び出すようにしています。
これでスクリプトが無効になるとコルーチンが停止し、再び有効になるとコルーチンが途中から再開します。
コルーチンを途中から再開させるためにはStartCoroutine()にコルーチンの戻り値を指定します。

これでコルーチンがスクリプトの有効/無効状態に連動して動作/停止するようになりました。