归类整合:http://www.neworigin.net/m/index.php?c=article&id=9813
    百度文库:https://wenku.baidu.com/view/e4003a3ffc00bed5b9f3f90f76c66137ef064f51?qq-pf-to=pcqq.group&bfetype=new

    ArrayList和List的主要区别
    答:ArrayList存在不安全类型(ArrayList会把所有插入其中的数据都当做Object来处理)
    有装箱拆箱的操作(费时)
    Interface与抽象类之间的不同

    下列代码在运行中会产生几个临时对象?
    string b = new string(“bbb”);
    上面代码在C#内不能执行,new string的创建方式如下
    string b=new string(new char[] {‘b’,’b’,’b’}); 此方式会产生5个临时变量
    下列代码在运行中会发生什么问题?如何避免?

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

    运行错误,不能遍历时修改,可以使用for循环代替。
    反射的实现原理?
    答:审查元数据并收集关于它的类型信息的能力。
    可以得到程序集中的属性和方法
    实现步骤:
    1,导入using System.Reflection;
    2 Assembly.Load(“程序集”)加载程序集,返回类型是一个Assembly
    3 foreach (Type type in assembly.GetTypes()) { string t = type.Name; } 得到程序集中所有类的名称
    4,Type type = assembly.GetType(“程序集.类名”);获取当前类的类型
    5,Activator.CreateInstance(type); 创建此类型实例
    6,MethodInfo mInfo = type.GetMethod(“方法名”);获取当前方法
    7,mInfo.Invoke(null,方法参数);
    .Net与Mono的关系?
    mono是.net的一个开源跨平台工具,就类似java虚拟机,java本身不是跨平台语言,但运行在虚拟机上就能够实现了跨平台。.net只能在windows下运行,mono可以实现跨平台跑,可以运行于linux,Unix,Mac OS等。
    结构体和类有何区别?
    结构体是值类型,直接存放数据,类是引用类型。
    委托是什么?有何用处?
    委托是一种类型,可以将方法当作参数进行传递:将方法引用封装在委托对象内,将委托对象传递给调用方法,调用端可以利用委托进行占位使之不必关心具体执行。
    协程和C#线程之间的区别是什么?
    多线程程序同时运行多个线程,除主线程之外的线程无法访问Unity3D的对象、组件、方法。
    协程可以在主线程运行时同时开启另一段逻辑处理,来协助当前程序的执行。在StartCoroutine的函数体里处理一段代码时,利用yield语句等待执行结果,这期间不影响主程序的继续执行。可以用来控制运动、序列以及对象的行为。任一指定时刻只有一个协程在运行。
    Render的作用?描述MeshRender和SkinnedMeshRender的关系与不同
    渲染器可以将物体渲染至屏幕,MeshRender是用于把网格渲染出来的组件,SkinnedMeshRender 多了bones组件,MeshRender不支持骨骼动画,而SkinnnedMeshRender支持骨骼动画。
    alpha blend 工作原理
    实际显示颜色 = 前景颜色Alpha/255 + 背景颜色(255-Alpha)/255
    请描述游戏动画有哪几种,以及其原理。
    主要有关节动画、单一网格模型动画(关键帧动画)、骨骼动画。
    关节动画把角色分成若干独立部分,一个部分对应一个网格模型,部分的动画连接成一个整体的动画,角色比较灵活Quake2中使用了这种动画。
    单一网络模型动画由一个完整的网格模型构成,在动画序列的关键帧里记录各个顶点的原位置及其改变量,然后插值运算实现动画效果,角色动画较真实。
    骨骼动画,广泛应用的动画方式,集成了以上两个方式的优点,骨骼按角色特点组成一定的层次结构,由关节相连,可做相对运动,皮肤作为单一网格蒙在骨骼之外,决定角色的外观。皮肤网格每一个顶点都会受到骨骼的影响,从而实现完美的动画。(骨骼动画是由关节动画发展而来的,如今基本都使用骨骼动画来实现角色动画)
    关节组件?
    https://www.cnblogs.com/Godblessyou/p/7613870.html

    • Hinge Joint铰链关节 , 该关节会对刚体进行约束,使它们就好像被连接在一个铰链上那样运动。它非常适用于对门的模拟,也适用于对模型链及钟摆等物体的模拟。
    • Fixed Joint固定关节,用于约束一个游戏对象对另一个游戏对象的运动。类似于对象的父子关系,但它是通过物理系统来实现而不像父子关系那样是通过Transform属性来进行约束。

    固定关节适用于以下的情形:当希望将对象较容易与另—个对象分开时,或者连接两个没有父子关系的对象使其一起运动,使用固定关节的对象自身需要有—个刚体组件。

    • Spring Joint弹簧关节, 弹簧关节允许一个带有刚体的游戏对象被拉向—个指定的目标位置,这个目标可以是另一个刚体对象或者世界。当游戏对象离目标位置越来越远时,弹簧关节会对其施加一个作用力使其回到目标的原点位置,类似橡皮筋或者弹弓的效果。
    • Character Joint角色关节, 角色关节主要用于表现布娃娃效果,它是扩展的球关节,可用于限制每一个轴向上的关节
    • 可配置关节(Configuration Joint)可配置关节组件支持用户自定义关节,它开放了Physics引擎中所有与关节相关的属性,因此可像真他类型的关节那样来创造各种行为。可配置关节有两类主要的功能:移动/旋转限制和移动/旋转加速度。

    两种阴影判断的方法工作原理

    Vertex Shader是什么?怎么计算?
    顶点着色,渲染流水线几何阶段的一部分,从模型获取顶点法线等信息后,可以计算其从模型空间到齐次空间的信息,(模型空间-世界空间-投影坐标-齐次坐标)
    MipMap是什么?作用?
    纹理纹素与渲染像素不匹配,纹素大于像素时会出现摩尔纹/走样,需要mipmap直接可以采样小图,内存变大1/3
    物理更新一般在哪个系统函数里?
    FixedUpdate,每固定帧绘制时执行一次,和update不同的是FixedUpdate是渲染帧执行,如果你的渲染效率低下的时候FixedUpdate调用次数就会跟着下降。FixedUpdate比较适用于物理引擎的计算,因为是跟每帧渲染有关。Update就比较适合做控制。
    游戏开发中的动画,运动,都是是基于帧率来进行驱动, FixedUpdate方法被项目的Fixed Timestep值控制,该值默认为0.02(50Hz)。
    移动相机动作在哪个函数里,为什么在这个函数里。
    LateUpdate,,是在所有update结束后才调,比较适合用于命令脚本的执行。官网上例子是摄像机的跟随,都是在所有update操作完才跟进摄像机,不然就有可能出现摄像机已经推进了,但是视角里还未有角色的空帧出现。
    一个场景放置多个camera并同时处于活动状态,会发生什么
    实际看到的画面由多个camera的画面组成,由depth、Clear Flag、Culling Mask都会影响最终合成效果。
    渲染管线?
    1.应用阶段:准备基本数据,粗粒度剔除,进行渲染设置,输出到几何阶段
    2.几何阶段:顶点着色器,曲面细分,几何着色器,顶点裁剪,屏幕映射
    3光栅化阶段:三角形(点/线)设置,三角形(点/线)遍历,片段着色器
    光栅化后与逐片元之前会进行 Early-z / z-prepass
    4.逐片元操作:裁剪测试,透明度测试,模板测试,深度测试,混合
    x.后处理
    如何优化内存?
    有很多种方式,例如
    1.压缩自带类库;
    2.将暂时不用的以后还需要使用的物体隐藏起来而不是直接Destroy掉;
    3.释放AssetBundle占用的资源;
    4.降低模型的片面数,降低模型的骨骼数量,降低贴图的大小;
    5.使用光照贴图,使用多层次细节(LOD),使用着色器(Shader),使用预设(Prefab)。
    在类的构造函数前加上static会报什么错?为什么?
    构造函数格式为 public+类名如果加上static会报错(静态构造函数不能有访问修饰符)
    原因:静态构造函数不允许访问修饰符,也不接受任何参数;
    无论创建多少类型的对象,静态构造函数只执行一次;
    运行库创建类实例或者首次访问静态成员之前,运行库调用静态构造函数;
    静态构造函数执行先于任何实例级别的构造函数;
    显然也就无法使用this和base来调用构造函数。
    两个矩形求交?
    两个矩形相交的条件:两个矩形的中心距离在X和Y轴上都小于两个矩形长或宽的一半之和.
    客户端与服务器交互方式有几种?
    socket通常也称作”套接字”,实现服务器和客户端之间的物理连接,并进行数据传输,主要有UDP和TCP两个协议。Socket处于网络协议的传输层。
    http协议传输的主要有http协议 和基于http协议的Soap协议(web service),常见的方式是 http 的post 和get 请求,web 服务。