если Unity включит кусок кода в apk, если я напишу его в "UNITY_EDITOR" - PullRequest
0 голосов
/ 25 июня 2018

Пример: если я напишу следующий код в файле Script.

#if UNITY_EDITOR
  Debug.Log( "I'll print in Editor only.." );
#endif

Мой вопрос заключается в том, что при создании сборки apk этот кусок кода будет добавлен в сборку apk, хотя он не будет запускаться один разустановлен на Android, или Unity не будет включать этот код в сборку APK.

Я ожидаю один из следующих ответов.

  1. Нет, Unity не будет включать этот код в APKbuild.
  2. Да, Unity будет включать его в apk, но он никогда не будет работать там и будет просто бесполезно сидеть где-то в apk.

PS

Вопрос в том, чтобы не компилировать.Я не мог получить четкий ответ в другом месте.

Ответы [ 3 ]

0 голосов
/ 25 июня 2018

Код внутри #if заявления будет скомпилирован только на указанной платформе.

Unity включает функцию, называемую зависимой от платформы компиляцией. это состоит из некоторых директив препроцессора, которые позволяют вам разделить ваш скрипты для компиляции и выполнения раздела кода исключительно для одного поддерживаемых платформ.

https://docs.unity3d.com/Manual/PlatformDependentCompilation.html

0 голосов
/ 25 июня 2018

Нет, 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 неизбежно. ) * * тысяча двадцать-один

0 голосов
/ 25 июня 2018

Нет, Unity не будет включать этот код в сборку APK.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...