목록

Conditional Attribute

지정된 조건부 컴파일 기호가 정의되어 있지 않으면

메서드 호출이나 특성을 무시해야 함을 컴파일러에게 알린다.

즉, #if #endif 로 단일적으로 묶는 전처리기을 보완하기 위해 여러군데에서 쓰이는 동일 코드를 효과적으로 처리(중복되니)하기 위해 나온거 같다.


#사용법(Usage)

사용법은 간단쓰

#definde CONDITION1

[Conditional("CONDITION1")]
public void exMethod()
{
	Console.WriteLine("CONDITION1 is defined");
}

이런 식으로 속성 부여해서 사용,

당연하지만, 해당 속성이 #definde으로 정의 되어 있어야 사용가능.


#유니티에서의 활용

Debug.log사용에 활용

릴리즈 빌드 배포 시 개발용으로 삽입해 놓은 남용된 Debug.log는 성능 저하에 영향을 주므로, UnityEngine.Debug.Log자체를 감싼 전역함수를 Conditional속성 지정해 활용가능.

Debug.log사용한 부분을 일일이 #if #endif할 필요없어짐.

	[System.Diagnostics.Conditional("ENABLE_LOG")]
	public static void Log(object message)
	{
		UnityEngine.Debug.Log(message);
	}

#주의

  • ConditionalAttribute 특성을 메서드 및 클래스에 적용 할 수 있다.
  • 클래스에 대한 사용은 Attribute 에서 파생 된 유형에만 유효하다.
  • ConditionalAttribute 는 무시되거나 다른 형식에 적용하면 컴파일러 경고 또는 오류 메시지가 나타난다.
  • 변수 정의를 해제하려면 #undef사용.

#참고