Skip to content

网络相关

unity-csharp-networking-system

网络相关 C# 学什么

你先把网络理解成一句话:客户端把“我要做什么”变成数据,发给服务器;服务器处理后,把结果再变成数据发回来。

在 Unity 游戏客户端里,网络相关 C# 主要学这些:

  1. HTTP / REST 登录、注册、背包、商城、排行榜、公告、配置拉取,通常都走 HTTP。Unity 里最常用的是 UnityWebRequest
  2. 请求和响应 请求包含:URLMethodHeaderBody。 响应包含:状态码、响应内容、错误信息、业务码。
  3. JSON / DTO 网络不能直接传一个 Unity 对象,通常要转成 JSON。 DTO 就是“专门用来传输数据的类”,比如 LoginRequestLoginResponse
  4. 异步 网络不会立刻返回,所以要用 coroutineasync/await 等待结果。重点是:不要卡住 Unity 主线程。
  5. WebSocket 适合聊天、房间状态、实时推送、长连接消息。它不是“一问一答”,而是连接保持着,服务器可以主动推消息。
  6. TCP / UDPTCP 可靠、有序,但你要自己处理“包边界”。 UDP 快,但可能丢包、乱序,适合实时位置、快照同步等低延迟场景。
  7. 安全与稳定 要处理超时、断线、重连、重复请求、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,然后学 异步等待超时和错误处理,最后再碰 WebSocketTCPUDP。这样路线最稳,不会一上来被底层网络绕晕。

参考链接Unity Web Request 手册UnityWebRequest APIUnity JsonUtilityC# async/awaitMicrosoft TcpClientMicrosoft UdpClientMicrosoft ClientWebSocket

文章评价

读完这篇,留下你的看法

暂无审核通过的评价。

登录账号后才能评价。

本站访客数0总站访问量0本页访问量0