【发布时间】:2022-01-20 06:07:19
【问题描述】:
我正在开发一款多人游戏。我有一个朋友在 Swagger.io 上开发 API。所以这是我的问题:
我想使用我可以使用的 Task 函数,而不是 Unity 自己的 UnityWebRequest 函数。 我看了一下,做了一些研究,写了如下代码。
private async Task<T> Send<T>(string service, object obj)
{
RestClient client = new RestClient(baseUrl);
RestRequest request = new RestRequest(service)
{
RequestFormat = DataFormat.Json,
Method = Method.POST,
};
#if UNITY_ANDROID
uniqueID = SystemInfo.deviceUniqueIdentifier;
platform = "1";
#endif
#if UNITY_IOS
uniqueID = UIDevice.identifierForVendor
platform = "0";
#endif
request.AddHeader("DeviceID", uniqueID);
request.AddHeader("BundleID", Application.identifier);
request.AddHeader("BuildID", "0");
request.AddHeader("Platform", platform);
request.AddHeader("Version", "0");
request.AddJsonBody(obj);
var response = await client.ExecuteAsync(request);
if (response.Content != null && response.StatusCode == HttpStatusCode.OK)
{
var jsonSerializerSetting = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, MissingMemberHandling = MissingMemberHandling.Ignore };
var result = JsonConvert.DeserializeObject<T>(response.Content, jsonSerializerSetting);
return result;
}
else
{
return default;
}
因为它是一个异步函数,所以我用 await 调用它没有任何问题。像这样:
我有一些课程可以响应其他课程:
[Serializable]
public class WelcomeRequest : Response
{
public string Location;
public string Language;
}
[Serializable]
public class WelcomeRequest : Response
{
public string Location;
public string Language;
}[Serializable]
public class WelcomeResponse : Response
{
public WelcomePayload Payload;
}
[Serializable]
public class WelcomePayload : Response
{
public Player Player;
public Settings Settings;
public Season Play;
public Season Purchase;
public Game GameOfSeason;
public Game[] Games;
public double PrizePool;
}
(我知道这是一个大项目,子类很多。我不想让你为我写代码,我只是想让你解释一下我写的代码的逻辑和一个我可以参考的例子. 更别说我一个人在努力了。除了你我没有任何朋友可以帮助你。) 我能够从服务器接收 json 格式的文件。但是由于这个函数只返回对象,我不能分配类的子对象。我是否需要再次将其转换为 json 格式并反序列化?由于我之前使用的是 Firebase 基础架构,因此我能够毫无问题地进行通信。我查找了 Restsharp Unity 教程,但没有找到。你能帮助我吗?至少如果你指导我,我会尝试自己解决它。如果我没有正确表达自己,我很抱歉,因为这是我在这个网站上的第一篇文章,我不太了解规则。 无尽的感谢你们。
【问题讨论】:
-
我不明白你的问题...
But since this function only returns the object, I cannot assign sub-objects of the class... 为什么不呢?如果这返回让我们说一个WelcomeResponse是什么阻碍你访问例如Payload.Player等等...? -
我可以从服务器获取数据。例如 Language = ENG,LanguageCode = 0,LanguageFlag = ENGFLAG 等。我可以获取数据,但是当我尝试从例如 Localization 类设置默认语言(包括上述信息,如 LanguageCode )时,我无法解析 json 文件。由于我将其保留为数组,因此我将该问题列为数组并解决了它。
标签: c# api unity3d backend restsharp