Unity面试题及答案(十)
四十四:请简述GC(垃圾回收)产生的原因,并描述如何避免?
GC回收堆上的内存
避免:1.减少new产生对象的次数
2.使用公用的对象(静态成员)
3.将String换为StringBuilder
四十五:反射的实现原理?
审查元数据并收集关于它的类型信息的能力。实现原理:在运行时根据程序集及其中的类型得到元数据。下面是实现步骤:
导入using System.Reflection;
Assembly.Load(“程序集”)加载程序集,返回类型是一个Assembly
得到程序集中所有类的名称
foreach (Type type in assembly.GetTypes()) { string t = type.Name; }
4. Type type = assembly.GetType(“程序集.类名”);获取当前类的类型
Activator.CreateInstance(type); 创建此类型实例
MethodInfo mInfo = type.GetMethod(“方法名”);获取当前方法
m.Info.Invoke(null,方法参数);
四十六:简述四元数的作用,四元数对欧拉角的优点?
四元数用于表示旋转
相对欧拉角的优点:
1.能进行增量旋转
2.避免万向锁
3.给定方位的表达方式有两种,互为负(欧拉角有无数种表达方式)
四十七:移动相机动作在哪个函数里,为什么在这个函数里?
LateUpdate,是在所有的update结束后才调用,比较适合用于命令脚本的执行。官网上例子是摄像机的跟随,都是所有的update操作完才进行摄像机的跟进,不然就有可能出现摄像机已经推进了,但是视角里还未有角色的空帧出现。