Obsolete属性とは?
Obsolete
属性は、Unity
に限らずC#
言語の標準的な属性です。
C#
では、クラスやインターフェイス、メソッドなどのプログラム要素に情報を付与するため、
属性(Attribute
)を使用しますが、Obsolete
もその一つです。
Obsolete属性の役割
Obsolete
属性は、Unity
も含めたC#
言語で利用できますが、
この属性をクラスなどに追加するとその要素を「非推奨」としてマークすることが出来ます。
それによってそのコードが使用された際に警告やエラーを表示することが出来ます。
Obsolete属性を設定できる要素
Obsolete
属性は以下の要素に設定できます。
class
interface
- フィールド(クラスのメンバー変数)
- プロパティ
- メソッド
などです。
以下はクラスに設定した例です。
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
属性を付与することで使用している箇所を把握したり、
新しいコードへ載せ替えるよう促すことが出来ます。
個人で開発をしている場合は出番が少ないかもしれませんが、
チームで長期の開発を行う場合は使う機会が割とありそうです。
覚えておくといつか役に立つかもしれません。