U3D面试题大全
1.Unity中碰撞器(Collider)和触发器(Trigger)的区别?
两方都必须要有碰撞体,且一方要有刚体,但在发生碰撞的条件下,Collide碰撞器会生产
碰撞反弹的物理效果,但是(Trigger)触发器,在发生碰撞检测效果时,则会发生穿透效果,
设置触发器时,必须要将一方物体的(Is Trigger)属性 勾上。
2.物体发生碰撞的必要条件?
两方必须要有碰撞合,且一方要有(Rigidbody)刚体或者charactercontroller组件
3.CharacterController和Rigidbody的区别?
Rigidbody具有完全真实物理的特性,而CharacterController可以说是受限的的Rigidbody,具有一定的物理效果但不是完全真实的,是Unity为了使开发者能方便的开发第一人称视角的游戏而封装的一个组件。
4.物体发生碰撞时,有几个阶段,分别对应的函数?
都有三个阶段:
碰撞信息检测:
1.MonoBehaviour.OnCollisionEnter(Collision collision) 当进入碰撞器
2.MonoBehaviour.OnCollisionExit(Collision collision) 当退出碰撞器
3.MonoBehaviour.OnCollisionStay(Collision collision) 当逗留碰撞器
触发信息检测:
1.MonoBehaviour.OnTriggerEnter(Collider collider)当进入触发器
2.MonoBehaviour.OnTriggerExit(Collider collider)当退出触发器
3.MonoBehaviour.OnTriggerStay(Collider collider)当逗留触发器
5.物体发生碰撞时,几种施加压力的方式,描述出来?
rigidbody.AddForce 添加力
rigidbody .AddForceAtPosition添加力在指定位置
这两个方法,都是Rigidbody类的方法
6.Unity3d提供了几种光源,分别是什么?
四种。
平行光:Directional Light
点光源:Point Light
聚光灯:Spot Light
区域光源:Area Light
7.物理更新一般在哪个系统函数里?
FixedUpdate
FixedUpdate,每固定帧绘制时执行一次,和Update不同的是FixedUpdate是渲染帧执行,如果你的渲染效率低下的时候FixedUpdate调用次数就会跟着下降。FixedUpdate比较适用于物理引擎的计算,因为是跟每帧渲染有关。Update就比较适合做控制。
8.移动相机动作在哪个函数里,为什么在这个函数里。
LateUpdate
因为这个函数是在Update执行完毕才执行的,不然的话就有可能出现摄像机里面什么都看到的情况。
9.简述一下Prefab的用处?
在游戏运行时实例化,prefab相当于一个模板,对你已经有的素材、脚本、参数做一个默认的配置,以便于以后的修改 及 重复利用。
10.简述一下对象池,你觉得在FPS游戏里哪些东西适合使用对象池?
对象池就存放需要被反复调用资源的一个容器,反复创建和销毁相同且重复调用的对象会很费时间,通过对象池把暂时不用的对象放到一个池中(也就是一个集合),当下次要重新生成这个对象的时候先去池中查找一下是否有可用的对象,如果有的话就直接拿出来使用,不需要再创建,如果池中没有可用的对象,才需要重新创建,利用空间换时间来达到游戏的高速运行效果,在FPS游戏中要常被大量复制的对象包括子弹,敌人,粒子等
11.请通过一个简易的示意图来描述游戏脚本组件的生命周期。
Awake——>OnEnable–>Start——>Update——>FixedUpdate——>LateUpdate——>OnGUI——>OnDisable——>OnDestroy
12.什么是协同程序?
在主线程运行的同时开启另一段逻辑处理,来协助当前程序的执行,协程很像多线程,但是不是多线程,Unity的协程实在每帧结束之后去检测yield的条件是否满足。
给一些链接: