Нет, Unity не будет включать код в #if UNITY_EDITOR
в сборках.
Вы можете проверить это на следующем примере:
void Start ()
{
#if UNITY_EDITOR
Debug.Log("Unity Editor");
#else
// note that this block of code is not included while working in the Editor,
// but it will be included when building to Android
// (or any other build target outside the editor)
Debug.Log("Not Unity Editor");
#endif
#if UNITY_ANDROID
Debug.Log("Android");
#endif
#if UNITY_STANDALONE_WIN
Debug.Log("Stand Alone Windows");
// Including a garbage line of code below to show
// that code really isn't included with the build
// when the build target doesn't match, e.g. set to Android
fkldjsalfjdasfkldjsafsdk;
#endif
}
Если целью сборки является Android, ваше приложение должно собираться, несмотря на ошибку компиляции, поскольку код UNITY_STANDALONE_WIN
полностью удален (и ваша IDE, вероятно, будет выделена серым цветом блока кода). Как только вы измените цель сборки на Windows, код не сможет скомпилироваться.
(Лично я предпочитаю использовать макрос Application.isEditor
над #if UNITY_EDITOR
как привычку, когда это возможно, потому что использование #if UNITY_EDITOR
с #else
может привести к разрыву сборки без до тех пор, пока не будет реализован любой код, который не может быть скомпилирован в блоке #else. Меня обычно больше волнует это, чем дополнительный бесполезный код, включаемый в мою сборку. Конечно, при использовании UnityEditor
классов использование #if UNITY_EDITOR
неизбежно. ) * * тысяча двадцать-один