《Unity3D高级编程之进阶主程》第六章,网络层(二) - 实现TCP

实现TCP长连接。

我们先从整体出发,列一下Unity3D实现TCP连接需要的实现哪些方面:

    1, 建立连接

    2, 断线检测

    3, 网络协议

    4, 发送和接收队列缓冲

    5, 发送数据合并

    6, 线程死锁策略

《Unity3D高级编程之进阶主程》第七章,Shader(二) - Property

编写Shader的几种方式

着色器部分的编写是客户端的精髓,如果说架构表现了逻辑整合能力,算法展现了数学能力,那么着色器编写展现了表现能力,在游戏项目中三者缺一不可,特别是作为主程或者说资深的U3D人员来说是极其重要的。

《Unity3D高级编程之进阶主程》第七章,Shader(一) - 常用的Shader

常用的Shader

《Unity3D高级编程之进阶主程》第六章,网络层(一) - TCP还是UDP

有哪些网络协议可以用

TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。

一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,只简单的描述下这三次对话的简单过程:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机B向主机A发送同意连接并要求同步的数据包(同步就是两台主机一个在发送,一个在接收,协调工作):“可以,你什么时候发?”,这是第二次对话;主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。

《Unity3D高级编程之进阶主程》第五章,3D模型与动画(三) - 状态机

如何用状态机模拟人物行为动作。

什么是状态机?

状态机有两种,一种是有限状态机,一种是无限状态机。有限状态机运用的地方比较多,而无限状态机我还没看见过有在游戏项目中运用的。我们这里讲的状态机都是有限状态机。

有限状态机简单描述下,实例本身有很多种状态,实例从一种状态切换到另一种状态的动作就是状态机转换,而转换是有条件的,这个条件就是状态机之间的连线。

打个比方,人有三个状态健康,感冒,康复中。触发的条件有淋雨(t1),吃药(t2),打针(t3),休息(t4)。状态机的连接图可以是这样,健康-(t4休息)->健康;健康-(t1淋雨)->感冒;感冒-(t3打针)->健康;感冒-(t2吃药)->康复中;康复中-(t4休息)->健康,等等。状态在不同的条件下跳转到自己或不同状态中去。

被封纪念帖

www.luzexi.com 博客 被关小黑屋了,原因是自己架了梯子,还写文章教别人怎么架梯子。被冠以双重罪,直接封服务器了,不仅仅是域名,服务器也不给用了。

这是不给程序员活路么,不学习外来技术怎么振兴中华。

但是我想通了,生活在中国就要按照中国的规矩办事,政治觉悟要有。

被封让我彻底放弃了阿里云,也放弃了国外的服务器,转而用国内,也同时放弃了自建某些服务器,感觉也轻松了很多,并且又多了一个域名,luzexi.cn 因为原来的域名不知道什么时候恢复,暂时用这个吧。

我想明白了在中国还是需要按中国的套路走,如果你移民在国外也一样,要拼劲全力融入当地的风俗民习,都不容易。

所以那些在国外的说国内不好的,或者在国内说国外不好的,都是井底之蛙,过于偏见纠结问题的表面。

做好自己,在规矩下办事,在规则下取胜才是关键,不要去秀下限,而是要努力去突破上限。

放个连接吧,总不至于白写。

被封的说明书

git同步多个repository仓库

由于国内服务器访问GitHub奇慢,所以把仓库复制一份放在了国内。但是苦于要同步两边,所以想有没有办法,同步多个git仓库,是否有办法,只维护一份就可以了。

《Unity3D高级编程之进阶主程》第五章,3D模型与动画(二) - 合并3D模型

Animation 和 Animator的选择。

首先说明Unity3D引擎已经不再对Animation动画系统进行维护。但不维护也并不是说一定不能用,很多旧的项目任然用的很好,而且Animation系统也基本上是完善好了的。新动画系统 Mecanim 中有了新的动画组件 Animator。

《Unity3D高级编程之进阶主程》第五章,3D模型与动画(一) - 美术资源的规范

3D模型大小,面数,贴图大小,骨骼数量在游戏中的规范。

为什么说资源的规范在项目中是极其重要的?

看到过有很多项目都没有重视资源规范,他们奢求高的运行效率,却不懂资源的规范是运行效率的前提。

有的游戏项目,一个人物模型就有几万个面,一个建筑就有几十万个面,不堪入目。

贴图也有很糟糕的,到处都是1024和2048大小的贴图。骨骼数量有的甚至到了几百。在这样恶劣的资源环境情况下,项目的运行效率怎么可能高。

资源的好坏直接导致了项目的好坏,模型太大,面数太多,贴图太大,会导致包体过大,骨骼数量太多,导致CPU在动画上消耗过多。

资源过大过重,还会导致CPU消耗在资源加载上面的时间过多过长,导致画面帧率下降,卡顿严重等问题。

《Unity3D高级编程之进阶主程》第四章,UI(七) - UI优化(三)

前文回顾 UI(一)

    对NGUI和UGUI进行了比较,讲述了如何选择UI系统作为项目的UI框架。

前文回顾 UI(二)

    UGUI的原理,以及组件使用详解。

前文回顾 UI(三)

    UGUI源码中输入事件模块源码剖析。

前文回顾 UI(四)

    UGUI渲染核心源码剖析。

前文回顾 UI(六)

    如何在游戏项目中架构UI框架。

前文回顾 UI(七)-优化(一)

    优化UI的几种方法,UI动静分离,拆分过大的UI,UI预加载

前文回顾 UI(七)-优化(二)

    优化UI的几种方法,UI图集Alpha分离,UI字体拆分,Scroll View 滚屏优化,以及UGUI图在改变颜色或Alpha后,导致对Mesh重构的优化。

这篇我们来继续聊聊,UI展示与关闭的优化,对象池的运用,UI贴图设置的优化,内存泄露排查与预防。