Я пытаюсь построить игру Unity на android / iOS, проверив опцию разработки сборки (чтобы я мог использовать профилировщик для отладки), но функция SceneManager.LoadScene не работает. Я пробовал имя сцены и индекс в качестве параметров функции, но оба не работали.
Важно отметить, что игра отлично работает, если я уберу галочку с опции сборки сборки. В настоящее время я использую Unity 2019.3.5.f1.
![enter image description here](https://i.stack.imgur.com/7KfOt.png)
Редактировать:
Я заметил, что сцена загружается без проблем, когда я запускаю SceneManager.LoadScene
из функции Start()
. Однако в большинстве частей моего кода я запускаю SceneManager.LoadScene
из других функций, таких как обработчики событий.
Вот несколько примеров кода:
- Я запускаю эту функцию в
Awake()
. Достигает SceneManager.LoadScene("Credentials");
, затем останавливается:
private void ConfirmGooglePlayerServicesRequirements()
{
Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
var dependencyStatus = task.Result;
if (dependencyStatus == Firebase.DependencyStatus.Available)
{
// Create and hold a reference to your FirebaseApp,
// where app is a Firebase.FirebaseApp property of your application class.
app = Firebase.FirebaseApp.DefaultInstance;
InitializeFirebase();
if (!signedIn)
SceneManager.LoadScene("Credentials");
}
else
{
Debug.LogError(System.String.Format(
"Could not resolve all Firebase dependencies: {0}", dependencyStatus));
// Firebase Unity SDK is not safe to use here.
}
});
}
Это функция Firebase, которая вызывается всякий раз, когда пользователь входит / выходит. Он вызывает событие с именем
signedInEvent
, которое обрабатывается функцией другого скрипта, который запускает
SceneManager.LoadScene
.
void AuthStateChanged(object sender, System.EventArgs eventArgs)
{
if (auth.CurrentUser != user)
{
signedIn = user != auth.CurrentUser && auth.CurrentUser != null;
if (!signedIn && user != null)
{
Debug.Log("Signed out " + user.UserId);
}
user = auth.CurrentUser;
if (signedIn)
{
Debug.Log("Signed in " + user.UserId);
displayName = user.DisplayName ?? "";
emailAddress = user.Email ?? "";
userId = user.UserId ?? "";
signedInEvent.Invoke(displayName, emailAddress, userId);
}
}
}
Примечания:
- Scenes / FirstScene включен. Он был отключен, когда я сделал снимок экрана выше, потому что я проводил некоторые тесты.
- Я получил эту ошибку, используя adb (android debug bridge) некоторое время go, когда я запускал игру в режиме разработки. Это может быть связано с этой проблемой:
FindGameObjectWithTag can only be called from the main thread
Спасибо!