인프런 커뮤니티 질문&답변

박현수님의 프로필 이미지
박현수

작성한 질문수

유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지

Logger

scripting define symbol 관련 질문

작성

·

29

0

안녕하세요, scripting define symbol과 관련해서 질문드립니다.

Logger 편에서 Logger 클래스가 monobehaviour을 상속하지 않기 때문에 scripting define symbol을 사용하지 않으면 코드가 작동하지 않는다고 이해했습니다.

이는 monobehaviour을 상속하지 않는 모든 클래스에서 해당되는 내용인가요?

[Conditional("")] 코드 외에 코드를 작동시키는 방법이 있나요?

답변 2

0

BurningCarrot님의 프로필 이미지
BurningCarrot
지식공유자

안녕하세요! BurningCarrot입니다. 문의해 주신 내용에 답변 드립니다.

먼저 monobehaviour 상속 여부와 scripting define symbol 사용은 관련이 없습니다. monobehaviour를 상속해도 scripting define symbol은 작동합니다.

다음으로 [Conditional("")]을 사용하지 않고 코드를 작동시키고 싶으시다면, Logger의 Log 함수 내부를 #if DEV_VER ~ #endif 전처리기로 감싸주는 방법이 있습니다.

    public static void Log(string msg)
    {
#if DEV_VER
        UnityEngine.Debug.LogFormat("[{0}] {1}", System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), msg);
#endif
    }

 추가로 궁금하신 점이 있으시다면 편하게 질문 부탁 드립니다. 🙂

0

안녕하세요, 인프런 AI 인턴입니다. 박현수님.

Scripting Define Symbols과 관련하여 질문 주셨습니다. 이를 이해하기 위해서는 몇 가지 개념을 살펴보아야 합니다.

Scripting Define Symbols

Scripting Define Symbols는 Unity 프로젝트 설정의 일부로, 특정 스크립트가 특정 실행 조건에서만 동작하도록 할 때 사용됩니다. 일반적으로 플랫폼별 기능이나, 특정 환경에서만 필요한 코드를 활성화하거나 비활성화하는 데 사용됩니다.

Logger 클래스와 MonoBehaviour

Logger 클래스가 MonoBehaviour를 상속하지 않는다고 하셨는데, Unity에서 MonoBehaviour 상속 여부와 Scripting Define Symbols의 사용은 직접적으로 연결되어 있지 않습니다. MonoBehaviour는 Unity의 GameObject에서 동작하는 클래스 형태로, 게임 오브젝트의 생명주기(Lifecycle)에 관여하는 기능들을 제공할 수 있습니다.

일반적인 C# 클래스가 MonoBehaviour를 상속하지 않는 경우에도, 별도로 Scripting Define Symbols 없이 작동 가능합니다. 경우에 따라 플랫폼이나 환경에 따라 동작을 제어하기 위해 Conditional 컴파일을 사용할 순 있지만, MonoBehaviour와의 직접적인 관계는 없습니다.

[Conditional(“”)] 외

[Conditional("")] attribute는 특정 조건에서만 메소드를 호출하도록 지정하는 데 사용됩니다. 이외에도 전처리기 지시문(Preprocessor Directives), 예를 들어 #if, #else, #endif 등을 사용하여 코드의 작동을 제어할 수 있습니다. 이를 통해 특정 조건에서만 코드를 컴파일하도록 설정할 수 있습니다.

#if UNITY_EDITOR
    Debug.Log("This will only run in the Unity Editor.");
#endif

이 코드처럼 조건문을 사용하여 특정 조건에서만 코드를 실행하는 것도 가능합니다.

관련해서 유사한 질문에 대한 답변들을 보실 수 있는 링크도 참고하시면 더 많은 인사이트를 얻으실 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

박현수님의 프로필 이미지
박현수

작성한 질문수

질문하기