随笔分类 - Unity
摘要:Socket 服务端至少要两个socket:一个负责接收客户端连接请求,但不负责与客户端通信;为每个连接成功的客户端,在服务端创建一个对应的socket负责与客户端通信。 客户端的socket一个就行:要指定连接的服务端的IP和端口。 通讯过程: 申请一个socket 绑定IP和端口 监听 服务端接
阅读全文
摘要:一、模型 导入模型选项:Import不需要的都不选;网格压缩默认没有,可以根据需要选择压缩层度;不会对网格写入就不勾可读写 Rig页面:勾选optimize game object,骨骼节点合并了。 动画页面,没有动画就不勾。有可以选动画压缩(但要注意压缩关键帧会不会掉帧) 二、纹理 不要导出DDS
阅读全文
摘要:1. GameObject下的getComponent 和 transform下的 getComponent 区别 gameObject下的getComponent:继承自GameObject,从物体身上寻找组件 transform下的 getComponent:继承自Component,从组件身上
阅读全文
摘要:一、UV坐标 Q:什么是UV坐标? A:顶点在纹理中对应的2D坐标,通常用(u,v)表示。 Q:UV坐标取值范围? A:纹理有很多种像素大小,但是UV坐标通常被归一化在[0,1]范围内。 Q:原点(0,0)在纹理哪个位置? A:左下角。 二、单张纹理 1 // Upgrade NOTE: repla
阅读全文
摘要:上一节所举的状态机的例子,设置跳转条件是否觉得很麻烦。救星来了,要实现这种多行为状态机,可以使用行为树。 行为树的特点: 有四个基本状态:初始状态、进行中状态、成功状态、失败状态。 每个行为节点都有一个返回状态,用于告诉父节点当前行为执行的结果。 执行中状态是行为树一大亮点,也是区别于决策树的地方。
阅读全文
摘要:状态机可以分为:有限状态机 和 无线状态机,区别在于状态是有限还是无限的。 有限状态机又可以分为:单层状态机(只有一个主状态机) 和 分层状态机(按功能划分模块,这些模块之间有一个主状态机,每个模块有自己的子状态机) 一个状态机分为四种状态:状态输入、状态进入、状态更新、状态退出。 案例:现在我们要
阅读全文
摘要:一、图 无向图: 有向图: 权重图: 哈密顿图: 定义:经过所有的顶点并且只经过一次的路径,叫哈密顿路径,闭合的哈密顿路径叫哈密顿回路。 例如送快递,快递车从快递公司出发,遍历每个小区,且每个小区只去一次,最后回到快递公司。这就是一条哈密顿回路。 那么怎么表示图上节点之间的关系呢? 方法一:01矩阵
阅读全文
摘要:常见数据存取方式: PlayerPrefs JSON BinarySerialization ScriptableObject 一、PlayerPrefs 本来是用来存储玩家偏好设置的方法,比如一些游戏显示效果设置。但其实也能用来存储简单的数据。 存储的位置在注册表里。所以也有个缺点是不安全,玩家可
阅读全文
摘要:1 Shader "Unlit/Blinn-Phong" 2 { 3 Properties 4 { 5 _Diffuse("漫反射颜色",Color) = (1,1,1,1) 6 _Specular("高光反射颜色",Color) = (1,1,1,1) 7 _Gloss("高光区域大小",Rang
阅读全文
摘要:漫反射公式=光源颜色*材质漫反射颜色*光源强度 1. 逐顶点漫反射光照 1 Shader "Test/DiffuseShader" 2 { 3 Properties{ _Color("Diffuse",Color)=(1.0,1.0,1.0,1.0)} 4 SubShader 5 { 6 Pass
阅读全文
摘要:一、辐照度 Q1. 如何量化光? A:用辐照度irradiance。 Q2:什么是辐照度? 图中A点单位时间内穿过的能量就是辐照度。 Q2:怎么计算辐照度呢? 上图中cosθ值就是辐照度。θ=0°时,cosθ=1,也就是说光线垂直于物体表面时,辐照度最大。θ越大,表示光线越不垂直,辐照度越小。 二、
阅读全文
摘要:一、语义 1. a2v 语义(a代表应用阶段,v代表顶点着色器) POSITION:float4类型,模型空间中顶点的位置。 NORMAL:float3类型,顶点法线。 TANGENT:float4类型,顶点切线。 TEXCOORDn:float2/float4类型,顶点纹理坐标。 COLOR:fi
阅读全文
摘要:0. 先写一个嘿简单的Shader 1 Shader "Test/SimpleShader" 2 { 3 SubShader 4 { 5 Pass 6 { 7 CGPROGRAM 8 #pragma vertex vert //代表顶点着色器的函数名 9 #pragma fragment frag
阅读全文
摘要:一、矢量和标量 矢量:包含了模和方向。如 以10km/h的速度向北骑行。 区别于点:矢量是一个相对量,所在位置不重要,只要模和方向一致就是相等的。而点表示的就是一个位置。 标量:只有模没有方向。如 家距离学校1公里。 矢量运算:记住矢量的位置并不重要,可以通过移动矢量的位置,来做矢量运算。 B点到A
阅读全文
摘要:一个Shader的基础结构如下: Shader “ShaderName”{ properties{//属性} SubShader{//显卡A使用的子着色器} SubShader{//显卡B使用的子着色器} Fallback "VertexLit" } 一、结构 1. 第一行 定义Shader的名字和
阅读全文
摘要:一个分享着色器的网站https://www.shadertoy.com/ 什么是Shader? GPU流水线上一些可高度编程的阶段。 一、渲染流水线(概念上) 应用阶段 输--出--渲--染--图--元 > 几何阶段 输--出--屏--幕--空--间--顶--点--信--息 > 光栅化阶段 准备场景
阅读全文
摘要:一、制作地图素材 实时渲染:主场景和小地图各需要渲染一次,非常耗性能。 预渲染:地图顶视图渲染成一张图片(推荐☆☆☆) 美术制作:纯粹靠美术手绘,可能跟实际不符。 好的,我们用最简单粗暴的方法,调整到Top视角,把Scene拉到最大,直接截图。放到Resources目录下,方便后面切换地图时加载小地
阅读全文
摘要:官方教程:https://docs.unity3d.com/2017.2/Documentation/Manual/HOWTO-UIWorldSpace.html 第一步:Set the Canvas to World Space 创建一个Canvas,渲染模式选择World Space 第二步:D
阅读全文
摘要:DriveInfo 获取驱动器信息 1 //获取驱动器信息 2 void GetDriveInfo() 3 { 4 DriveInfo driveInfo = new DriveInfo("C"); 5 Console.WriteLine("驱动器的名称:" + driveInfo.Name); 6
阅读全文
摘要:Delegate使用三步骤: 1. 声明: public delegate void ShowDelegate1(); //无参无返回值 public delegate int ShowDelegate2(int a, int b); //有参有返回值 public delegate T ShowD
阅读全文

浙公网安备 33010602011771号