内容会持续更新,有错误的地方欢迎指正,谢谢!
0.Unity最大的优点
unity提供的最大优点就是跨平台。
以前项目移植很麻烦,现在只要一份代码,然后注意平台差异就好了。
1.灯光类型
- 平行光:DirectionalLight 有一个方向,用于模拟阳光
- 点光源:Point Light 一个球状,用于模拟灯泡,、爆炸等,别开启阴影运算以节约性能
- 聚光灯:Spot Light 崩坏3琪亚娜的极乐净土CG视频中聚光灯用得特别多,游戏中慎用
- 区域光源:Area Light 区域光只能用在烘焙,因此不影响游戏性能
2.光照贴图LightMapping
单独使用的LightMapping效果很好,也就是提前静态烘焙,但由于只是把光影烘焙到贴图上,所以并不会对周围的动态物体产生真正的光照效果。这次来介绍一下光照探头LightProbe:
这是对LightMapping的一个补充功能,可以让动态物体在烘焙好的场景里面受到光的照射效果,就是全局光照的知识。LightProbe的用法就是在LightMapping的基础上加上了一些探头,探头越多,效果就越明显。
3.全局光照GI
全局照明GI是一种系统,用于模拟光如何从表面反射到其他表面。例如:阳光击中红色沙发会导致红光反弹到其后面的墙上。
有两种使用方式:烘焙方式的GI(只能烘焙静态物体)和预计算的GI(可以做天气系统)。在手机平台上,效能和内存限制较高,烘焙的GI法就会比较适合,决定采用哪一种方法可以针对你的目标平台评估。
4.预制体Prefab的作用
相当于一个GameObject模板,方便多次使用。
有两种实例化的方法:
- 直接将预制体拖到场景中
- 在代码里动态实例化:1.使用Instantiate,一般实例化到某个父物体下面,方便管理;2.先将预制体放在Resources文件夹下,再使用Resources.Load。一般用第一种方法。说到这里,有一个概念:对象池 强烈推荐使用,节约性能。
预制体也有两种用途:
- 物体的继承性:全部实例物体都相同
- 物体的重载性:对某一个实例物体进行单独的修改,让其与其他物体产生区别
5.性能优化
https://blog.csdn.net/billcyj/article/details/79441193
6.渲染流程
https://blog.csdn.net/billcyj/article/details/79539536
7.前向渲染和延迟渲染
正常的前向渲染(Forward Shading)流程是把空间的点进行各种剪裁后进行处理,处理量远远大于我们最终看到的。所以延迟渲染出现了,它先将摄像机空间的点光栅化转化成屏幕坐标后再进行处理。这样就能减少处理的次数,从而提高效率。
8.场景管理—四叉树
https://blog.csdn.net/BillCYJ/article/details/79791056
9.游戏开发中常用的数据结构
https://blog.csdn.net/BillCYJ/article/details/79790951
10.游戏开发中常用的算法
https://blog.csdn.net/BillCYJ/article/details/79792110
11.游戏中常用的设计模式
https://blog.csdn.net/BillCYJ/article/details/79816418
12.FSM(有限状态机)、HFSM(分层有限状态机)、BT(行为树)
https://blog.csdn.net/BillCYJ/article/details/79797228
13.帧同步
https://blog.csdn.net/BillCYJ/article/details/79804116
14.Unity跨平台的机制原理
Unity和Mono的关系:Unity引擎本身是由C++写出的,只不过Mono被嵌入到了Unity当中,为Unity提供了一个完整的虚拟机运行环境。
Unity的跨平台,就是通过Mono将C#代码编译成了通用中间语言CIL(Common Intermediate Language),然后Mono运行时利用 动态编译JIT 或 静态编译AOT 将CLI编译成目标平台的原生代码实现的。
15.骨骼动画原理
先摆好骨骼,骨骼之间有继承关系,再蒙皮(也就是将皮肉绑到骨骼上,主要的工作就是分配权重),最后再做动画。
16.UGUI源码学习之Button和Image
https://blog.csdn.net/BillCYJ/article/details/79879916
https://blog.csdn.net/BillCYJ/article/details/79884504
17.用Unity开发游戏常用的四种存档方式
https://blog.csdn.net/BillCYJ/article/details/79888614
18.Unity里的动态批处理和静态批处理
https://blog.csdn.net/BillCYJ/article/details/79935983
19.OverDraw过度绘制
过度绘制(Overdraw)描述的是屏幕上的某个像素在同一帧的时间内被绘制了多次。在多层次重叠的 UI 结构里面,如果不可见的 UI 也在做绘制的操作,会导致某些像素区域被绘制了多次,同时也会浪费大量的 CPU 以及 GPU 资源。
20.Resources加载资源
注意:
1.资源路径相对于Resources目录,且不加后缀名
2.即使是后缀不同的资源,也不要重名,否则加载的时候要指定类型。
3.路径使用正斜杠”/”
4.Resources中的所有资源,不管用没用到,都会被打到客户端中
举例,读写Resources/Txt路径下的test.txt文件: string fullPath = "Txt/test";
string str = Resources.Load<TextAsset>(fullPath).text
####未完待续~