У меня довольно странная проблема, я использую unity 2017.3.1f1 Personal.
Когда я создаю APK и копирую этот файл на телефон и устанавливаю его из файлового менеджера телефона, я не могу переключиться из главного меню на первую сцену, игра вылетает при загрузке сцены или просто зависает после выбора, подумал это было из-за кода Async, поэтому я попробовал без него, но никакого результата не получил.
Когда я выбираю Build and Run, этого вообще не происходит, и приложение работает нормально, чего мне здесь не хватает или как это исправить? Уже перезагружал единство и компьютер много раз.
Вот код, который я использую для переключения между сценами, включая код без асинхронного режима:
public void Car1()
{
selectedCar = 0;
canvasManagerGO.GetComponent<CanvasManager>().Close();
SceneManager.LoadScene("W" + selectedWorld + "-L1", LoadSceneMode.Single);
}
public void Car2()
{
selectedCar = 1;
canvasManagerGO.GetComponent<CanvasManager>().Close();
SceneManager.LoadScene(1, LoadSceneMode.Single);
}
public void Car3()
{
selectedCar = 2;
canvasManagerGO.GetComponent<CanvasManager>().Close();
StartCoroutine(ChangeScene("W" + selectedWorld + "-L1"));
public IEnumerator ChangeScene(string sceneName)
{
loadingCanvas.SetActive(true);
AsyncOperation asyncOperation = SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Single);
while (!asyncOperation.isDone)
{
float progress = Mathf.Clamp01(asyncOperation.progress / .9f);
//Debug.Log(asyncOperation.progress);
slider.value = progress;
yield return null;
}
yield return null;
}
Автомобиль 1 и 2 имеют прямой режим без использования сопрограммы для изменения сцены, и ни один из них не работает, код вообще не содержит ошибок или, по крайней мере, консоль ничего не сообщает, я также пробовал с разными настройками сборки и сжатием, а также с или без разработки, чтобы проверить профилировщик и ничего, всем спасибо :)
Ну, телефон, на который я устанавливаю, представляет собой модель Alcatel 5054s (Pop3) с Android 5.1.1, время выполнения сценариев стабильно (эквивалент .NET 3.5), и нет, я не пробовал отладку adb, не знаю, как использовать его еще нет :( по вашему опыту, что я должен искать в этом отладчике?
Вы можете использовать его для чтения любых ошибок Unity spits (очень похоже на подключенные игроки внутри единства), но, кроме того, вы можете использовать его для чтения любых ошибок, происходящих за пределами Unity (например, вызванных ОС)
если это ошибка ОС, можно ли ее отремонтировать? Я думаю о будущем здесь, но если это не проблема или ошибка с единством, что было бы проще исправить? возможно переключение версии Unity? Я не понимал, что эти сборки несовместимы с некоторыми телефонами или чем-то подобным, поэтому я не могу представить, сложно ли изменить их за пределами единства.
перекрестная проверка того, что вы добавили все сцены в сборку
Я уже сделал это и нашел решение, которое я опубликовал ниже, но не могу сказать, как и почему он исправил сборку, и будет ли это универсальное исправление, но оно сработало с моим тестовым устройством.
Я запустил отладчик ADB и ничего не нашел, приложение просто показывает пустую строку, и она перестает работать, я даже поставил лунную консоль в свой проект, и это здорово помогло увидеть, что единство ошибок не отображается, но не сильно помогло или.
Решение, которое я нашел, было на этом видео https://thewikihow.com/video_OxLa2uPW0dI Я следил за точными настройками для «настроек плеера -> другие настройки», которые он использовал, и, по-видимому, это решило проблему, по крайней мере, на данный момент, но не могу указать, какой параметр вызывал такое поведение.
На каком устройстве вы строите? Какая у вас версия среды выполнения сценариев? (Правка> Настройки проекта> плеер> Другие настройки). Если это экспериментальная версия 4.6, попробуйте вернуться к версии 3.5. Это было проблемой для меня раньше, когда я строил на oneplus и некоторых телефонах samsung, что-то подобное происходило. Также вы пробовали использовать отладку adb developer.android.com/studio/command-line/adb, чтобы узнать, есть ли ошибки во время выполнения?