基于公司的项目需求,不得已从自研引擎转向Unity技术支持,去支持公司新的Unity项目,故最近转战学习Unity。
笔记:
Unity 脚本基类 MonoBehaviour 与 GameObject 的关系,以及可重写函数
四元数和旋转
模型(Model):
一个材质可以看成一个Shader的包装,一个预制体
着色器(Shader)
Prefab 预制体
Rigidbody中的些许设置:
Rigidbody中 Angular Drag(角阻力): 同样指的是空气阻力,只不过是用来阻碍物体旋转的.如果设置成无限的话,物体会立即停止旋转.如果设置成0,物体在上升过程中,会发生侧翻旋转.(无限大 Infinity)
Freeze Position/Rotation(冻结位置/旋转):可以对物体在X、Y、Z三个轴上的位置/旋转进行锁定,即使受到相应的力也不会改变,但可以通过脚本来修改.否则物体在上升过程中会发生飘动(不仅y轴变化,X,Z也在变,不想这种现象,就把X,Z锁定)
Unity协程实际作用
协程还是在主线程中执行,可以分步做一些比较耗时的操作.
eg:初始化资源,LoadScene以及LoadNPCResource…
持续进行中,晚上不能熬夜…
Day 2
使用某个GameObject上挂载的脚本,可先使用FindTag,找到对应的游戏对象,实例化后使用 eg:
object.GetComponent();得到脚本对象,接着便可以使用其成员方法
Tag 与 Layer区别与使用:
Layer是一种隔离物体的方式,例如对地板创建FloorMask,设置RayCast只能与Floor相交,或者Lighting只能照射到标记的Layer上。
或者创建敌对目标,设置Layer为Shooting,便可在游戏逻辑中对Layer进行操作。
Tag 与 Layer 的差异与应用
Survival Shooter Tutorial
Unite 2014 training day 开发者培训项目
学习笔记
Audio Clip 音频素材
取消playOnAwake
在游戏结束后需要循环播放音效,所以打开Loop选项
Unity声音组件Audio Source组件浅析以及使用
State Meachine状态机
Animation Controller
动画控制
欧拉角与万向节锁
Unity输入系统
Vector3.Set的一些坑:
Vector3.Set
向量归一化:
水平向量与垂直向量均达到1时,合向量便是1.4.作用力便会变大.
需要使用Vector3.normalized使向量归一化
unity中Vector3.normalized和Vector3.Normalized的区别:
- normalized:不改变向量的方向 只是限制其在范围1中(返回新的规范化向量)
- Normalized: 改变当前向量 使得当前向量长度是1
归一化
ScreenPointToRay方法使用解析:
ScreenPointToRay
Unity Animator与Animation的区别:
Animator与Animation
Unity中Input.GetAxisRaw 与 Inout.GetAxis 区别
GetAxis [-1, 1]范围内变化,适合于赛车游戏的提速
GetAxisRaw 可直接返回-1,1,适合实时转向的FPS游戏
默认情况下,FixedUpdate没0.02s执行一次,每秒执行50次
Time.deltaTime = 0.02;
线性插值:
Vector3.Lerp()
线性插值
Unity Navigation烘焙
将某些UI的Alpha设置为0,脚本逻辑控制下再将其闪烁等
GetComponentInChildren 遍历所有的子物件查找组件
transform.Translate(-Vector3.up * sinkSpeed * Time.deltaTime) // 不需要使用Rigidbody.movetranslate,不存在物理属性
GetCompnent ().enable() = false;
GetComponent ().isKinematic = true;
isKinematic(运动学的)指不受物理控制
GameObject.setActive(boll) // 设置游戏对象的可见性
.enable(boll) // 使用/禁用某个组件
Unity Animation添加动画事件
Unity粒子系统介绍
Unity线性渲染器LineRender
Unity3d vector3.forward和transform.forward的区别
Rotate旋转相关