728x90
PlayerSettings 클래스에는
Define Symbol 을 제어할 수 있는 함수가 있다.
이것들을 제어하여 원하는 Symbol 만 빌드에 추가하여 빌드 자동화에 도움을 줄 수 있다.
PlayerSettings.SetScriptingDefineSymbolsForGroup(currentBuildTarget, defines);
currentBuildTarget 은 BuildTargetGroup Type 인데
이것을 가져오는 방법은 아래에 있다.
https://wildgoosechase.tistory.com/92
참고로, GetScriptingDefineSymbolsForGroup() 를 통해 현재 Define Symbol 들을 가져올 수도 있다.
주의할 점은 반환형이 string[] 이 아닌 string 이다.
이 string 안에 ';' 세미콜론을 구분자로 한 문장에 Symbol 들이 나열되어 있다.
Symbol 삭제 등이 필요할 시, ';' 을 기준으로 Split 을 잘 해보거나,
삭제를 원하는 Symbol string 의 IndexOf() 함수를 통해 얻은 Index 로 string 삭제가 가능하다.
이 때, 세미콜론도 함께 삭제해주어야 한다.
if (addSymbol == true)
{
string defines = PlayerSettings.GetScriptingDefineSymbolsForGroup(currentBuildTarget);
int index = defines.IndexOf(symbol);
// 존재하지 않는 심볼이라면 추가
if (index < 0)
{
defines = $"{defines}{symbol};";
Debug.Log($"New Defines : {defines}");
PlayerSettings.SetScriptingDefineSymbolsForGroup(currentBuildTarget, defines);
}
}
else
{
string defines = PlayerSettings.GetScriptingDefineSymbolsForGroup(currentBuildTarget);
int index = defines.IndexOf(symbol);
// 존재하는 심볼이라면 삭제
if (index >= 0)
{
defines = defines.Remove(index, symbol.Length);
Debug.Log($"New Defines : {defines}");
PlayerSettings.SetScriptingDefineSymbolsForGroup(currentBuildTarget, defines);
}
}
이런 식으로 추가/삭제를 할 수 있다.
테스트로 간단하게 작성한 코드라 삭제 시 세미콜론 체크에 문제가 있을 수 있다.
코드가 필요한 분은 알아서 수정해서 사용하시길!
728x90
'유니티 & C#' 카테고리의 다른 글
유니티 UI 이미지가 보이지 않을 때 Maskable 옵션 확인하기 (2) | 2023.11.01 |
---|---|
유니티 - 씬 이름을 Enum 으로 관리하기 [InitializeOnLoadMethod] 사용 (0) | 2023.10.26 |
유니티 - 현재 BuildTargetGroup, BuildTarget 을 가져오는 방법 (0) | 2023.10.24 |
유니티 커스텀 에디터 윈도우 생성 방법 (0) | 2023.10.24 |
[C#, Unity] 오버워치 트레이서 점멸, 시간역행 구현해보기 (0) | 2022.06.18 |