이 영역을 누르면 첫 페이지로 이동
나날이스튜디오 블로그 블로그의 첫 페이지로 이동

나날이스튜디오 블로그

페이지 맨 위로 올라가기

나날이스튜디오 블로그

나날이스튜디오의 일상, 아트/테크 노하우, 작품을 소개합니다.

Conditional Attribute

  • 2020.07.31 14:49
  • 개발/Unity3D
글 작성자: 개발자 나날이

# Introduce

 

c#에서 사용이 가능한 조건부 컴파일 기호입니다.

정의되지 않은 기호가 사용된 메서드의 호출이나 특성이 무시됩니다.

가시적으로는 전처리기 지시문과 동일하게 보여지지만 메서드단위의 관리가 가능하다는 점과, 정의되지 않은 기호에 대하여 호출이 무시된다는 점에서 더 좋은 성능을 기대 할 수 있어 소개하게 되었습니다.

 

 

 

 

 

# For example

 

Conditional Attribute 사용 예시.

 

MS 공식 설명서에 구현되어있는 예제를 유니티 C#에서 재구성한 모습입니다.

2개의 메서드에 할당된 기호들이 모두 정의되어 있기 때문에 정상적으로 실행되어 아래와 같이 모든 메세지가 출력되게 됩니다.

 

 

 

 

 

 

Method1 함수는 무시된다.

 

다음과 같이 CONDITION1 기호 정의가 없는 상황인 경우, 해당 메서드에 대한 실행부에서의 호출이 무시되는것이 때문에 Method1(3); 부분을 건너뛰어서 진행하게 됩니다.

 

CONDITION1 이 할당된 메서드는 무시됨.

 

 

 

 

 

전처리기 지시문으로 구현. 동작은 동일하다.

 

전처리기 지시문을 이용해도 가시적으로는 동일합니다.

다만 호출을 무시하는것은 아니므로, 비어있는 Method1 메서드가 호출되게 되는 형태가 됩니다.

 

결과는 동일하다.

 

 

 

 

 

# Comment

 

구현 조건

Conditional Attribute는 제한적인 조건이 몇가지 필요합니다.

조건이 충족되지 않으면 정상적인 구현이 이루어지지 않습니다.

다음은 구현 조건입니다.

메서드 단위에만 적용 가능

Void 형태를 가지는 메서드의 경우에만 적용 가능

 

플랫폼별 지시어 사용

유니티에 미리 정의된 플랫폼별 지시어를 활용하여 여러 기능들을 만들어 낼 수 있습니다.

다음은 플랫폼별 지시어와 같이 사용되어 유니티 Debug를 에디터에서만 나타나도록 제작된 예제입니다.

 

Debug는 에디터에서만 작동한다.

 

 

 

 

 

# Epilogue

Conditional Attribute는 유니티에서 다양한 방법으로의 활용이 가능합니다.

또한 메서드 호출을 무시한다는 점에서 조건에 맞는 경우 전처리기 지시문보다 뛰어난 성능을 발휘합니다.

다만 이 방법이 절대적으로 옳고 전처리기 지시문이 절대적으로 잘못된 방법은 아닙니다.

전처리기 지시문 역시, 연산자 사용 가능 또는 구현부 중 일부만 적용 가능하다는 점에서 그 활용도가 다릅니다.

각자 상황에 맞도록 처리를 하는 것이 가장 좋은 구현 방법입니다.

감사합니다.

 

 

 

 

 

# Reference

 

https://docs.microsoft.com/ko-kr/dotnet/api/system.diagnostics.conditionalattribute?view=netcore-3.1

 

ConditionalAttribute Class (System.Diagnostics)

지정된 조건부 컴파일 기호가 정의되어 있지 않으면 메서드 호출 또는 특성이 무시되어야 함을 컴파일러에 알립니다.Indicates to compilers that a method call or attribute should be ignored unless a specified conditio

docs.microsoft.com

https://docs.unity3d.com/kr/current/Manual/PlatformDependentCompilation.html

 

플랫폼별 컴파일 - Unity 매뉴얼

Unity의 Platform Dependent Compilation 기능은 지원되는 플랫폼 중 하나를 위해 작성된 코드 섹션을 컴파일 및 실행할 수 있게 하고, 스크립트를 파티션화할 수 있는 전처리 명령으로 구성됩니다.

docs.unity3d.com

 

저작자표시 비영리 변경금지 (새창열림)

'개발 > Unity3D' 카테고리의 다른 글

Unity에서 슬로우 모션(Slow Motion)효과 주기 - TimeScale/AudioSource  (0) 2020.08.11
설정자와 Delegate로 사운드 온/오프 구현해보기  (0) 2020.08.06

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • Unity에서 슬로우 모션(Slow Motion)효과 주기 - TimeScale/AudioSource

    Unity에서 슬로우 모션(Slow Motion)효과 주기 - TimeScale/AudioSource

    2020.08.11
  • 설정자와 Delegate로 사운드 온/오프 구현해보기

    설정자와 Delegate로 사운드 온/오프 구현해보기

    2020.08.06
다른 글 더 둘러보기

정보

나날이스튜디오 블로그 블로그의 첫 페이지로 이동

나날이스튜디오 블로그

  • 나날이스튜디오 블로그의 첫 페이지로 이동

검색

메뉴

  • 🏠 홈
  • 🏷 태그
  • 📖 방명록

카테고리

  • 분류 전체보기 (14)
    • 나날이스튜디오 (7)
      • 팀 (1)
      • 일상 (6)
      • 작품 (0)
    • 개발 (7)
      • Design Pattern (3)
      • Github (0)
      • Unity3D (3)
    • 아트 (0)

최근 글

아카이브

정보

나날이스튜디오의 나날이스튜디오 블로그

나날이스튜디오 블로그

나날이스튜디오
    나날이스튜디오 블로그
    나날이스튜디오

    블로그 구독하기

    • 구독하기
    • RSS 피드

    방문자

    • 전체 방문자
    • 오늘
    • 어제

    티스토리

    • 티스토리 홈
    • 이 블로그 관리하기
    • 글쓰기
    Powered by Tistory / Kakao. © 나날이스튜디오. Designed by Fraccino.

    티스토리툴바