我不太熟悉SO的用户标签,所以我希望这能行得通:@aaron
这是我能找到的与我的问题最接近的问题,但这并不完全是问题所在。(我试过谷歌、必应和SO自己的搜索引擎。) https://stackoverflow.com/questions/25014006/nullreferenceexception-with-parseobjects-in-array-of-pointers
我的问题是:我有一款Unity Web播放器游戏,可以同时与Facebook和Parse接口。在解决了其中的许多问题后,我有它的地方,它将很容易地连接到Facebook,拉用户的个人资料和图片。然后,它尝试连接到parse以将用户登录到parse,以检索他们与游戏相关的数据(如高分、货币统计数据、加电等)。当它尝试这样做时,我会得到一个NullReferenceException。错误消息的具体内容如下:
"NullReferenceException:未将对象引用设置为位于C:\Users\Michieal\Desktop\Dragon Rush Game\Assets\Scripts\CSharp\CharacterScripts\GameStateController.cs:382“中C:...\Assets\Scripts\CSharp\CharacterScripts\GameStateController.cs:1581中的GameStateController.ParseFBConnect (System.String userId,System.String accessToken,DateTime tokenExpiration) 0x0001a处的GameStateController.Update () 0x0011f处的对象实例
生成此错误消息的代码为:
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.
}
}它将按该顺序传递适当的(post身份验证)Facebook值(FB.UserId、FB.AccessToken、FB.AccessTokenExpiresAt)。我使用的是FB Sdk版本6.0.0和Parse Unity SDK版本1.2.16。
在日志文件中,它不是执行任何debug.log/Util.log注释,而是执行"Null Reference“错误(上面),然后是"About to parse url:https://api.parse.com/1/classes/_User”
检查https://api.parse.com/1/classes/_User是否为有效域
正在检查有效域的request-host: api.parse.com:*“
这就是它刚刚停止的地方。因此,我在Update()函数中构建了一个简单的重试代码块,每10秒左右调用一次ParseFBConnect()函数。它似乎只用相同的错误集填满了我的日志文件。在互联网上搜索帮助后,我尝试将FB.AccessTokenExpiresAt更改为DateTime.UtcNow.AddDays(1),因为其他人说这对他们有效。我似乎也不能让他们为我工作。当我在Parse中检查仪表板以查看它是否显示任何更新或活动时,它没有,并且已经有几天没有了。脚本执行顺序如下:
Parse.ParseInitialzeBehaviour -2875 (第一件事) Facebook loaders (FB,编辑器,Canvas等) -1000到-900 GameStateController -875 ...因此,我知道Parse.ParseInitializeBehaviour是首先加载的(另一个搜索结果),我已经通过更改登录方法的存储位置来跟踪NullReference到Parse.Unity.dll;GSC在播放器上(玩家在闪屏中启动,并在整个游戏中保持不变)。我还尝试将Parse.ParseInitializeBehaviour放在玩家游戏对象上和一个空的游戏对象上(上面有一个简单的不销毁( gameobject )脚本)。而且,我已经在对象上正确填写了我的应用程序ID和DotNet密钥。
当我第一次设置parse时,在游戏的当前生产版本上,它可以根据上面的代码片段成功地创建一个用户帐户。现在,它只是在尝试解析url时中断...
所以,我的问题是:我做错了什么?其他人也有这个问题吗?有没有人有任何想法/建议/等等,关于如何解决这个问题?我真的只想这样做,让用户登录,这样我就可以抓取他们的数据,然后继续破坏我游戏中的其他东西:D
非常感谢您的帮助!感谢您抽出时间来阅读这篇文章。
发布于 2014-09-04 16:49:07
这个问题的答案如下:backend as a service - Bing
Ditch parse因为它不能很好地与Unity3d一起工作,支持(显然,从这个问题的答案和其他需要帮助它工作的人的问题来判断)非常缺乏,并且大多数,如果不是全部,展示如何使用它的例子都是坏的/缺失的部分/等等。我认为这是创建者的失败。我也认为这是虚假广告。所以,回答这个问题-解析是浪费时间,切入正题,抓取一些确实有效的东西,有真实的工作示例,并且是由知道如何在UNITY3d环境中编程的人维护的。
一个很好的例子就是Photon网络服务,Shephertz.com的App42,微软的Azure等等。如果你排除PARSE,这应该是不需要动脑筋的。我已经包含了一个必应搜索链接,你也可以快速搜索游戏后端(你会找到博客和评论)。
我强烈建议你阅读这些服务的评论,阅读问题(并注意它们是否得到了回答,或者,在Parse的情况下,如果他们只是关闭了论坛,而不是回答他们的客户)。而且,只要跳过他们给出的使用他们产品的例子。如果他们展示了它是如何工作的,以及预期的结果(就像MSDN一样),你会有更好的和更容易的让它工作的时间。
仅供参考-我的游戏现在拥有所有的后端集成,保存/创建/获取用户和他们的数据,有一个存储,并且正在进行中,因为我放弃了解析。
为了纠正错误,我使用了用于unity的Parse 1.2.16和用于Unity SDK 6.0.0的Facebook。我尝试了Parse 1.2.14,结果相同,我同时尝试了Unity 4.5.2和4.5.3。我对Parse的看法是基于他们的文档,这两个API版本,以及我试图让它工作的非常漫长的日子。然后我补充说,这里根本没有人回答这个问题(遗憾的是,Stack Over flow是Facebook首选的帮助/支持论坛。他们甚至在他们的博客、帮助文档等中说,如果你有问题-在Stack Overflow.com上发布你的问题和相关的标签。我确实做到了。)
哦,Parse的最终星级(澄清一下)是"-2 / 5“--也就是负2星...满分5分。就像在,逃离它...很远很远。我只是想澄清一下。
https://stackoverflow.com/questions/25434268
复制相似问题