Unity Conditional

Conditionalの紹介の前に属性(Attribute)

属性(Attribute)とはクラスやメンバーなどに追加で情報を与えることができるものです。今回の「Conditional」、以前紹介した「HidenInspector」など様々なものがあります。

pandoraxssscan-929.hatenablog.com

 

Conditionalとは?

では、本題の「Conditional」ですが、これは定数が定義されていたら実行をし、そうでない場合は何もしない。

名前空間「System.Diagnostics」に存在する。

 

Unityで使用するなら

例えば、Unityエディター上ではログを出力したいが、ビルド後はログを出力させたくないような場合。

Debug.logをラッピングしたクラスがあるとします。

 

public static class MyDebug {

 public static void Log(object o) {

    Debug.logger.log(o); 

   }
}

⇑こんな感じのクラス

これを下記のように変更すると

 

public static class MyDebug {

 [Conditional("UNITY_EDITOR")]

 public static void Log(object o) {

    Debug.logger.log(o); 

   }
}

これでビルド後はログが出力されなくなります。

こうすることで、いちいちコード上に散らばるログ出力の部分を消さなくて済むし、コンパイラがビルド時にメソッドの呼び出しを無視してくれるようなので、メソッドの呼び出しにかかるコストもなくすことができるようです!!

 

 

間違い、ご意見など気軽にお書き込みください。