网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
01月16日
漏签
0
天
unity3d吧
关注:
116,873
贴子:
562,170
看贴
图片
吧主推荐
视频
游戏
首页
上一页
1
2
46
回复贴,共
2
页
,跳到
页
确定
<<返回unity3d吧
>0< 加载中...
回复:关于FPS游戏开发的一些个人理解(2)
只看楼主
收藏
回复
Not_Gate
Renderer
6
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
收藏了 期待UDP部分
影随我殇化为劫
Collider
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
这里摘两段从博客上截下来小改一下的代码,实现了最简单的udp,代码非常简单很容易理解,使用socket进行udp的对话,收发都是在单线程内,服务端大神可自觉忽略此楼,不懂的小白读两遍也能轻松理解。
实现了基本的udp,我们就要来开始正式的异步多线程+高频更新的网络IO开发了。
2026-01-16 08:07:21
广告
不感兴趣
开通SVIP免广告
影随我殇化为劫
Collider
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
using UnityEngine;
namespace UDP
{
class Program
{
void Client()
{
byte[] data = new byte[1024];
string stringData;
//构建TCP 服务器
Debug.Log("This is a Client, host name is " + Dns.GetHostName());
//设置服务IP,设置TCP端口号
IPEndPoint ip = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8001);
//定义网络类型,数据连接类型和网络协议UDP
Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
string welcome = "Hello! ";
data = Encoding.ASCII.GetBytes(welcome);
server.SendTo(data, data.Length, SocketFlags.None, ip);
IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
EndPoint Remote = (EndPoint)sender;
data = new byte[1024];
//对于不存在的IP地址,加入此行代码后,可以在指定时间内解除阻塞模式限制
int recv = server.ReceiveFrom(data, ref Remote);
Debug.Log("Message received from" + Remote.ToString());
Debug.Log(Encoding.ASCII.GetString(data, 0, recv));
for(int i = 0; i < 100; ++i)
{
server.SendTo(Encoding.ASCII.GetBytes("From Server: " + i), Remote);
//发送一条信息
data = new byte[1024];
recv = server.ReceiveFrom(data, ref Remote);
stringData = Encoding.ASCII.GetString(data, 0, recv);
Debug.Log(stringData);
}
Debug.Log("Stopping Client.");
server.Close();
}
void Server(){
int recv;
byte[] data = new byte[1024];
//得到本机IP,设置TCP端口号
IPEndPoint ip = new IPEndPoint(IPAddress.Any, 8001);
Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
//绑定网络地址
newsock.Bind(ip);
Debug.Log("This is a Server, host name is " + Dns.GetHostName());
//等待客户机连接
Debug.Log("Waiting for a client");
//得到客户机IP
IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
EndPoint Remote = (EndPoint)(sender);
recv = newsock.ReceiveFrom(data, ref Remote);
Debug.Log("Message received from : " + Remote.ToString());
Debug.Log(Encoding.ASCII.GetString(data, 0, recv));
//客户机连接成功后,发送信息
string welcome = "你好 ! ";
//字符串与字节数组相互转换
data = Encoding.ASCII.GetBytes(welcome);
//发送信息
newsock.SendTo(data, data.Length, SocketFlags.None, Remote);
while (true)
{
data = new byte[1024];
//发送接收信息
recv = newsock.ReceiveFrom(data, ref Remote);
Debug.Log(Encoding.ASCII.GetString(data, 0, recv));
newsock.SendTo(Encoding.ASCII.GetBytes("Message Received! Thank you!"), recv, SocketFlags.None, Remote);
}
}
}
}
影随我殇化为劫
Collider
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
使用上边讲过的多线程与线程安全数据容器的知识,我们来实现一波异步IO,多线程异步不会再有udp对话那种“你一言必须我一语”的堵塞,可以完美的进行高频收发(注意这两个函数可以同时执行时可以使用同一个socket的):
.Net作为非常优秀的CPU密集型运算架构,有着其他语言,其他平台无法比拟的轻量级异步能力,我们使用简单的几句就可以实现一套异步架构了。大家可以尝试一下,给send函数的queue中enqueue的数据是不是会添加到receive的queue中。
昌维001
Scene
13
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
看看
影随我殇化为劫
Collider
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
这里纠正一下顶上的错误,ref是不支持lambda表达式的,我们这里的endThreadSign可以随意定义一个变量,控制循环的结束。(Task是不支持Thread那种强制终止的,只能用这样的办法来软终止)。
影随我殇化为劫
Collider
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
这是如何发送可靠UDP的教程,如开枪等事件,是需要保证可靠的,服务端在没收到客户端的返回信息时,每隔一段时间就应该发送一次信息,而客户端则应该对信息作出反应。
_JackCat_
Unitor
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
能不能把你的demo或者成品发上来让大家瞧瞧?听你说得头头是道,好像很厉害的样子
2026-01-16 08:01:21
广告
不感兴趣
开通SVIP免广告
愿此刻无痕
Renderer
6
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
好厉害...完全看不懂i
_离合幻梦
Prefab
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
好帖
楼主加油
wuli大佬
Collider
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
楼主,我想问下,做类似于CS的游戏时,到底用的是人物整个模型还是单单两条手臂+一把枪,如果只是手臂的话,在其他玩家的视角里为什么是整个人,,,,渴望解答
wuli大佬
Collider
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
如果是整个人的话,为啥好多人去做两条手的模型。。。。
影随我殇化为劫
Collider
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
圣诞节假期休息一下,这几天就开更!哈哈
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示