《Unity3D高级编程之进阶主程》第七章,Shader(三) - 渲染管道

SubShader模块

SubShader相当于子Shader的意思,SubShader在Shader中可以有很多个,每个SubShader都可以针对一种设备,但不是所有SubShader都会被采用。当Unity去展示一个模型时,会从第一个SubShader开始寻找是否匹配当前的设备,如果不匹配则与下一个SubShader继续匹配,直到找到能够匹配该设备为止。如果所有的SubShader都没有匹配上,则会使用 Fallback 标签的Shader。

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

实现UDP

在前面介绍了如何实现TCP socket,下面要介绍下UDP的实现方式。

其实两者都是长链接的方式,很多地方都有相识之处,比如两者都需要连接和断开事件支撑,都需要做发送和接收队列缓存,都需要定义数据包协议格式,都需要加密和校验。

我们来说说TCP有而UDP没有的部分,以及需要我们在UDP上实现的功能。UDP和TCP相比,UDP基本就是TCP的阉割版本,很多TCP有的功能UDP都没有。相同的地方有,都是异步发送和接收,都需要多线程操作,发送和接收都需要缓冲队列,并且发送数据时都需要合并数据包。TCP有而UDP没有的地方有,UDP不会自己校验重发,丢包概率大,数据包接收顺序不确定,而且UDP本身没有连接断开检测机制,也没有连接确认机制。

所以直接使用UDP来做网络连接,会遇到巨大的问题,可以说直接使用而不加修饰,不确定性太大基本用不了UDP。

《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。