작성
·
29
답변 2
0
안녕하세요! 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는 Unity 프로젝트 설정의 일부로, 특정 스크립트가 특정 실행 조건에서만 동작하도록 할 때 사용됩니다. 일반적으로 플랫폼별 기능이나, 특정 환경에서만 필요한 코드를 활성화하거나 비활성화하는 데 사용됩니다.
Logger 클래스가 MonoBehaviour를 상속하지 않는다고 하셨는데, Unity에서 MonoBehaviour 상속 여부와 Scripting Define Symbols의 사용은 직접적으로 연결되어 있지 않습니다. MonoBehaviour는 Unity의 GameObject에서 동작하는 클래스 형태로, 게임 오브젝트의 생명주기(Lifecycle)에 관여하는 기능들을 제공할 수 있습니다.
일반적인 C# 클래스가 MonoBehaviour를 상속하지 않는 경우에도, 별도로 Scripting Define Symbols 없이 작동 가능합니다. 경우에 따라 플랫폼이나 환경에 따라 동작을 제어하기 위해 Conditional 컴파일을 사용할 순 있지만, MonoBehaviour와의 직접적인 관계는 없습니다.
[Conditional("")]
attribute는 특정 조건에서만 메소드를 호출하도록 지정하는 데 사용됩니다. 이외에도 전처리기 지시문(Preprocessor Directives), 예를 들어 #if
, #else
, #endif
등을 사용하여 코드의 작동을 제어할 수 있습니다. 이를 통해 특정 조건에서만 코드를 컴파일하도록 설정할 수 있습니다.
#if UNITY_EDITOR
Debug.Log("This will only run in the Unity Editor.");
#endif
이 코드처럼 조건문을 사용하여 특정 조건에서만 코드를 실행하는 것도 가능합니다.
관련해서 유사한 질문에 대한 답변들을 보실 수 있는 링크도 참고하시면 더 많은 인사이트를 얻으실 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.