摘要: 剔除是一种通过避免渲染背对观察者的几何体面来提高性能的优化措施。所有几何体都包含正面和反面。剔除基于大多数对象都是封闭的事实;如果你有一个立方体,你不会看到背离你的那一面(总是只有一面在你的前方),因此我们不需要绘制出背面。因此也被称做背面剔除。另一个使得渲染看起来正确的是深度测试。深度测试确保只有场景内的对象的最靠近的表面参与绘制。Syntax 语法CullBack | Front | Off控制几何体的那一面会被剔除(不绘制)Back不绘制背离观察者的几何体面。Front不绘制面向观察者的几何体面,用于由内自外的旋转对象Off显示所有面。用于特殊效果。ZWriteOn | Off控制是否将 阅读全文
posted @ 2013-09-27 11:59 martianzone 阅读(1439) 评论(0) 推荐(0) 编辑
摘要: 材质和灯光参数被用于控制内置顶点光照。顶点光照是Direct3D/OpenGL标准的按每顶点计算的光照模型。光照打开时,光照受材质块,颜色材质和平行高光命令的影响。每像素光照常被实现为自定义顶点/片面程序,并且不使用顶点光照。这种情况下,你不会使用到任何在这里描述的命令,相反,在你完成光照,贴图和任何其他动作时,你需要定义自己的vertex and fragment programs。顶点颜色和灯光是对任何已渲染过后的几何体所添加的第一步效果。这个操作处在顶点级别,用于计算在纹理被应用之前被使用的基础颜色。Syntax 语法顶层命令控制是否采用固定函数光照,和一些控制选项。主要是在Materi 阅读全文
posted @ 2013-09-26 18:01 martianzone 阅读(1333) 评论(0) 推荐(0) 编辑
摘要: (1)SubShaderUnity中的每一个着色器都包含一个subshader的列表,当Unity需要显示一个网格时,它能发现使用的着色器,并提取第一个能运行在当前用户的显示卡上的子着色器。当Unity选择用于渲染的子着色器时,它为每一个被定义的通道渲染一次对象(可能会更多,这取决于光线的交互作用)。当对象的每一次渲染都是一次昂贵的操作时,你能选择使用最小数目的通道来定义着色器。当然,有时在一些显示硬件上需要的效果不能通过单次通道来完成。除了使用多次通道你别无选择。通道定义的类型包括aregular Pass, aUse Passor aGrab Pass。任何出现在通道定义的状态同时也能整个 阅读全文
posted @ 2013-09-26 16:39 martianzone 阅读(1680) 评论(0) 推荐(0) 编辑
摘要: GUI实现,如下:按“G”键开始新手引导代码如下:using UnityEngine;using System.Collections;public class OkButton : GUIBase { /// /// 按钮图片 /// public Texture2D OKBTN_a; public Texture2D OKBTN_b; /// /// 引导图片 /// public Texture2D HoleTexture; private GUIStyle OKBTNStyle; private GUIStyle... 阅读全文
posted @ 2013-09-25 17:11 martianzone 阅读(5974) 评论(1) 推荐(0) 编辑
摘要: Transform.LookAt 注视functionLookAt(target:Transform,worldUp:Vector3=Vector3.up) : void旋转物体,这样向前向量指向target的当前位置。简单说,旋转物体使z轴指向目标物体。第一个参数是物体看向的目标。第二个参数是物体的那一个轴向看向目标。很容易出现的问题就是,给一个人物模型设置LookAt,结果人物的脚底板对着目标。。这时设置第二个参数,就可以让人物正面,面向目标。在由worldUp向量示意的方向的y轴旋转物体,如果你忽略worldUp参数,这个函数将使用世界的y轴。worldUp只是一个示意向量,如果向前方向 阅读全文
posted @ 2013-09-24 10:30 martianzone 阅读(1342) 评论(0) 推荐(0) 编辑
摘要: 绕着一个点旋转 :transform.RotateAround(Vector3.zero, Vector3.up, speed* Time.deltaTime ); 第一个参数,点的位置。第二个参数,法线方向,第三个参数,速度.如图时针旋转。旋转固定角度 gameObject.transform.rotation = Quaternion.Slerp(gameObject.transform.rotation, Quaternion.Euler(60,0, 0), 6);第一个参数起始角度,第二参数结束角度,第三个参数旋转工消耗的时间。static functionLookRotation(f 阅读全文
posted @ 2013-09-16 07:31 martianzone 阅读(2262) 评论(0) 推荐(0) 编辑
摘要: 继续介绍NavMesh寻路的功能,接下来阿赵打算讲一下以下两个例子,先看看完成的效果: 第一个例子对于喜欢DOTA的朋友应该很熟悉了,就是不同小队分不同路线进攻的寻路,红绿蓝三个队伍分别根据三条路线进攻。第二个例子是动态的控制道路的开关。当吊桥打开时,道路不通,当吊桥放下时,道路可以通行。先来说说第一个例子吧,第一个例子其实很简单,只需要在之前两节的基础上修改一下层的设置就可以了。先来分析一下我们的地形,为了做这个例子,我准备了两个plane分别作为我方基地和地方基地,然后用plane简单的拼了三条线路。在我方基地,准备了红绿蓝各三个的小兵(用胶囊代替)。当然小兵身上带着NavMesh Age 阅读全文
posted @ 2013-09-15 19:10 martianzone 阅读(1131) 评论(0) 推荐(0) 编辑
摘要: 上一节简单介绍了NavMesh寻路的基本用法,这次来介绍一下稍微复杂一点点的高低落差以及跳跃的做法,首先来看看这次的目标:第一部分是爬楼梯,第二部分是横向跳跃和往下跳落 不管是爬楼梯,还是跳跃,NavMesh都是通过了OffMeshLink来做的。创建OffMeshLink的方法有两种,接下来会通过制作上面的例子来进行说明: 为了做这个例子,我们预先在场景里面准备了一些物体:摄像机是必须的,一个作为地面的Plane,然后是F1——F5几个高低落差不一样的台阶,L1和L2是楼梯模型, 控制人物主体man,还有移动的目标点target。其中man身上必须带有NavMesh Agent组件,为了观. 阅读全文
posted @ 2013-09-15 16:09 martianzone 阅读(847) 评论(0) 推荐(0) 编辑
摘要: unity自从3.5版本之后,增加了NavMesh寻路的功能。在此之前,unity用户只能通过第三方插件(如Astar寻路插件)等做寻路功能。阿赵我也使用过A*寻路插件,A*的原理并不复杂,有兴趣的朋友可以自己百度一下。不过由于不是自带的功能,所以在设定网格和烘焙的过程难免会出现很多不便。NavMesh作为unity自带的功能,用法和之前的LightMapping烘焙或者遮挡剔除Occlusion Culling有很多相似之处。 这个功能有很多有趣的地方,而且用起来也很方便,我打算分开几篇日志来逐一介绍。这次的目的只是简单的认识一下NavMesh的基本用法,所以暂时不详细的翻译组件每一个... 阅读全文
posted @ 2013-09-15 08:14 martianzone 阅读(1635) 评论(0) 推荐(0) 编辑
摘要: //验证字符串切割函数Split() string st = "abcd erfas dflkj "; char[] a = new char[] { ' ' }; //当引号内空一个space string[] b = st.Split(a); //string[] b = st.Split(new char[] { ' ' }); foreach (string i in b) { C... 阅读全文
posted @ 2013-09-10 16:44 martianzone 阅读(464) 评论(0) 推荐(0) 编辑