Unity
文章平均质量分 87
baixiaofei567
如果十年前没种树,那最好的时间是现在
展开
-
Unity3D网络游戏实战——通用服务器框架
前言网络游戏涉及客户端和服务端。服务端程序记录玩家数据,处理客户端发来的协议。本文就介绍一套通用客户端的实现。该框架基于Select多路复用处理网络消息,具有粘包半包处理、心跳机制等功能,还是用MySQL数据库存储玩家数据,是一套功能较完备的C#服务端程序。一般单个服务端进程可以承载数百名玩家,如果更多就需要改为分布式架构。7.1服务端架构服务端两大核心是处理客户端的消息和存储玩家数据。客户端与服务端通过TCP连接,使两者可以传递数据,服务端还连接着MySQL数据库,可将玩家数据保存到数据库中。原创 2021-11-09 11:59:33 · 12383 阅读 · 1 评论 -
Unity3D网络游戏实战——通用客户端模块
前言书中说的是搭建一套商业级的客户端网络模块,一次搭建长期使用。本章主要是完善大乱斗游戏中的网络模块,解决粘包分包、完整发送数据、心跳机制、事件分发等功能6.1网络模块设计核心是静态类NetManager,它对外提供了一系列方法NetManager.Connect(ip,port)连接服务端NetManager.Close()NetManager.Send(msgMove)发送消息,参数为协议对象,NetManager会自动把它转换成二进制数据NetManager.Update()需外部调原创 2021-11-07 02:05:56 · 928 阅读 · 0 评论 -
Unity3D网络游戏实战——深入了解TCP,解决暗藏问题
前言这一章基本属于科普章节,相信看到这篇文章的人也学习过计算机网络,所以很多基础知识,比如三握四挥这些就不多说了。5.3常用TCP参数5.3.1ReceiveBufferSize指定了操作系统读缓冲区的大小,默认值8192。缓冲区满了,发送端会暂停发送数据,较大的缓冲区可以减少发送短暂停的概率,提高效率。5.3.2SendBufferSize指定操作系统写缓冲区的大小,默认值也是8192,设定的大一点也比较好~5.3.3NoDelay默认情况TCP会使用Nagle算法发送数据,因为TCP/I原创 2021-11-04 22:49:58 · 2027 阅读 · 0 评论 -
Unity3D网络游戏实战——正确收发数据流
前言本章主要介绍和实现怎样正确和高效地处理TCP数据(数据流)。也解决了上一章我们遇到的一些问题4.1TCP数据流4.1.1系统缓冲区收到对端数据时,操作系统会将数据存入到Socket的接收缓冲区中,而且操作系统层面上的缓冲区完全由操作系统操作,程序并不能直接操作,只能通过socket.Receive、socket.Send方法来间接操作。注意:之后出现的readBuff不是发送缓冲区也不是接收缓冲区,而是用户自定义的缓冲区,用于存放两个操作系统缓冲区读取出的字节数据。4.1.2粘包半包现象粘原创 2021-11-04 15:28:26 · 3233 阅读 · 1 评论 -
Unity3D网络游戏实战——实践出真知:大乱斗游戏
前言这一章是教我们做一个大乱斗游戏。但是书中的代码有些前后不一致导致运行错误,如果你也碰到了这样的情况,可以参考我的代码我们要完成的主要有以下这些事左键操控角色行走右键操控角色攻击受到攻击掉血,队手hp为0时消失,自己hp为0时失败,掉线同理角色类的编写介绍协议、消息队列等客户端以及服务端代码角色类BaseHumanunity相关操作基本都省略了BaseHuman为角色基类CtrlHuman代表操控角色,在BaseHuman基础上多了处理鼠标操控功能SyncHuman代表同步原创 2021-11-03 00:37:17 · 2242 阅读 · 0 评论 -
Unity3D网络游戏实战——分身有术:异步和多路复用
前言前面一篇文章全部用的是阻塞API,也就是同步Socket程序,客户端一卡一顿、服务端只能一次处理一个客户端的消息,不具有实用性。所有有了异步和多路复用两种技术解决了阻塞问题。2.1什么是异步代码不需要进程一直等待下去,而是继续往下执行,直到满足条件才调用回调函数,这样可以提高执行的效率。异步的实现依赖于多线程技术。在Unity中,执行Start、Update方法的线程是主线程,会另外开一条线程执行异步代码,然后满足条件后另一条线程调用回调函数,主线程继续往下执行代码,不受影响。2.2异步客户原创 2021-10-31 17:01:31 · 998 阅读 · 0 评论 -
Unity3D网络游戏实战——网络游戏的开端:Echo
前言虽然最爱单机游戏,但是和朋友一起玩联网游戏可以获得双倍快乐!所以开始学习网络游戏相关的知识啦1.1藏在幕后的服务端客户端和客户端之间通过服务端的消息转发进行通信。为了支撑很多玩家,游戏服务端通常采取分布式架构,也就是分区服务端,每个服务端负责不同区的玩家。服务端和服务端之间通常使用TCP通信。1.2网络连接的端点:Socket网络上的两个程序通过一个双向的通信连接实现数据交换,这个连接的一端称为一个Socked。每个Socket包含五种必备信息:连接使用的协议:TCP本地IP:19原创 2021-10-30 00:51:31 · 826 阅读 · 0 评论 -
Unity文件、文件引用、meta详解
之前面试帕斯亚的时候被问到了meta文件有什么用,瞬间语塞,也想起来侯捷老师经常说的一句话:用一样东西,不明白他的道理,实在不高明转载自:https://www.cnblogs.com/CodeGize/p/8697227.htmlUnity项目中Assets目录下常见的文件类型在unity3d中一般存在这么几种文件资源文件(Imported Asset)代码文件序列化文件(Native Asset)文本文档非序列化文件meta文件资源文件(ImportedAsset)资源文件指一转载 2021-04-16 15:56:37 · 1017 阅读 · 0 评论 -
Unity碰撞检测机制的原理(更新中...)
总是碰到关于碰撞的问题,今天实在忍不住了,来把它搞懂,不然听到八叉树,BSP什么的就怕可不行。转自:http://www.manew.com/thread-102595-1-1.html碰撞机制最近做动态地形生成的时候,发现碰撞检测无效,于是查阅了相关资料,大体上把unity的检测流程弄清楚了碰撞检测,就是检测两个物体是否相交,如果物体非常规则,比如球体,直接检测圆心距离是否小于半径和即可,计算量十分小,但是,如果物体不规则,比如一个角色,进行十分细致的碰撞检测就会变的十分困难,这时候,我们一般会用转载 2021-04-02 00:44:32 · 8103 阅读 · 3 评论 -
Unity mono和IL2CPP的区别
之前被问到了IL2CPP,今天找到一篇写的比较通俗易懂的文章,只能勉强入个门,还需要深入学习!转载自 https://blog.csdn.net/smile_Ho/article/details/109161237静态语言和动态语言的区别静态类型语言是指在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型.例如c++动态类型语言是在运行时确定数据类型的语言。变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。 例如:c#接下来说一下unity3转载 2021-03-30 23:40:05 · 652 阅读 · 0 评论