Unity3D

유니티에서 스크립트 코드로 디파인 정의 추가 하기 - Unity Scripting Define Symbols

DragonTory 2020. 7. 30. 11:41
반응형

 

 

 

 

 

 

 

 

 

유니티에서 스크립트 코드로 디파인 정의 추가 하기 

- Unity Scripting Define Symbols - Preprocessor Symbols

 

유니티에서 #define을 사용 하여 특정 상황에 맞게 혹은 다르게 동작 하게 하려고 할 때 사용 할 수 있다. 

단, 해당 스크립트 파일 최상단에서 정의 해야 하고 해당 파일에서만 적용이 된다. 

다른 스크립트 파일에서는 동일 디파인이 적용이 안 되는 것.

 

유니티에서 전역으로 심볼을 디파인 (전처리기 디파인) 하는 방법은 

Player Settings -> Other Settings -> Configuration -> Scripting Define Symbols

에 세미콜론(;)으로 구분 하여 디파인을 추가 하면 된다.

 

이 값을 수기로 그때 그때 상황별로 적용 하는 것이 귀찮고 잊어 버릴 때가 있는데

이 때 스크립트 코드로 자동 추가 되게 하면 훨신 편하고 또한 잊어 버릴 일도 없다.

 

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using UnityEngine;
  5. using UnityEditor;
  6.  
  7. /// <summary>
  8. /// Adds the given define symbols to PlayerSettings define symbols.
  9. /// Just add your own define symbols to the Symbols property at the below.
  10. /// </summary>
  11. [InitializeOnLoad]
  12. public class AddDefineSymbols : Editor
  13. {
  14.  
  15. /// <summary>
  16. /// Symbols that will be added to the editor
  17. /// </summary>
  18. public static readonly string [] Symbols = new string[] {
  19. "MYCOMPANY",
  20. "MYCOMPANY_MYPACKAGE"
  21. };
  22.  
  23. /// <summary>
  24. /// Add define symbols as soon as Unity gets done compiling.
  25. /// </summary>
  26. static AddDefineSymbols ()
  27. {
  28. string definesString = PlayerSettings.GetScriptingDefineSymbolsForGroup ( EditorUserBuildSettings.selectedBuildTargetGroup );
  29. List<string> allDefines = definesString.Split ( ';' ).ToList ();
  30. allDefines.AddRange ( Symbols.Except ( allDefines ) );
  31.  
  32. PlayerSettings.SetScriptingDefineSymbolsForGroup (
  33. EditorUserBuildSettings.selectedBuildTargetGroup,
  34. string.Join ( ";", allDefines.ToArray () ) );
  35.  
  36. }
  37. }

스크립트를 하나 만들고 위의 내용을 복사 하여 붙혀 넣은 후

18~20번째 중의 Symbols의 항목 값을 원하는 디파인 값으로 변경 하고 

저장 후 유니티로 돌아 가면 컴파일 완료 후 Scripting Define Symbols 항목에 추가 된 것을 볼 수 있다. 

 

“파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음"

 

참조:

https://answers.unity.com/questions/500128/set-preprocessor-symbols-from-editor-script.html

 

Set preprocessor symbols from Editor script - Unity Answers

 

answers.unity.com

 

 

반응형