Unity3D学习实用技巧
- 基础知识汇总
-
- 1. Unity中的碰撞器和触发器的区别?
- 2. 物体发生碰撞的必要条件
- 3. 什么是协同程序
- 4. OnEnable、Awake、Start运行时发生的顺序?哪个可能在同一个对象周期中反复发生
- 5. MeshRender中material和Sharedmaterial 的区别?
- 6. Unity提供了几种光源,分别是什么区域光源
- 7. CharacterController和Rigidbody的区别:
- 8. 简述prefab的用处
- 9. Unity3d的物理引擎中,有几种施加力的方式
- 10. 什么叫链条关节
- 11. 物体自身旋转使用的函数
- 12. Unity3d提供了一个用于保存和读取数据的类(PlayerPrefs),列出保存和读取整型数据的函数:
- 13. Unity3d脚本从唤醒到销毁有着一套比较完整的生命周期,列出系统自带的几个重要方法。
- 14. 物理更新一般放在哪个系统函数里?
- 15. 在场景中放置多个Camera并同时处于活动状态会发生什么?
- 16. 如何销毁一个UnityEngine.Object及其子类?
- 17、MiniMap是什么?作用?
- 18、 向量的点乘、叉乘以及归一化的意义?
- 19、射线检测碰撞物的原理
- 20、四元数的作用,四元数对欧拉角的优点
- 21、什么是渲染管道
基础知识汇总
1. Unity中的碰撞器和触发器的区别?
碰撞器是触发器的载体,而触发器只是碰撞器身上的一个属性。当Is Trigger=false时,碰撞器根据物理引擎引发碰撞,产生碰撞的效果,可以调用OnCollisionEnter/Stay/Exit函数;当Is Trigger=true时,碰撞器被物理引擎所忽略,没有碰撞效果,可以调用OnTriggerEnter/Stay/Exit函数。如果既要检测到物体的接触又不想让碰撞检测影响物体移动或要检测一个物件是否经过空间中的某个区域这时就可以用到触发器。
2. 物体发生碰撞的必要条件
两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigidbody 刚体,而且必须是运动的物体带有Rigidbody脚本才能检测到碰撞。
3. 什么是协同程序
在主线程运行的同时开启另一段逻辑处理,来协助当前程序的执行,协程很像多线程,但不是多线程,Unity的写成是在每帧结束之后去检测yield的条件是否满足。换句话说,开启协程就是开启一个可以与程序并行的逻辑。可以用来控制运动、序列以及对象的行为。
update 函数返回后将运行正常协程更新。协程是一个可暂停执行 (yield) 直到给定的 YieldInstruction 达到完成状态的函数。
协程的不同用法:
yield 在下一帧上调用所有 Update 函数后,协程将继续。
yield WaitForSeconds 在为帧调用所有 Update 函数后,在指定的时间延迟后继续协程
yiel