Есть ли способ проверить в Unity, были ли Google Mobile Games импортированы с настраиваемыми глобальными определениями?

Я не могу найти объяснения, как работают Custom Global Defines.

Я ожидаю, что это будет примерно так:

#if Admob
//Complete code here (Disabled when Google Play Games isn't imported
#endif

Или есть другой, чтобы это сделать?

2
user10135555 22 Сен 2018 в 14:38

1 ответ

Лучший ответ

Согласно документации Unity:

Можно добавить к встроенному выбору директив #define, указав свои собственные. Откройте панель «Другие настройки» в настройках проигрывателя и перейдите к текстовому полю «Сценарии определения символов».

Если он там не определен, вам следует добавить собственное определение вручную, отделив его от других определений с помощью ;. Тогда вы сможете использовать свое собственное определение, как вы указали в своем вопросе.

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

Идея этого кода не принадлежит мне, его источник находится в эту ссылку.

Например. для пользовательского определения "GOOGLE_MOBILE_GAMES" вы должны написать что-то вроде этого:

public class ToggleDefineSymbol : Editor
{
    [MenuItem("Tools/Set GOOGLE_MOBILE_GAMES")]
    public static void Set_GOOGLE_MOBILE_GAMES()
    {
        string symbols = PlayerSettings.GetScriptingDefineSymbolsForGroup(
            BuildTargetGroup.Standalone);

        if (!symbols.Contains("GOOGLE_MOBILE_GAMES"))
        {
            PlayerSettings.SetScriptingDefineSymbolsForGroup(
                BuildTargetGroup.Standalone, symbols + ";GOOGLE_MOBILE_GAMES");
        }
    }

    [MenuItem("Tools/Unset GOOGLE_MOBILE_GAMES")]
    public static void Unset_GOOGLE_MOBILE_GAMES()
    {
        string symbols = PlayerSettings.GetScriptingDefineSymbolsForGroup(
            BuildTargetGroup.Standalone);

        if (symbols.Contains("GOOGLE_MOBILE_GAMES"))
        {
            symbols = symbols.Replace(";GOOGLE_MOBILE_GAMES", "");
            PlayerSettings.SetScriptingDefineSymbolsForGroup(
                BuildTargetGroup.Standalone, symbols);
        }
    }
}

Поместите этот сценарий в папку с именем Editor в папке Assets.

Вы также можете изменить аргумент BuildTargetGroup в соответствии с вашими потребностями. Если вам это нужно для дальнейших пользовательских определений, просто скопируйте указанные выше функции, заменив "GOOGLE_MOBILE_GAMES" любым пользовательским определением, которое вам нужно.

2
sɐunıɔןɐqɐp 22 Сен 2018 в 19:37