Unity3D 面试大全

0x01 什么是协程?

0x02 ArrayList 和 List 的主要区别?

0x03 OnEnable, Awake, Start 的调用顺序?

0x04 Unity 提供了哪些光源

0x05 private, public, protected, internal的区别

0x06 Unity MonoBehaviour 的生命周期

0x07 物理更新一般放在哪个函数里?

0x08 向量的点乘、叉乘以及标准化向量的意义?

0x09 怎么求空间中两点的距离?

0x10 如何为场景烘培光照贴图?

0x11 C# 的委托是什么

0x12 Unity3D中如何通过射线来检测碰撞物体

0x13 如何让已经存在的GameObject在LoadLevel后不被卸载掉?

0x13 如何让已经存在的GameObject在LoadLevel后不被卸载掉?

简述四元数Quaternion的作用,四元数对欧拉角的优点?

物体发生碰撞的整个过程中,有哪几个阶段,分别对应的函数

  • OnCollisionEnter
  • OnCollisionStay
  • OnCollisionExit

Unity3D 的物理引擎中施加力的方式

  • rigidbody.AddForce
  • rigidbody.AddForceAtPosition

Unity3D 的坐标空间有哪些

下列代码在运行中会发生什么问题?如何避免?

1
2
3
4
5
6
List<int> list = new List<int>(new int[] { 1, 2, 3, 4, 5 });
foreach (int item in list)
{
Console.WriteLine(item * item);
list .Remove(item);
}

输出第一个元素后报错:

InvalidOperationException: Collection was modified; enumeration operation may not execute.

不能在遍历数组的同时修改数组元素,比如增删操作

Unity 协程和线程的区别

  • 同一时间只能执行某个协程。开辟多个协程开销不大。协程适合对某任务进行分时处理。
  • 同一时间可以同时执行多个线程。开辟多条线程开销很大。线程适合多任务同时处理。
  • 协程,即协作式程序,其思想是,一系列互相依赖的协程间依次使用 CPU,每次只有一个协程工作,而其他协程处于休眠状态。协程实际上是在一个线程中,只不过每个协程对 CPU 进行分时,协程可以访问和使用 Unity 的所有方法和 Component
  • 线程,多线程是阻塞式的,每个 IO 都必须开启一个新的线程,但是对于多CPU的系统应该使用 thread,尤其是有大量数据运算的时刻,但是 IO密集型就不适合;而且thread中不能操作unity的很多方法和component