我疯了......我错过了一些东西,我看不出来的东西?!?!
我创建了一个名为" GAME_SETTINGS"在gameSparks管理区域内并将其包含在其中:
{
"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,以便我可以从其他脚本调用它们...
真的希望在这件事上提供帮助,并提前感谢: - )
答案 0 :(得分:2)
我实际上为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);
}
});
}
希望这可以解决您的问题。如果您有任何其他问题,请随时访问我们的网站并与我们联系。 此致,帕特里克。
答案 1 :(得分:0)
注意:这个答案假定API没有办法将其转换为一个可以轻松操作/解析的好对象,因此它会使用某个类将其自身转换。但是,您的API很可能在某处提供了这样的功能,因此您最好再次查看文档。我猜它在https://api.gamesparks.net/#getpropertyrequest附近。
您已经拥有JSON文档,您所要做的就是解析它。在JavaScript文件中比在C#中更容易,但您也可以在那里使用JsonUtils
类,请参阅http://docs.unity3d.com/Manual/JSONSerialization.html。让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");
}
});
您可能需要在类的数据类型中使用某些mofication(例如,如果其中可能存在实际字符串,则将object scriptData
设为string scriptData
),但应该是它。玩得开心。