Следуйте за вашими постами, я провел эксперимент.
Сначала я пытаюсь запустить приведенный ниже код на 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.
Есть два способа решить эту проблему:
Не используйте Unity Remote 5 для тестирования вашего приложения.Хотя это довольно удобный способ тестирования вашей игры, иногда он не работает так, как вы ожидали при развертывании приложения на реальном устройстве.
Использование Компиляция, зависящая от платформы ,Я рекомендую вам использовать это для разработки вашей игры на разных платформах.Как предполагает документ RuntimePlatform :
Разница между использованием RuntimePlatform и зависимой от платформы компиляции заключается в том, что использование RuntimePlatform оценивается во время выполнения, а зависимая от платформы компиляция оценивается.во время компиляции.Так что, если вы можете использовать платформо-зависимую компиляцию, не стесняйтесь ее использовать.В большинстве случаев вы можете получить одну и ту же функциональность, используя оба, и использование определений даст меньший и более быстрый код, поскольку вам не нужно проверять во время выполнения.В некоторых случаях требуется RuntimePlatform во время выполнения.
Вот пример запуска кода на платформе Android только с зависимым от платформы флагом.
void Update () {
#if UNITY_ANDROID && !UNITY_EDITOR
// Run your Android only code here.
#endif
}