5주차 강의, 광고 추가에서 사용되는 코드를 보면 #if 를 사용하는것을 볼 수 있습니다.
void Awake()
{
// Get the Ad Unit ID for the current platform:
#if UNITY_IOS
_adUnitId = _iOSAdUnitId;
#elif UNITY_ANDROID || UNITY_EDITOR
_adUnitId = _androidAdUnitId;
#endif
// Disable the button until the ad is ready to show:
}
이는 무슨 역할을 하는지 정리해보겠습니다.
#region
#region singleton
public static GameManager Instance;
private void Awake()
{
if(Instance == null)
{
Instance = this;
}
}
#endregion
과도하게 긴 코드를 가릴때 사용하는 기능입니다.
Visual Studio 에서는 기본적으로 함수, 클래스 단위로 코드블록을 만들어줘서 해당 부분을 최소화 하는것을 지원합니다.
#region의 경우, 사용자가 지정한 만큼의 코드블록을 만들어주는 기능으로, 과도하게 과도하게 긴 코드에 적용하여 보이는 코드의 길이를 줄일 수 있습니다.
#region <블록이름> 형태로 만들며 끝에 #endregion 을 선언하여 코드블록이 끝났음을 선언해주어야합니다.
개인적으로는 싱글톤 패턴과 같은 만들어준 이후 추가적인 수정이 거의 필요 없는 코드에 적용하는편 입니다.
#if
전처리에서 사용되는 조건문입니다.
해당 조건문의 경우, 빌드 단계에서 처리되며 해당 조건에 따라 지정된 코드를 포함해서 빌드할지, 제외할지를 결정합니다.
광고에 사용되는 RewardedButton.cs를 보겠습니다.
void Awake()
{
// Get the Ad Unit ID for the current platform:
#if UNITY_IOS
_adUnitId = _iOSAdUnitId;
#elif UNITY_ANDROID || UNITY_EDITOR
_adUnitId = _androidAdUnitId;
#endif
// Disable the button until the ad is ready to show:
}
해당 스크립트에는 #if UNITY_IOS 와 #elif UNITY_ANDROID || UNITY_EDITOR, #endif 로 이루어져있습니다.
#endif의 경우 #endragion 과 같이 #if 문이 끝났음을 선언하고, #if 와 #elif 는 해당 조건이 충족되면 이 부분을 사용하고, 조건에 맞지 않으면 사용되지 않습니다.
해당 코드의 경우, 실행시 IOS 운영체제일경우 _adUnitId 변수가 _iosAdUnitId 변수로 초기화되고 안드로이드 운영체제이거나 유니티 에디터일경우 _androidAdUnitId 로 초기화 되도록 설정되어 있습니다.
해당 UNITY_IOS 와 UNITY_ANDROID 의경우 유니티 에디터에 자체적으로 등록되어있는 조건부로 다음 링크에서 확인할 수 있습니다.
https://docs.unity3d.com/kr/2021.3/Manual/PlatformDependentCompilation.html
만약, 이러한 조건부 컴파일을 만들어서 사용할 경우
Project Setting - Player - Other Setting 의 Script Compilation 에 조건의 이름을 추가하여 사용할 수 있습니다.
단, 해당 이름이 Script Compilation 에 있으면 true, 없으면 false로 작동하기 때문에 실제 빌드 전에 해당 부분을 확인해서 빌드시 코드가 추가되지 않도록 해줄 필요가 있습니다
'사전캠프 > Unity' 카테고리의 다른 글
C# 기능 - Linq (0) | 2024.09.03 |
---|---|
구글 기반 광고 만들기 - 구글 애드몹 (0) | 2024.08.28 |
4주차 과제 - 30초가 지나면 게임 끝내기 (0) | 2024.08.26 |
Unity 기능 - Input System (0) | 2024.08.22 |
3주차 과제 - 해적고양이 만들기 (0) | 2024.08.22 |