《Unity3D高级编程之进阶主程》第七章,Shader(六) - Pass(三)Blend

Blend,设置颜色混合的方式。

Blend 主要作用是颜色混合,颜色混合是在所有渲染完成图像都成型后进行的,这时像素都已经被绘制好了,并且屏幕上也已经有成像的图形,但还没有完全完成,因为是物体各自画各自的已经画完了放入了缓存中,但alpha还没有发挥出效果,这时就需要混合来做补充,这之前的屏幕上所有的图像都是实体的,没有半透明和透明部分。总之Blend最重要的作用就是让alpha起到半透明的作用,当然也可以做到颜色加强,改变,混合,削弱等作用。

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

Render State Command渲染状态指令详解

Render State Command 是渲染状态的指令,它在Pass和SubShader都有效,放在Pass就只在当前Pass里有效,放在SubShader中则是多个Pass的共同状态。

不过不是所有的Render State都可以成为共同拥有的渲染状态的,有些Render State只在Pass中有效,而另一些则可以成为共同渲染状态。

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

Pass

《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休息)->健康,等等。状态在不同的条件下跳转到自己或不同状态中去。