Appearance
网络相关
网络相关 C# 学什么
你先把网络理解成一句话:客户端把“我要做什么”变成数据,发给服务器;服务器处理后,把结果再变成数据发回来。
在 Unity 游戏客户端里,网络相关 C# 主要学这些:
- HTTP / REST 登录、注册、背包、商城、排行榜、公告、配置拉取,通常都走 HTTP。Unity 里最常用的是
UnityWebRequest。 - 请求和响应 请求包含:
URL、Method、Header、Body。 响应包含:状态码、响应内容、错误信息、业务码。 - JSON / DTO 网络不能直接传一个 Unity 对象,通常要转成 JSON。 DTO 就是“专门用来传输数据的类”,比如
LoginRequest、LoginResponse。 - 异步 网络不会立刻返回,所以要用
coroutine或async/await等待结果。重点是:不要卡住 Unity 主线程。 - WebSocket 适合聊天、房间状态、实时推送、长连接消息。它不是“一问一答”,而是连接保持着,服务器可以主动推消息。
- TCP / UDP
TCP可靠、有序,但你要自己处理“包边界”。UDP快,但可能丢包、乱序,适合实时位置、快照同步等低延迟场景。 - 安全与稳定 要处理超时、断线、重连、重复请求、token 过期。客户端永远不能作为可信来源,关键数据必须由服务器校验。
UnityWebRequest 最小例子
c
using System.Collections;
using UnityEngine;
using UnityEngine.Networking;
public class LoginTest : MonoBehaviour
{
IEnumerator GetPlayerInfo()
{
using UnityWebRequest req = UnityWebRequest.Get("https://example.com/api/player");
req.timeout = 10;
yield return req.SendWebRequest();
if (req.result != UnityWebRequest.Result.Success)
{
Debug.LogError(req.error);
yield break;
}
string json = req.downloadHandler.text;
Debug.Log(json);
}
}DTO + JSON 例子
c
using System;
using UnityEngine;
[Serializable]
public class LoginRequest
{
public string username;
public string password;
}
[Serializable]
public class LoginResponse
{
public int playerId;
public string token;
public string nickname;
}
string json = JsonUtility.ToJson(new LoginRequest
{
username = "test",
password = "123456"
});学习顺序
先学 UnityWebRequest + HTTP,再学 JSON DTO,然后学 异步等待、超时和错误处理,最后再碰 WebSocket、TCP、UDP。这样路线最稳,不会一上来被底层网络绕晕。
参考链接Unity Web Request 手册UnityWebRequest APIUnity JsonUtilityC# async/awaitMicrosoft TcpClientMicrosoft UdpClientMicrosoft ClientWebSocket