Я не знаком с пользовательскими тегами SO, поэтому надеюсь, что это сработает: @aaron
Это самый близкий вопрос, который я мог найти, который относится к моей проблеме, но это не совсем проблема. (Я попробовал Google, Bing и собственный поиск SO.) .com/questions/25014006/nullreferenceexception-with-parseobjects-in-array-of-pointers
Моя проблема: у меня есть игра Unity Web-Player, которая взаимодействует как с Facebook, так и с Parse. после решения многих проблем в нем у меня есть это, где он легко подключается к Facebook, извлекает информацию о профиле пользователя и изображение. Затем он пытается подключиться к синтаксическому анализу, чтобы зарегистрировать пользователя в синтаксическом анализе, чтобы получить данные, связанные с игрой (например, рекорды, статистику валюты, бонусы и т. д.), и когда он пытается это сделать, я получаю исключение NullReferenceException. Конкретное содержание сообщения об ошибке:
«NullReferenceException: ссылка на объект не указывает на экземпляр объекта в GameStateController.ParseFBConnect (System.String userId, System.String accessToken, DateTime tokenExpiration) [0x0001a] в C:...\Assets\Scripts\CSharp\CharacterScripts\GameStateController .cs:1581 в GameStateController.Update () [0x0011f] в C:\Users\Michieal\Desktop\Dragon Rush Game\Assets\Scripts\CSharp\CharacterScripts\GameStateController.cs:382"
Код, который генерирует это сообщение об ошибке:
public void ParseFBConnect(string userId, string accessToken, DateTime tokenExpiration)
{
Task<ParseUser> logInTask = ParseFacebookUtils.LogInAsync (userId, accessToken, tokenExpiration).ContinueWith<ParseUser> (t =>
{
if (t.IsFaulted || t.IsCanceled)
{
if (t.IsCanceled)
Util.LogError ("LoginTask::ParseUser:: Cancelled. >.<");
// The login failed. Check the error to see why.
Util.LogError ("Error Result: " + t.Result.ToString ());
Util.LogError ("Error Result (msg): " + t.Exception.Message);
Util.LogError ("Error Result (inmsg): " + t.Exception.InnerException.Message);
}
if (t.IsCompleted)
{ // No need to link the user to a FB account, as there are no "real" (non fb) accounts yet.
Util.Log ("PFBC::Login result reports successful. You Go Gurl!");
// Login was successful.
user = t.Result; // assign the resultant user to our "user"...
RetryPFBC = false;
return user;
}
return t.Result;
});
if (user.ContainsKey ("NotNew"))
{ // on true, then we don't have to set up the keys...
Util.Log ("User, " + user.Username + ", contains NotNew Key.");
}
else
{
CreateKeys (); // Create Keys will only build MISSING Keys, setting them to the default data specifications.
user.Email = Email;
user.SaveAsync (); // if we have created the keys data, save it out.
}
}
Ему передаются правильные (после аутентификации) значения Facebook (FB.UserId, FB.AccessToken, FB.AccessTokenExpiresAt) в указанном порядке. Я использую FB Sdk версии 6.0.0 и Parse Unity SDK версии 1.2.16.
В файле журнала вместо каких-либо комментариев в debug.log/Util.log появляется ошибка «Нулевая ссылка» (см. выше), за которой следует «О анализе URL-адреса: https://api.parse.com/1/classes/_User
Проверка того, является ли https://api.parse.com/1/classes/_User действительный домен
Проверка запроса-хоста: api.parse.com на соответствие действительному домену: *"
И на этом он просто остановился. Итак, я создал простой блок повтора в функции Update() для вызова функции ParseFBConnect() примерно каждые 10 секунд. Который, кажется, только заполняет мой файл журнала теми же наборами ошибок. После поиска помощи в Интернете я попытался изменить FB.AccessTokenExpiresAt на DateTime.UtcNow.AddDays(1), поскольку другие говорили, что это работает для них. Кажется, я не могу заставить ни работать на меня. Когда я проверяю панель инструментов в Parse, чтобы увидеть, показывает ли она какие-либо обновления или активность, этого не происходит, и не было уже несколько дней. Порядок выполнения скрипта следующий:
Parse.ParseInitialzeBehaviour -- -2875 (самое первое) Загрузчики Facebook (FB, Editor, Canvas и т. д.) -- от -1000 до -900 GameStateController -- -875 ... Итак, я знаю, что загружается Parse.ParseInitializeBehaviour сначала (еще один результат поиска), и я отследил NullReference до Parse.Unity.dll, изменив, где хранится метод входа в систему; GSC находится на игроке (Игрок запускается в заставке и остается на протяжении всей игры). Я также попытался поместить Parse.ParseInitializeBehaviour в игровой объект Player и в пустой игровой объект (с помощью простого скрипта dontdestroy(gameObject)). И мой идентификатор приложения и мой ключ DotNet правильно заполнены на объекте.
Когда я впервые настроил синтаксический анализ и в текущей производственной версии игры, он может успешно создать учетную запись пользователя на основе приведенного выше фрагмента кода. Теперь он просто ломается при попытке разобрать URL...
Итак, мой вопрос: что я делаю неправильно? У кого-нибудь еще есть эта проблема? и есть ли у кого-нибудь идеи/предложения/и т. д., что делать, чтобы исправить это? Я действительно просто хочу, чтобы это работало и чтобы пользователь мог войти в систему, чтобы я мог получить его данные и продолжить взламывать другие вещи в моей игре: D
Любая помощь приветствуется!! и я благодарю вас за то, что нашли время, чтобы прочитать это.