Script Define Symbols 설정

Unity 2025. 3. 17. 11:18
728x90

#if 조건부 컴파일으로 특정 코드만 실행하는 용도

#if USE_NEW_SYSTEM
    Debug.Log("이거");
#else
    Debug.Log("아니면 이거");
#endif	// 끝

 

1. 에디터로 추가하기

Edit → Project Settings → Player → Other Settings → Script Compilation → Scripting Define Symbols

 

2. 코드에서 Script Define Symbols 추가/제거

Enum을 사용하는 것이 더 편하고 직관적

public static class DefineSymbolManager
{
    // ✅ Enum으로 정의
    public enum DefineSymbol
    {
        USE_NEW_SYSTEM,
        DEBUG_MODE,
        PRO_VERSION
    }

    // ✅ 심볼 추가
    public static void AddDefineSymbol(DefineSymbol symbol)
    {
        string symbolName = symbol.ToString(); // Enum 값을 문자열로 변환
        string defines = PlayerSettings.GetScriptingDefineSymbolsForGroup(BuildTargetGroup.Standalone);

        if (!defines.Contains(symbolName))
        {
            defines += ";" + symbolName;
            PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.Standalone, defines);
        }
    }

    // ✅ 심볼 제거
    public static void RemoveDefineSymbol(DefineSymbol symbol)
    {
        string symbolName = symbol.ToString();
        string defines = PlayerSettings.GetScriptingDefineSymbolsForGroup(BuildTargetGroup.Standalone);

        if (defines.Contains(symbolName))
        {
            defines = defines.Replace(symbolName, "").Replace(";;", ";");
            PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.Standalone, defines.Trim(';'));
        }
    }

    // ✅ 심볼이 존재하는지 확인
    public static bool HasDefineSymbol(DefineSymbol symbol)
    {
        string symbolName = symbol.ToString();
        string defines = PlayerSettings.GetScriptingDefineSymbolsForGroup(BuildTargetGroup.Standalone);
        return defines.Contains(symbolName);
    }
}

 

적용 확인 후 사용

- 플랫폼별 코드 분기

- 디버깅 및 테스트용 코드 분리

- 특정 기능 활성화/비활성화

 

[MenuItem("Tools/Settings/ScriptDefineSymbols")]

-> 에디터 메뉴에 항목 추가해서 편하게 실행 ㄱㄱ

// 'Tools → Settings → ScriptDefineSymbols' 항목 클릭 시 실행되는 메서드
    [MenuItem("Tools/Settings/ScriptDefineSymbols")]
    public static void SetScriptDefineSymbols()
    {
        DefineSymbolManager.AddDefineSymbol(DefineSymbolManager.DefineSymbol.DEBUG_MODE);
    }
728x90
Posted by 바르마스
,