Как я могу установить #define сразу после изменения define в скрипте? - PullRequest
0 голосов
/ 07 июня 2019

У меня есть тестовый код ниже.

IEnumerator Temp2()
{
    string _strDefine = "test";

    PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.Android, 
    _strDefine);

    #if test
    Debug.Log("???");
    #endif

    yield break;
}

В результате, если Define 'test' не был определен ранее, регистрировать ??? не показывает.

Я хочу определить «тест», который будет установлен сразу после настройки.

Что мне делать?

Ответы [ 2 ]

2 голосов
/ 07 июня 2019

Это не так, как вы думаете.

После изменения ScriptingDefineSymbols код должен быть перекомпилирован Unity.

Так что, пока он не перекомпилирован, вы никогда не увидитекодовый блок, завернутый в #if test препроцессоры.

→ Вы никогда не увидите влияние изменений в ScriptingDefineSymbols сразу после изменения до перекомпиляции.

1 голос
/ 07 июня 2019

ИЗД. ПОСЛЕ КОММЕНТАРИИ DER HUGO
Вы можете изменить определяемые символы с помощью скриптов, используя PlayerSettings.SetScriptingDefineSymbolsForGroup

PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.Standalone, "test");

Но тогда вам нужно заново скомпилировать код (как указано ранее в ответе derHugo), чтобы он не работал при первом запуске.

В любом случае, если вы пытаетесь это сделать, вы используете определяющие символы для чего-то, что не было предназначено. Вы должны использовать bool для вашей логики.


Если вы все еще хотите изменить определенные настройки, вы можете сделать это в editor .

Учтите также, что изменение их в редакторе приведет к автоматической компиляции скрипта (если вы явно не указали редактору не делать этого)

Правка -> Настройки проекта -> Настройки игрока.

Оттуда вы добавляете test в сценарии определения символов.

enter image description here

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