自己整理的面试题之1
111.Unity3d中的碰撞器和触发器的区别?
碰撞器是触发器的载体,而触发器只是碰撞器身上的一个属性。当Is Trigger=false时,
碰撞器根据物理引擎引发碰撞,产生碰撞的效果,可以调用OnCollisionEnter/Stay/Exit函数;
当Is Trigger=true时,碰撞器被物理引擎所忽略,没有碰撞效果,可以调用OnTriggerEnter/Stay/Exit函数。
如果既要检测到物体的接触又不想让碰撞检测影响物体移动或要检测一个物件是否经过空间中的某个区域这时就可以用到触发器物体发生碰撞的必要条件?
222.物体发生碰撞的必要条件?
两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigidbody刚体,而且必须是运动的物体带有Rigidbody脚本才能检测到碰撞。
333.请简述ArrayList和List的主要区别?
ArrayList存在不安全类型(ArrayList会把所有插入其中的数据都当做Object来处理),装箱拆箱的操作(费时),List是泛型类,
功能跟ArrayList相似,但不存在ArrayList所说的问题。
444如何安全的在不同工程间安全地迁移asset数据?三种方法
1.将Assets目录和Library目录一起迁移
2.导出包,export Package
3.用unity自带的assets Server功能
555.简述prefab的用处
在游戏运行时实例化,prefab相当于一个模板,对你已经有的素材、脚本、参数做一个默认的配置,以便于以后的修改,
同时prefab打包的内容简化了导出的操作,便于团队的交流。、
666.Unity3d脚本从唤醒到销毁有着一套比较完整的生命周期,请列出系统自带的几个重要的方法。
Awake——>OnEnable–>Start——>Update——>FixedUpdate——>LateUpdate——>OnGUI——>OnDisable——>OnDestroy
777.FixedUpdate,固定时间间隔执行 可以在edit->project setting->time设置 update 是在渲染帧执行,和Update不同的是FixedUpdate是渲染帧执行,
如果你的渲染效率低下的时候FixedUpdate调用次数就会跟着下降。FixedUpdate比较适用于物理引擎的计算,
因为是跟每帧渲染有关。Update就比较适合做控制。
三者区别:
update是渲染帧更新,fiexdupdate是固定时间更新,lateupdate是晚于更新。
888.int和string的区别
运行速度int快 !!
int存储具体数值,string引用数值。
int:整形,无小数点,只能表示5,不能表示5.0;
string:字符串类型,一般声明的时候用双引号括起来,如:“Hello You !”。
999.简述四元数的作用,四元数对欧拉角的优点?
四元数用于表示旋转
相对欧拉角的优点:
1.能进行增量旋转
2.避免万向锁
3.给定方位的表达方式有两种,互为负(欧拉角有无数种表达方式)
101010unity有哪些设计模式?
命令模式:命令模式就是将对象的状态和行为进行封装后按照一定的规则进行处理的模式
观察者模式,对应的就是事件机制,通过添加监听者来获取状态变化。
工厂模式:当一种类型需要经常被大量创建和销毁的时候,为了提高效率可以不销毁,而是先保存起来,等需要的时候再拿去用。
以前我是通过获取特定脚本来管理对象,每次都要去getcomponent看看有没有对象脚本来确定是不是要由工厂管理,这样效率比较低。
有了mvc模式,可以直接管理模型,销毁一个对象可以这样写。