Obsolete属性とは?
Obsolete属性は、Unityに限らずC#言語の標準的な属性です。
C#では、クラスやインターフェイス、メソッドなどのプログラム要素に情報を付与するため、
属性(Attribute)を使用しますが、Obsoleteもその一つです。
Obsolete属性の役割
Obsolete属性は、Unityも含めたC#言語で利用できますが、
この属性をクラスなどに追加するとその要素を「非推奨」としてマークすることが出来ます。
それによってそのコードが使用された際に警告やエラーを表示することが出来ます。
Obsolete属性を設定できる要素
Obsolete属性は以下の要素に設定できます。
classinterface- フィールド(クラスのメンバー変数)
- プロパティ
- メソッド
などです。
以下はクラスに設定した例です。
using System;
[Obsolete]
public class TestPlayer
{
}
このコードがコンパイルされると以下の様に警告が表示されます。

Obsolete属性に引数を指定する
メッセージ
Obsolete属性には、引数でメッセージを渡すことも出来ます。
using System;
[Obsolete("TestPlayerは使用しなくなりました。代わりにNewPlayerを使用してください")]
public class TestPlayer
{
}
警告と一緒に指定したメッセージを表示されます。

エラー
第二引数にtrueを指定することで、そのObsoleteをエラーとすることも出来ます。
using System;
[Obsolete("TestPlayerは使用しなくなりました。代わりにNewPlayerを使用してください", true)]
public class TestPlayer
{
}
以下の様にエラー扱いになります。
新しい機能への移行を強制したい場合に使用できます。

MonoBehaviourを継承したクラスに設定した場合
UnityのMonoBehaviourを継承したコンポーネントクラスにも、Obsolete属性を設定できます。
using System;
[Obsolete("このクラスは非推奨になりました。")]
public class ObsoleteTest : MonoBehaviour
{
private void Awake()
{
var testPlayer = new TestPlayer();
}
}
この場合、インスペクタ上に警告が表示されるようになります。

エラー扱いにすると以下の様になりますが、このまま実行することは可能です。

(Deprecated) と表示されていますが、非推奨という意味になります。
まとめ
今回はObsolete属性について解説しました。
Obsolete属性を使用することで、古くなったコードを使用している場合に警告やエラーを表示することが出来ます。
長期間開発を行っていると、初期に作った仮のコードがずっと使われていたりすることがあります。
その仮のコードにObsolete属性を付与することで使用している箇所を把握したり、
新しいコードへ載せ替えるよう促すことが出来ます。
個人で開発をしている場合は出番が少ないかもしれませんが、
チームで長期の開発を行う場合は使う機会が割とありそうです。
覚えておくといつか役に立つかもしれません。