Application.platform == RuntimePlatform.Android не работает - PullRequest
0 голосов
/ 06 декабря 2018

Как я уже говорил в этом другом вопросе, на который никто не ответил:

Сенсорный не работает на Unity на моем устройстве Android

Я обнаружил, что проблема моегоприложение не работало, это были строки:

if (Application.platform == RuntimePlatform.Android) {

} 

Если я уберу это условие, приложение будет работать так, как должно, но в тот момент, когда я добавлю его обратно, оно просто не будет работать.

1 Ответ

0 голосов
/ 06 декабря 2018

Следуйте за вашими постами, я провел эксперимент.

Сначала я пытаюсь запустить приведенный ниже код на Remote 5 и запустить его как отдельное приложение соответственно.

void Update () {
    Debug.LogFormat ("Application.platform: {0}", Application.platform.ToString ());
}

В приложении Remote 5, консоль печатает:

Application.platform: OSXEditor

В отдельном приложении консоль печатает:

Application.platform: Android

Очевидно, Application.platform не работает, как вы ожидали с Unity Remote 5, поэтому вашкод не работает, когда вы помещаете их в оператор if.На самом деле, ваш код работал бы без использования Remote 5.

Есть два способа решить эту проблему:

  1. Не используйте Unity Remote 5 для тестирования вашего приложения.Хотя это довольно удобный способ тестирования вашей игры, иногда он не работает так, как вы ожидали при развертывании приложения на реальном устройстве.

  2. Использование Компиляция, зависящая от платформы ,Я рекомендую вам использовать это для разработки вашей игры на разных платформах.Как предполагает документ RuntimePlatform :

Разница между использованием RuntimePlatform и зависимой от платформы компиляции заключается в том, что использование RuntimePlatform оценивается во время выполнения, а зависимая от платформы компиляция оценивается.во время компиляции.Так что, если вы можете использовать платформо-зависимую компиляцию, не стесняйтесь ее использовать.В большинстве случаев вы можете получить одну и ту же функциональность, используя оба, и использование определений даст меньший и более быстрый код, поскольку вам не нужно проверять во время выполнения.В некоторых случаях требуется RuntimePlatform во время выполнения.

Вот пример запуска кода на платформе Android только с зависимым от платформы флагом.

    void Update () {
#if UNITY_ANDROID && !UNITY_EDITOR
        // Run your Android only code here.
#endif
    }
...