我快疯了..。我错过了什么,我看不到什么?!?!
我在gameSparks管理区域中创建了一个名为"GAME_SETTINGS“的属性,并在其中包含了以下内容:
{
"AppVersionIOS": 1,
"AppVersionAndroid": 1
}然后,我尝试在Unity中检索它,如下所示:
new GameSparks.Api.Requests.GetPropertyRequest().SetPropertyShortCode("GAME_SETTINGS").Send((response) => {
if (!response.HasErrors) {
Debug.Log("Setting Achieved: "+response.JSONString);
} else {
Debug.Log("Error Getting Settings");
}
});我可以看到我正在获取Debug.Log中的设置:
Setting Achieved: {"@class":".GetPropertyResponse","property":{"AppVersionIOS":1,"AppVersionAndroid":1},"requestId":"XXXXXXXXXXXXXXX","scriptData":null}我的问题是..。如何获取字典中的AppVersionIOS和AppVersionAndroid属性,以便从其他脚本中调用它们……
非常希望在这件事上得到帮助,并提前表示感谢:-)
发布于 2016-02-01 18:32:43
我实际上在GameSparks工作,并注意到你的问题,所以建立一个帐户来回答你。在JSON中返回的属性值是可以为空的类型:https://msdn.microsoft.com/en-us/library/1t3y8s4s.aspx
最佳实践是在值被缓存到Dictionary或其他地方之前对其进行解析。
下面的代码应该允许您获取这些属性,然后您可以根据需要将它们存储在字典中。
public void GetProperties()
{
new GameSparks.Api.Requests.GetPropertyRequest()
.SetPropertyShortCode("GAME_SETTINGS")
.Send((response) =>
{
if (!response.HasErrors)
{
print(response.JSONString);
int androidProperty = (int)response.Property.GetInt("AppVersionAndroid");
int IOSProperty = (int)response.Property.GetInt("AppVersionIOS");
print("AndroidProperty:" + androidProperty);
print("IOSProperty:" + IOSProperty);
}
else
{
Debug.LogWarning(response.JSONString);
}
});
}希望这能解决你的问题。如果您有任何其他问题,请随时前往我们的网站,并与我们一起记录门票。你好,帕特里克。
发布于 2016-01-31 08:12:34
注意:这个答案假设没有办法将它转换成一个很好的对象,这样你就可以很容易地操作/解析它,所以它自己使用一些类来转换它。但是,您的API很可能在某个地方提供了这样的函数,因此您最好再次查看文档。我猜它在 附近。
您已经有了JSON文档,所要做的就是解析它。让http://json2csharp.com/为您将JSON转换为类布局,您将获得
public class Property
{
public int AppVersionIOS { get; set; }
public int AppVersionAndroid { get; set; }
}
public class RootObject
{
public string __invalid_name__@class { get; set; }
public Property property { get; set; }
public string requestId { get; set; }
public object scriptData { get; set; }
}现在只需获取字符串并将其序列化为RootObject。
new GameSparks.Api.Requests.GetPropertyRequest().SetPropertyShortCode("GAME_SETTINGS").Send((response) => {
if (!response.HasErrors) {
Debug.Log("Setting Achieved: "+response.JSONString);
//Serialization
var info = JsonUtility.FromJson<RootObject>(response.JSONString);
//Print the AppVersionIOS property
Debug.Log("App Version iOS: " + info.Property.AppVersionIOS);
} else {
Debug.Log("Error Getting Settings");
}
});您可能需要在类的数据类型中进行一些修改(例如,如果其中可以有一个实际的字符串,则将object scriptData设置为string scriptData ),但应该就是这样。玩得开心。
https://stackoverflow.com/questions/35108280
复制相似问题