Unity面试题ABC(Yanlz+A经典面试题+C#问题+Unity问题+...+F高薪就业+...+立钻哥哥+...)

《Unity面试题》

版本linux

做者程序员

参与者面试

完成日期正则表达式

备注算法

Unity_JobView_V01_1.0数据库

严立钻编程

 

2018.07.26设计模式

 

 

 

 

 

 

 

##《Unity面试题》发布说明:数组

++++“Unity面试题”是对在Unity职位面试中相关技术点的总结,立钻哥哥按照一个简单的章节分类进行整理。缓存

++++固然,这些技术点有些是Unity经常使用的技术点,有些是各类面试题筛选整理,也有些是对Unity面试点的推断拓展。

++++“Unity面试题”将打形成Unity技术宝库,不可是面试的重要参考资料,也是对Unity知识点的汇总。

++++“Unity面试题”将采用简单概述,不拓展,将每一个技术点限定在简短篇幅中。

 

 

++++Unity面试题ABChttp://www.javashuo.com/article/p-mwacxwca-gm.html

++++Unity面试题Dhttp://www.javashuo.com/article/p-wuwcrclr-s.html

++++Unity面试题Ehttp://www.javashuo.com/article/p-hmabbtmc-ba.html

++++Unity面试题Fhttp://www.javashuo.com/article/p-olslkfao-cq.html

 

 

 

##《Unity面试题》目录:

#第一篇:Unity经典面试题

#第二篇:C#问题

#第三篇:Unity问题

#第四篇:Unity模拟面试

#第五篇:Unity面试进阶

#第六篇:立钻哥哥带您高薪就业

 

 

 

 

 

#第一篇:Unity经典面试题

#第一篇:Unity经典面试题

#第一篇:Unity经典面试题

++++1A.01:什么是协同程序?

++++1A.02:请简述ArrayList和List的主要区别?

++++1A.03:MeshRender中material和sharedmaterial的区别?

++++1A.04:简述一下对象池,你以为在FPS里哪些东西适合使用对象池?

++++1A.05:什么叫作链条关节?

++++1A.06:Unity3d提供了一个用于保存和读取数据的类(PlayerPrefs),其用来操做的数据类型有哪三种,请列出保存和读取整形数据的函数?

++++1A.07:Unity3d脚本从唤醒到销毁有着一套比较完整的生命周期,请列出系统自带的几个重要的方法?

++++1A.08:物理更新通常放在哪一个系统函数里?

++++1A.09:LOD是什么,优缺点是什么?

++++1A.10:MipMap是什么,做用?

++++1A.11:结构体和类有何区别?

++++1A.12:ref参数和out参数是什么?有什么区别?

++++1A.13:C#的委托是什么?有何用处?

++++1A.14:如何优化内存?

++++1A.15:代码分析查看问题?

++++1A.16:Unity3D Shader分哪几种,有什么区别?

++++1A.17:C#中四种访问修饰符是哪些?各有什么区别?

++++1A.18:CharacterController和Rigidbody的区别?

++++1A.19:移动摄像机的动做放在哪一个系统函数中,为何放在这个函数中?

++++1A.20:获取、增长、删除组件的命令分别是什么?

++++1A.21:请简述如何在不一样分辨率下保持UI的一致性?

++++1A.22:UNITY3d在移动设备上的一些优化资源的方法?

++++1A.23:请描述Interface与抽象类之间的不一样?

++++1A.24:向量的点乘,叉乘及归一化的意义?

++++1A.25:请简述private,public,protected,internal的区别?

++++1A.26:Unity3D的协程和C#线程之间的区别是什么?

++++1A.27:简述StringBuilder和String的区别?

++++1A.28:值类型和引用类型有何区别?

++++1A.29:动态加载资源的方式?

++++1A.30:在类的构造函数前加上static会报什么错?为何?

++++1A.31:动态加载资源的方式?

++++1A.32:什么是DrawCall? DrawCall高了有什么影响?如何下降DrawCall?

++++1A.34:List(链表)和数组的区别在哪里?

++++1A.35:请简述GC(垃圾回收)产生的缘由,并描述如何避免?

++++1A.38:什么是动态合批?跟静态合批有什么区别?

++++1A.39:什么是LightMap?

++++1A.40:Unity3D中的碰撞器和触发器的区别?

 

 

 

 

##1A.01:什么是协同程序?

##1A.01:什么是协同程序?

++1A.01:什么是协同程序?

++++立钻哥哥:协程称为协同程序,即在主线程运行的同时开启另外一段逻辑,来协助当前程序的执行。

++++StartCoroutine()是开启协程,StopCoroutine()是关闭协程,协程的返回值是IEnumerator类型,而在协程内部必须有yield return ***

++++IEnumerator用来记录执行到yield return的位置,每次执行协程时都是从当前位置向后执行,而不是从协程的最开始位置执行,除非只有一个yield return

++++在一个主程序中能够开启多个协程。

 

 

 

 

##1A.02:请简述ArrayList和List的主要区别?

##1A.02:请简述ArrayList和List的主要区别?

++1A.02:请简述ArrayList和List的主要区别?

++++立钻哥哥:ArrayList存在不安全类型(ArrayList会把全部插入其中的数据都当作Object来处理)装箱拆箱的操做。

++++List是泛型,能够指定特定的类型,避免过多的装箱拆箱操做,增长对内存的消耗。

 

 

 

 

##1A.03:MeshRender中material和sharedmaterial的区别?

##1A.03:MeshRender中material和sharedmaterial的区别?

++1A.03:MeshRender中material和sharedmaterial的区别?

++++立钻哥哥:修改sharedMaterial将改变全部使用这个材质的物体外观,而且也改变储存在工程里的材质设置。

++++不推荐修改由sharedMaterial返回的材质。

++++若是想修改渲染器的材质,使用material替代。

 

 

 

 

##1A.04:简述一下对象池,你以为在FPS里哪些东西适合使用对象池?

##1A.04:简述一下对象池,你以为在FPS里哪些东西适合使用对象池?

++1A.04:简述一下对象池,你以为在FPS里哪些东西适合使用对象池?

++++立钻哥哥:对象池(ObjectPool)就存放须要被反复调用资源的一个空间。

++++当一个对象会大量生成的时候,若是每次都销毁,建立会很费时间,经过对象池把暂时不用的对象放到一个池中(也就是一个集合),

++++当下次要从新生成这个对象的时候先去池中查找一下是否有可用的对象,若是有的话就直接拿出来使用,不须要再建立,若是池中没有可用的对象,才须要从新建立,利用空间换时间来达到游戏的高速运行效果。

++++在FPS游戏中常被大量复制的对象包括:子弹,敌人,粒子等。

 

 

 

 

##1A.05:什么叫作链条关节?

##1A.05:什么叫作链条关节?

++1A.05:什么叫作链条关节?

++++立钻哥哥:链条关节(Hinge Joint),能够模拟两个物体间用一根链条链接在一块儿的状况,能保持两个物体在一个固定距离内部相互移动而不产生做用力,可是达到固定距离后就会产生拉力。

 

 

 

 

##1A.06:Unity3d提供了一个用于保存和读取数据的类(PlayerPrefs),其用来操做的数据类型有哪三种,请列出保存和读取整形数据的函数?

##1A.06:Unity3d提供了一个用于保存和读取数据的类(PlayerPrefs),其用来操做的数据类型有哪三种,请列出保存和读取整形数据的函数?

++1A.06:Unity3d提供了一个用于保存和读取数据的类(PlayerPrefs),其用来操做的数据类型有哪三种,请列出保存和读取整形数据的函数?

++++立钻哥哥:PlayerPrefs提供用来操做的数据类型是:int, float, string;

++++保存和读取整形数据的函数:PlayerPrefs.SetInt(); PlayerPrefs.GetInt();

 

 

 

 

##1A.07:Unity3d脚本从唤醒到销毁有着一套比较完整的生命周期,请列出系统自带的几个重要的方法?

##1A.07:Unity3d脚本从唤醒到销毁有着一套比较完整的生命周期,请列出系统自带的几个重要的方法?

++1A.07:Unity3d脚本从唤醒到销毁有着一套比较完整的生命周期,请列出系统自带的几个重要的方法?

++++立钻哥哥:比较完整的脚本的生命周期: 【Awake()】=>【OnEnable()】=>【Start()】=>【FixedUpdate()】=>【Update()】=>【LateUpdate】=>【OnGUI()】=>【OnDisable()】=>【OnDestroy()

 

 

 

 

##1A.08:物理更新通常放在哪一个系统函数里?

##1A.08:物理更新通常放在哪一个系统函数里?

++1A.08:物理更新通常放在哪一个系统函数里?

++++立钻哥哥:物理更新使用FixedUpdate(),每固定帧绘制时执行一次,和Update()不一样的是FixedUpdate()是渲染帧执行,

++++若是设备的渲染效率低下的时候,FixedUpdate()调用次数就会跟着降低。

++++FixedUpdate()比较适用于物理引擎的计算,由于是跟每帧渲染有关。

++++Update()就比较适合作控制。

 

 

 

 

##1A.09:LOD是什么,优缺点是什么?

##1A.09:LOD是什么,优缺点是什么?

++1A.09:LOD是什么,优缺点是什么?

++++立钻哥哥:LOD(Level of detail)多层次细节,是最经常使用的游戏优化技术。

++++LOD按照模型的位置和重要程度决定物体渲染的资源分配,下降非重要物体的面数和细节度,从而得到高效率的渲染运算。(LOD的缺点:增长了内存。)

 

 

 

 

##1A.10:MipMap是什么,做用?

##1A.10:MipMap是什么,做用?

++1A.10:MipMap是什么,做用?

++++立钻哥哥:MipMap技术有点相似于LOD技术,可是不一样的是,LOD针对的是模型资源,而MipMap针对的纹理贴图资源。

++++使用MipMap后,贴图会根据摄像机距离的远近,选择使用不一样精度的贴图。

++++MipMap的缺点:会占用内存,由于MipMap会根据摄像机远近不一样而生成对应的八个贴图,因此必然占内存。

++++MipMap的优势:会优化显存带宽,用来减小渲染,由于能够根据实际状况,会选择适合的贴图来渲染,距离摄像机越远,显示的贴图像素越低,越近像素越高。

 

 

 

 

##1A.11:结构体和类有何区别?

##1A.11:结构体和类有何区别?

++1A.11:结构体和类有何区别?

++++立钻哥哥:结构体是一种值类型,而类是引用类型。

++++值类型、引用类型是根据数据存储的角度来分的。(值类型用于存储数据的值,引用类型用于存储对实际数据的引用)

++++结构体就当成值来使用的,类则经过引用来对实际数据操做。

 

 

 

 

##1A.12:ref参数和out参数是什么?有什么区别?

##1A.12:ref参数和out参数是什么?有什么区别?

++1A.12:ref参数和out参数是什么?有什么区别?

++++立钻哥哥:refout参数的效果同样,都是经过关键字找到定义在主函数里面的变量的内存地址,并经过方法体内的语法改变它的大小。

++++不一样点就是输出参数必须对参数进行初始化。(ref必须初始化out参数必须在函数里赋值。)

++++ref参数是引用,out参数为输出参数。

 

 

 

 

##1A.13:C#的委托是什么?有何用处?

##1A.13:C#的委托是什么?有何用处?

++1A.13:C#的委托是什么?有何用处?

++++立钻哥哥:delegate委托相似于一种安全的指针引用,在使用它时是当作类来看待而不是一个方法,至关于对一组方法的列表的引用。

++++用处:用委托使得程序员能够将方法引用封装到委托对象内。而后能够将该委托对象传递给可调用所引用方法的代码,而没必要在编译时知道将调用哪一个方法。

++++delegate委托与C++中的函数指针不一样:委托是面向对象的,并且是类型安全的。

 

 

 

 

##1A.14:如何优化内存?

##1A.14:如何优化内存?

++1A.14:如何优化内存?

++++立钻哥哥:一、压缩自带类库;

++++二、将暂时不用的之后还须要使用的物体隐藏起来而不是直接Destroy掉;

++++三、释放AssetBundle占用的资源;

++++四、下降模型的片面数,下降模型的骨骼数量,下降贴图的大小;

++++五、使用光照贴图(LightMap),使用多层次细节(LOD),使用着色器(Shader),使用预设(Prefab)等;

++++六、代码中少产生临时变量。

 

 

 

 

##1A.15:代码分析查看问题?

##1A.15:代码分析查看问题?

++1A.15:代码分析查看问题?

List<int> ls = new List<int>(new int[]{ 1, 2, 3, 4, 5});

foreach(int item in ls){

    Console.WriteLine(item * item);

    ls.Remove(item);

}

++++立钻哥哥:该代码会产生运行时错误,在ls.Remove(item)这行,由于foreach是只读的。不能一边遍历一边修改。

 

 

 

 

##1A.16:Unity3D Shader分哪几种,有什么区别?

##1A.16:Unity3D Shader分哪几种,有什么区别?

++1A.16:Unity3D Shader分哪几种,有什么区别?

++++立钻哥哥:Unity3D Shader分3种:固定功能管线着色器、表面着色器、顶点片断着色器。

++++表面着色器:抽象层次比较高,它能够轻松地以简洁方式实现复杂着色。(表面着色器可同时在前向渲染和延迟渲染模式下正常工做)

++++顶点片断着色器:能够很是灵活地实现须要的效果,可是须要编写更多的代码,而且很难与Unity的渲染管线完美集成;

++++固定功能管线着色器:能够做为前两种着色器的备用选择,当硬件没法运行哪些酷炫Shader时,能够经过固定功能管线着色器来绘制出一些基本的效果。

 

 

 

 

##1A.17:C#中四种访问修饰符是哪些?各有什么区别?

##1A.17:C#中四种访问修饰符是哪些?各有什么区别?

++1A.17:C#中四种访问修饰符是哪些?各有什么区别?

++++立钻哥哥:C#中有四种访问修饰符:publicprivateprotectedinternal

++++public:存取不受限制;

++++private:只有包含该成员的类能够存取;

++++protected:只有包含该成员的类以及派生类能够存取;

++++internal:只有当前工程能够存取;

 

 

 

 

##1A.18:CharacterController和Rigidbody的区别?

##1A.18:CharacterController和Rigidbody的区别?

++1A.18:CharacterController和Rigidbody的区别?

++++立钻哥哥:Rigidbody具备彻底真实物理的特性,而CharacterController能够说是受限的Rigidbody,具备必定的物理效果但不是彻底真实的。

 

 

 

 

##1A.19:移动摄像机的动做放在哪一个系统函数中,为何放在这个函数中?

##1A.19:移动摄像机的动做放在哪一个系统函数中,为何放在这个函数中?

++1A.19:移动摄像机的动做放在哪一个系统函数中,为何放在这个函数中?

++++立钻哥哥:摄像机移动放在LateUpdate()

++++在全部Update()操做完才跟进摄像机,否则就有可能出现摄像机已经推动了,可是视角里尚未角色的空帧出现。

 

 

 

 

##1A.20:获取、增长、删除组件的命令分别是什么?

##1A.20:获取、增长、删除组件的命令分别是什么?

++1A.20:获取、增长、删除组件的命令分别是什么?

++++立钻哥哥:GetComponent()AddComponent()Destroy()

++++获取组件:GetComponent();

++++增长组件:AddComponent();

++++删除组件:Destroy();

 

 

 

 

##1A.21:请简述如何在不一样分辨率下保持UI的一致性?

##1A.21:请简述如何在不一样分辨率下保持UI的一致性?

++1A.21:请简述如何在不一样分辨率下保持UI的一致性?

++++立钻哥哥:NGUI很好的解决了屏幕适配问题,屏幕分辨率的自适应性,原理就是计算出屏幕的宽高比跟原来的预设的屏幕分辨率求出一个对比值,而后修改摄像机的size。

++++UGUI经过锚点和中心点和分辨率也解决了这个分辨率自适应问题。

 

 

 

 

##1A.22:UNITY3d在移动设备上的一些优化资源的方法?

##1A.22:UNITY3d在移动设备上的一些优化资源的方法?

++1A.22:UNITY3d在移动设备上的一些优化资源的方法?

++++立钻哥哥:一、使用AssetBundle,实现资源分离和共享,将内存控制到200M以内,同时也能够实现资源的在线更新;

++++二、顶点数对渲染不管是CPU仍是GPU都是压力最大的贡献者,下降顶点数到8万如下,fps稳定到30帧左右;

++++三、只使用一盏动态光,不使用阴影,不使用光照探头;

++++四、粒子系统是CPU上的大头:

--A、剪裁粒子系统;

--B、合并同时出现的粒子系统;

--C、本身实现轻量级的粒子系统;

++++五、Animator也是一个效率奇差的地方:

--A、把不须要跟骨骼动画和动做过渡的地方所有使用Animation,控制骨骼数量在30根如下;

--B、Animator出视野不更新;

--C、删除无心义的Animator

--D、Animator的初始化很耗时(能不用尽可能不用Animator);

--E、除主角外都不要跟骨骼运动(Apply root motion);

--F、绝对禁止掉那些不带刚体带包围盒的物体(static collider)运动;

++++六、NGUI的代码效率不好,基本上runtime的时候对CPU的共享和Render不相上下;

++++七、每帧递归的计算finalalpha改成只有初始化和变更时计算;

++++八、去掉法线计算;

++++九、不要每帧计算viewSize和windowSize;

++++十、fillDrawCall时构建顶点缓存使用array.Copy();

++++十一、代码剪裁:使用strip level,使用.Net2.0 subset;

++++十二、尽可能减小Smooth Group;

++++1三、给美术定一个严格的通过科学验证的美术标准,并在U3D里面配以相应的检查工具;

 

 

 

 

##1A.23:请描述Interface与抽象类之间的不一样?

##1A.23:请描述Interface与抽象类之间的不一样?

++1A.23:请描述Interface与抽象类之间的不一样?

++++立钻哥哥:一、一个类只能继承一个抽象类,但能够同时继承多个接口;

++++二、抽象类里面能够有字段,接口里面不能有字段;

++++三、抽象类里面能够有private私有成员,接口里面全部的成员都是public公有的;

++++四、抽象类的成员能够带或者不带访问修饰符,接口里面必定不带访问修饰符;

++++五、一个子类继承抽象类时需重写里面的抽象方法,当子类是抽象类时能够不用重写;而继承接口时必定要实现接口里面的成员;

 

 

 

 

##1A.24:向量的点乘,叉乘及归一化的意义?

##1A.24:向量的点乘,叉乘及归一化的意义?

++1A.24:向量的点乘,叉乘及归一化的意义?

++++立钻哥哥:一、点乘描述了两个向量的类似程度,结果越大两向量越类似,还可表示投影;

++++二、叉乘获得的向量垂直于原来的两个向量;

++++三、标准化向量:用在只关心方向,不关心大小的时候;

 

 

 

 

##1A.26:Unity3D的协程和C#线程之间的区别是什么?

##1A.26:Unity3D的协程和C#线程之间的区别是什么?

++1A.26:Unity3D的协程和C#线程之间的区别是什么?

++++立钻哥哥:多线程程序同时运行多个线程,而在任一指定时刻只有一个协程在运行,而且这个正在运行的协同程序只在必要时才被挂起。

++++除主线程以外的线程没法访问Unity3D的对象、组件、方法。

++++Unity3D没有多线程的概念,不过Unity也给咱们提供了StartCoroutine(协同程序)和LoadLevelAsync(异步加载关卡)后台加载场景的方法。

++++StartCoroutine为何叫协同程序,所谓协同,就是当在StartCoroutine的函数体里处理一段代码时,利用yield语句等待执行结果,这期间不影响主程序的继续执行,能够协同工做。

 

 

 

 

##1A.27:简述StringBuilder和String的区别?

##1A.27:简述StringBuilder和String的区别?

++1A.27:简述StringBuilder和String的区别?

++++立钻哥哥:String是字符串常量。

++++StringBuffer是字符串变量,线程安全;

++++StringBuilder是字符串变量,线程不安全。

++++String类型是个不可变的对象,当每次对String进行改变时都须要生成一个新的String对象,而后将指针指向一个新的对象,若是在一个循环里面,不断的改变一个对象,就要不断用String类型;

++++StringBuilder对象在作字符串链接操做时是在原来的字符串上进行修改,改善了性能。

++++链接操做频繁的时候,使用StringBuilder对象。(建议在不断更改对象的地方不要使用String

 

 

 

 

##1A.28:值类型和引用类型有何区别?

##1A.28:值类型和引用类型有何区别?

++1A.28:值类型和引用类型有何区别?

++++立钻哥哥:一、值类型的数据存储在内存的栈中;引用类型的数据存储在内存的堆中,而内存单元中只存放堆中对象的地主;

++++二、值类型存取速度快;引用类型存取速度慢;

++++三、值类型表示实际数据;引用类型表示指向存储在内存堆中的数据的指针或引用;

++++四、值类型继承自System.ValueType;引用类型继承自System.Object

++++五、栈的内存分配是自动释放;而堆在.NET中会有GC来释放;

++++六、值类型的变量直接存放实际的数据;而引用类型的变量存放的则是数据的地址,即对象的引用;

 

 

 

 

##1A.29:动态加载资源的方式?

##1A.29:动态加载资源的方式?

++1A.29:动态加载资源的方式?

++++立钻哥哥:一、经过Resources模块,调用它的Load函数:能够直接load并返回某个类型的Object,前提是要把这个资源放在以Resources命名的文件夹下,Unity无论有没有场景引用,都会将其所有打入到安装包中。(Resources.Load()

++++二、经过AssetBundle的形式:即将资源打成AssetBundle放到服务器或本地磁盘,而后使用WWW模块get下来,而后从这个AssetBundleLoad某个object。(AssetBundle

++++三、经过AssetDatabase.loadAsset:这种方式只在Editor范围内有效,游戏运行时没有这个函数,它一般是在开发中调试用的。(AssetDatabase资源数据库)

++++区别:Resources的方式须要把全部资源所有打入安装包,这对游戏的分包发布和版本升级(patch)是不利的,因此Unity推荐的方式是AssetBundle。(把资源打包成几个小的bundle,用哪一个就Load哪一个,这样还能分包发布和Patch)

++++说明:在开发过程当中,不可能每更新一个资源就打一次Bundle,因此Editor环境下可使用AssetDatabase来模拟,这一般须要咱们封装一个Dynamic Resource动态资源的Loader模块,在不一样的环境下作不一样实现。

 

 

 

 

##1A.30:在类的构造函数前加上static会报什么错?为何?

##1A.30:在类的构造函数前加上static会报什么错?为何?

++1A.30:在类的构造函数前加上static会报什么错?为何?

++++立钻哥哥:构造函数格式为public+类名,若是加上static会报错(静态构造函数不能有访问修饰符)。

++++缘由:静态构造函数不容许访问修饰符,也不接受任何参数;不管建立多少类型的对象,静态构造函数只执行一次;

++++运行库建立类实例或者首次静态成员以前,运行库调用静态构造函数;

++++静态构造函数执行先于任何实例级别的构造函数;

++++显然也就没法使用this和base来调用构造函数;

 

 

 

 

##1A.32:什么是DrawCall?  DrawCall高了有什么影响?如何下降DrawCall?

##1A.32:什么是DrawCall?  DrawCall高了有什么影响?如何下降DrawCall?

++1A.32:什么是DrawCall?  DrawCall高了有什么影响?如何下降DrawCall?

++++立钻哥哥:Unity中,每次引擎准备数据并通知GPU的过程称为一次Draw Call

++++DrawCall越高对显卡的消耗就越大。

+++下降DrawCall的方法:

--一、Dynamic Batching动态批处理;

--二、Static Batching静态批处理;

--三、高级特性Shader降级为统一的低级特性的Shader;

 

 

 

 

##1A.34:List(链表)和数组的区别在哪里?

##1A.34:List(链表)和数组的区别在哪里?

++1A.34:List(链表)和Array(数组)的区别在哪里?

++++立钻哥哥:从逻辑结构和内存存储来看:

++++一、从逻辑结构来看:

--1.A、Array数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的状况。当数据增长时,可能超出原先定义的元素个数;当数据减小时,形成内存浪费;Array数组能够根据下标直接存取。

--1.B、List链表动态地进行存储分配,能够适应数据动态地增减的状况,且能够方便地插入、删除数据项。(Array数组中插入、删除数据项时,须要移动其它数据项,很是繁琐)

++++二、从内存存储来看:

--2.A、(静态)Array数组从堆中分配空间,对于程序员方便快速,可是自由度小。

--2.B、List链表从堆中分配空间,自由度大可是申请管理比较麻烦。

++++能够看出:若是须要快速访问数据,不多或不插入和删除元素,就应该用Array数组;若是须要常常插入和删除元素就须要用List链表数据结构。

 

 

 

 

##1A.35:请简述GC(垃圾回收)产生的缘由,并描述如何避免?

##1A.35:请简述GC(垃圾回收)产生的缘由,并描述如何避免?

++1A.35:请简述GC(垃圾回收)产生的缘由,并描述如何避免?

++++立钻哥哥:当用new建立一个对象时,当可分配的内存不足,GC就会去回收未使用的对象,可是GC的操做是很是复杂的,会占用不少CPU时间,对于移动设备来:频繁的垃圾回收会严重影响性能。

++++建议能够避免GC频繁操做:

--一、减小用new建立对象的次数,在建立对象时会产生内存碎片;

--二、使用公用的对象(静态成员,常量),可是不能乱用,由于静态成员和常量的生命周期是整个应用程序;

--三、在拼接大量字符串时使用StringBuilder。

--四、使用Object Pool(对象池)技术;

 

 

 

 

##1A.38:什么是动态合批?跟静态合批有什么区别?

##1A.38:什么是动态合批?跟静态合批有什么区别?

++1A.38:什么是动态合批?跟静态合批有什么区别?

++++立钻哥哥:若是动态物体共用着相同的材质,那么Unity会自动对这些物体进行批处理。(动态批处理操做是自动完成的,并不须要咱们进行额外的操做。)

++++动态批处理(Dynamic Batching):一切都是自动的,不须要作任何操做,并且物体是能够移动的,可是限制不少。

++++静态批处理(Static Batching):自由度很高,限制不多。(缺点:可能会占用更多的内存,并且通过静态批处理后的全部物体都不能够再移动了。)

 

 

 

 

##1A.39:什么是LightMap?

##1A.39:什么是LightMap?

++1A.39:什么是LightMap?

++++立钻哥哥:LightMap称为光照贴图:把灯光和物体设置成静态,而后对灯光进行烘培,此时在物体表面造成一张有灯光效果的贴图。(把场景中的灯光删除掉,物体表面依赖有灯光的效果,这种效果是贴图形成的)

++++LightMap光照贴图的优势:避免动态光照在场景中的实时渲染,减小DrawCall。

 

 

 

 

##1A.40:Unity3D中的Collider碰撞器和Trigger触发器的区别?

##1A.40:Unity3D中的Collider碰撞器和Trigger触发器的区别?

++1A.40:Unity3D中的Collider碰撞器和Trigger触发器的区别?

++++立钻哥哥:Collider碰撞器Trigger触发器的载体,而Trigger触发器只是Collider碰撞器身上的一个属性。

++++当IsTrigger = false时:Collider碰撞器根据物理引擎引起碰撞,产生碰撞的效果,能够调用OnCollisionEnter/Stay/Exit函数;

++++当IsTrigger = true时:Collider碰撞器被物理引擎所忽略,没有碰撞效果,能够调用OnTriggerEnter/Stay/Exit函数。

++++说明:若是既要检测到物体的接触又不想让碰撞检测影响物体移动或要检测一个物件是否通过空间中的某个区域时就能够用Trigger触发器

 

 

 

 

 

#第二篇:C#问题

#第二篇:C#问题

#第二篇:C#问题

++++2B.0一、在类的构造函数前加上static会报什么错?为何?

++++2B.0二、C# StringBuilder类型比string类型的优点是什么?

++++2B.0三、C#函数Func(string a, string b)用Lambda表达式怎么写?

++++2B.0四、数列1,1,2,3,5,8,13,... 第n位数是多少? 用C#递归算法实现?

++++2B.0五、请简述值类型与引用类型的区别?

++++2B.0六、请简述ArrayList和List<>的主要区别?

++++2B.0七、请简述GC(垃圾回收)产生的缘由,并描述如何避免?

++++2B.0八、请描述Interface与抽象类之间的不一样?

++++2B.0九、下列代码在运行中会产生几个临时对象?

++++2B.十、下列代码在运行中会发生什么问题?如何避免?

++++2B.十一、请简述关键字Sealed用在类声明和函数声明时的做用?

++++2B.十二、请简述private,public,protected,internal的区别?

++++2B.1三、反射的实现原理?

++++2B.1四、.Net与Mono的关系?

++++2B.1五、请说出4种面向对象的设计原则,并分别简述它们的含义?

++++2B.1六、HashTable是无序的吗?

 

 

 

 

##2B.0一、在类的构造函数前加上static会报什么错?为何?

##2B.0一、在类的构造函数前加上static会报什么错?为何?

++2B.0一、在类的构造函数前加上static会报什么错?为何?

++++立钻哥哥:在构造函数若是有public修饰的静态构造函数时会报:“静态构造函数中不容许出现访问修饰符”

++++若是什么修饰符都不加的话不会报错,静态构造函数通常是起初始化做用。

 

 

 

 

##2B.0二、C# StringBuilder类型比string类型的优点是什么?

##2B.0二、C# StringBuilder类型比string类型的优点是什么?

++2B.0二、C# StringBuilder类型比string类型的优点是什么?

++++立钻哥哥:StringBuilder的优点在于拼接,string的优点在于对字符串作一些处理。

 

 

 

 

##2B.0三、C#函数Func(string a, string b)用Lambda表达式怎么写?

##2B.0三、C#函数Func(string a, string b)用Lambda表达式怎么写?

++2B.0三、C#函数Func(string a, string b)用Lambda表达式怎么写?

++++立钻哥哥:(a, b)=>{}

 

 

 

 

##2B.0四、数列1,1,2,3,5,8,13,... 第n位数是多少? 用C#递归算法实现?

##2B.0四、数列1,1,2,3,5,8,13,... 第n位数是多少? 用C#递归算法实现?

++2B.0四、数列1,1,2,3,5,8,13,... 第n位数是多少? 用C#递归算法实现?

++++立钻哥哥:

public static int Add(int num){

    //立钻哥哥:递归的必要条件:一、结束条件;二、过程执行什么;

    if(num == 0 || num == 1){

        return 1;

    }else{

        return Add(num - 2) + Add(num - 1);

    }

}

 

 

 

 

##2B.0五、请简述值类型与引用类型的区别?

##2B.0五、请简述值类型与引用类型的区别?

++2B.0五、请简述值类型与引用类型的区别?

++++立钻哥哥:区别:一、值类型存储在内存栈中;引用类型数据存储在内存堆中,而内存单元中存放的是堆中存放的地址。

++++二、值类型存取快;引用类型存取慢;

++++三、值类型表示实际数据;引用类型表示指向存储在内存堆中的数据的指针和引用;

++++四、栈的内存是自动释放的;堆内存是.Net中会由GC来自动释放;

++++五、值类型继承自System.ValueType;引用类型继承自System.Object

 

 

 

 

##2B.0六、请简述ArrayList和List<>的主要区别?

##2B.0六、请简述ArrayList和List<>的主要区别?

++2B.0六、请简述ArrayList和List<>的主要区别?

++++立钻哥哥:ArrayList是非泛型列表,存储数据时把全部的数据都当成object类型存储,存在装箱问题,取出来使用的时候存在拆箱问题,装箱拆箱会使性能变差,并且存在数据安全问题,可是优势在于可让值类型和引用类型相互转换;

++++List是泛型列表,在使用的时候才去定义数据类型,泛型避免了拆箱装箱的问题,存入读取速度较快,类型也更安全;

 

 

 

 

##2B.0七、请简述GC(垃圾回收)产生的缘由,并描述如何避免?

##2B.0七、请简述GC(垃圾回收)产生的缘由,并描述如何避免?

++2B.0七、请简述GC(垃圾回收)产生的缘由,并描述如何避免?

++++立钻哥哥:GC回收堆上的内存。

++++由于GC会消耗性能,如何避免GC:

--一、减小new产生对象的次数;

--二、使用共用的对象(静态成员);

--三、若是字符串拼接多的:将String换为StringBuilder

 

 

 

 

##2B.0八、请描述interface接口与abstract抽象类之间的不一样?

##2B.0八、请描述interface接口与abstract抽象类之间的不一样?

++2B.0八、请描述interface接口与abstract抽象类之间的不一样?

++++立钻哥哥:从语法、用法来分析:

++++一、语法不一样处:

--1.A、抽象类中能够有字段;接口没有字段;

--2.B、抽象类中能够实现成员;接口只能包含抽象成员;

--3.C、抽象类中全部成员修饰符均可以使用;接口中全部的成员都是对外的,因此不须要修饰符修饰;

++++二、用法不一样处:

--2.A、抽象类是概念的抽象;接口关注于行为;

--2.B、抽象类的子类与父类的关系是泛化关系,耦合度较高;而实现类和接口之间是实现的关系,耦合度比泛化低;

--3.C、一个类只能继承一个类;可是能够实现多个接口。

 

 

 

 

##2B.0九、下列代码在运行中会产生几个临时对象?

##2B.0九、下列代码在运行中会产生几个临时对象?

++2B.0九、下列代码在运行中会产生几个临时对象?

string a = new string(abc);

a = (a.ToUpper() + 123).SubString(0, 2);

++++立钻哥哥:3个临时变量。

++++说明:第一行是会出错的。应该这样初始化:string b = new string(new char[]{a,b,c});

 

 

 

 

##2B.十、下列代码在运行中会发生什么问题?如何避免?

##2B.十、下列代码在运行中会发生什么问题?如何避免?

++2B.十、下列代码在运行中会发生什么问题?如何避免?

List<int > ls = new List<int>(new int[]{ 1,2,3,4,5});

foreach(int item in ls){

    Console.WriteLine(item*item);

    ls.Remove(item);

}

++++立钻哥哥:或产生运行时错误,由于foreach是只读的。不能一边遍历一边修改。

++++如何避免:使用foreach的时候不要对内容进行修改,若是要修改可使用for

 

 

 

 

##2B.十一、请简述关键字Sealed用在类声明和函数声明时的做用?

##2B.十一、请简述关键字Sealed用在类声明和函数声明时的做用?

++2B.十一、请简述关键字Sealed用在类声明和函数声明时的做用?

++++立钻哥哥:Sealed访问修饰符用于类时,该类是密封类,可防止其余类继承此类。

++++在方法中使用则可防止派生类重写此方法。

 

 

 

 

##2B.十二、请简述private,public,protected,internal的区别?

##2B.十二、请简述private,public,protected,internal的区别?

++2B.十二、请简述private,public,protected,internal的区别?

++++立钻哥哥:private:仅对该类公开;

++++public:对任何类和成员都公开,无限制访问;

++++protected:对该类和其派生类公开;

++++internal:只能在包含该类的程序集中访问该类;

++++protected internalprotected + internal;

 

 

 

 

##2B.1三、反射的实现原理?

##2B.1三、反射的实现原理?

++2B.1三、反射的实现原理?

++++立钻哥哥:审查元数据并收集关于它的类型信息的能力

 

 

 

 

##2B.1四、.Net与Mono的关系?

##2B.1四、.Net与Mono的关系?

++2B.1四、.Net与Mono的关系?

++++立钻哥哥:Mono.Net的一个开源跨平台工具

++++ .Net只能在Windows下运行,Mono能够实现跨平台,能够运行在linux,Unix,Mac OS等。

 

 

 

 

##2B.1五、请说出4种面向对象的设计原则,并分别简述它们的含义?

##2B.1五、请说出4种面向对象的设计原则,并分别简述它们的含义?

++2B.1五、请说出4种面向对象的设计原则,并分别简述它们的含义?

++++立钻哥哥:6种设计原则:单一职责原则开放封闭原则里氏替换原则依赖倒置原则接口隔离原则迪米特法则

++++单一职责原则:一个类,最好只作一件事,只有一个引发它的变化;

++++开放封闭原则:对于扩展是开放的,对于更改是封闭的;

++++里氏替换原则:子类必须可以替换其基类;

++++依赖倒置原则:依赖于抽象;

++++接口隔离原则:使用多个小的专门的接口,而不要使用一个大的总接口;

++++迪米特法则:若是两个类没必要彼此通讯,那么这两个类就不该当发生直接的相互做用;

 

 

 

 

##2B.1六、HashTable是无序的吗?

##2B.1六、HashTable是无序的吗?

++2B.1六、HashTable是无序的吗?

++++立钻哥哥:电脑没有绝对的无序,HashTable是经过哈希码让开发者感受无序。

 

 

 

 

 

 

#第三篇:Unity问题

#第三篇:Unity问题

#第三篇:Unity问题

++++3C.A、UI

++++3C.B、碰撞

++++3C.C、动画

++++3C.D、线程和协程

++++3C.E、四元数

++++3C.F、摄像机

++++3C.G、预制物

++++3C.H、Shader

++++3C.I、系统函数

++++3C.J、物理引擎

++++3C.K、Unity引擎问题

++++3C.M、图形图像

 

 

 

 

 

##3C.A、UI

##3C.A、UI

++3C.A、UI

++++3C.A.0一、NGUI Button怎样接受用户点击并调用函数,具体方法名称是什么?

++++3C.A.0二、请简述NGUI中Panel和Anchor的做用?

++++3C.A.0三、为什么你们都在移动设备上寻求U3D原生GUI的替代方案?

++++3C.A.0四、使用原生GUI建立一个能够拖动的窗口命令是什么?

++++3C.A.0五、使用Unity3D实现2D游戏,有几种方式?

 

 

###3C.A.0一、NGUI Button怎样接受用户点击并调用函数,具体方法名称是什么?

###3C.A.0一、NGUI Button怎样接受用户点击并调用函数,具体方法名称是什么?

++3C.A.0一、NGUI Button怎样接受用户点击并调用函数,具体方法名称是什么?

++++立钻哥哥:可使用:直接监听事件、ButtonScript等方式;

++++一、直接监听事件:在按钮上绑定一个带有OnClick脚本,但这种方法不太好用,也不灵活。

++++二、ButtonScript:在按钮上添加BoxCollider,再添加ButtonScript脚本,把要调用的方法放到场景中一个物体上,通常放在摄像机上,由于摄像机一直存在,而后把这个方法添加到ButtonScript脚本里写好的委托里面,因此能够添加多个方法,一旦点击就触发事件。

 

 

 

 

###3C.A.0二、请简述NGUI中Panel和Anchor的做用?

###3C.A.0二、请简述NGUI中Panel和Anchor的做用?

++3C.A.0二、请简述NGUI中Panel和Anchor的做用?

++++立钻哥哥:Panel是一个容器,它将包含全部UI小部件,并负责将所包含的部件组合优化,以减小绘制命令的调用;

++++Anchor是NGUI中屏幕分辨率的自适应性,来适应不一样的分辨率的屏幕显示。

 

 

 

 

###3C.A.0三、为什么你们都在移动设备上寻求U3D原生GUI的替代方案?

###3C.A.0三、为什么你们都在移动设备上寻求U3D原生GUI的替代方案?

++3C.A.0三、为什么你们都在移动设备上寻求U3D原生GUI的替代方案?

++++立钻哥哥:原生GUI的缺点:一、不美观;

++++二、OnGUI很耗费时间;

++++三、使用不方便;

++++四、DrawCall很高;

 

 

 

 

###3C.A.0四、使用原生GUI建立一个能够拖动的窗口命令是什么?

###3C.A.0四、使用原生GUI建立一个能够拖动的窗口命令是什么?

++3C.A.0四、使用原生GUI建立一个能够拖动的窗口命令是什么?

++++立钻哥哥:GUI.DragWindow();

 

 

 

 

###3C.A.0五、使用Unity3D实现2D游戏,有几种方式?

###3C.A.0五、使用Unity3D实现2D游戏,有几种方式?

++3C.A.0五、使用Unity3D实现2D游戏,有几种方式?

++++立钻哥哥:一、使用自己的GUI;

++++二、把摄像机的Projection(投影)值调为Orthographic(正交投影),不考虑Z轴;

++++三、使用2D插件,如:2DToolKit

 

 

 

 

 

##3C.B、碰撞

##3C.B、碰撞

++3C.B、碰撞

++++3C.B.0一、怎么判断两个平面是否相交? 不能用碰撞体,说出计算方法?

++++3C.B.0二、MeshCollider和其余Collider的一个主要不一样点?

++++3C.B.0三、Unity3D中的碰撞器和触发器的区别?

++++3C.B.0四、物体发生碰撞的必要条件?

++++3C.B.0五、当一个细小的高速物体撞向另外一个较大的物体时,会出现什么状况? 如何避免?

 

 

 

###3C.B.0一、怎么判断两个平面是否相交? 不能用碰撞体,说出计算方法?

###3C.B.0一、怎么判断两个平面是否相交? 不能用碰撞体,说出计算方法?

++3C.B.0一、怎么判断两个平面是否相交? 不能用碰撞体,说出计算方法?

++++立钻哥哥:在两个平面上分别取一个向量,而后看是否相交

 

 

 

 

###3C.B.0二、MeshCollider和其余Collider的一个主要不一样点?

###3C.B.0二、MeshCollider和其余Collider的一个主要不一样点?

++3C.B.0二、MeshCollider和其余Collider的一个主要不一样点?

++++立钻哥哥:MeshCollider网格碰撞器,对于复杂网状模型上的碰撞检测,比其余的碰撞检测精确的多,可是相对其余的碰撞检测计算也增多了,因此通常使用网格碰撞也不会在面数比较多的模型上添加,而会作出两个模型:一个超简模能表示物体的形状用于作碰撞检测,一个用于显示

 

 

 

 

###3C.B.0三、Unity3D中的碰撞器和触发器的区别?

###3C.B.0三、Unity3D中的碰撞器和触发器的区别?

++3C.B.0三、Unity3D中的Collider碰撞器和Trigger触发器的区别?

++++立钻哥哥:一、Collider碰撞器物体不能相互进入到对方内部;Trigger触发器能够;

++++二、Trigger触发器角色控制器可使用;Collider碰撞器不能使用;

++++三、Trigger触发器没有物理属性;Collider碰撞器能够有力存在;

++++四、Collider碰撞器调用:OnCollisionEnter/Stay/Exit函数;Trigger触发器调用OnTriggerEnter/Stay/Exit函数;

 

 

 

 

###3C.B.0四、物体发生碰撞的必要条件?

###3C.B.0四、物体发生碰撞的必要条件?

++3C.B.0四、物体发生碰撞的必要条件?

++++立钻哥哥:物体发生碰撞的必要条件:两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigidbody刚体;

 

 

 

 

###3C.B.0五、当一个细小的高速物体撞向另外一个较大的物体时,会出现什么状况? 如何避免?

###3C.B.0五、当一个细小的高速物体撞向另外一个较大的物体时,会出现什么状况? 如何避免?

++3C.B.0五、当一个细小的高速物体撞向另外一个较大的物体时,会出现什么状况? 如何避免?

++++立钻哥哥:会发生穿透(碰撞检测失败了)

++++避免穿透的方法:把刚体的实时碰撞检测打开Collision Detection修改成Continuous Dynamic

 

 

 

 

###3C.B.0六、CharacterController和Rigidbody的区别?

###3C.B.0六、CharacterController和Rigidbody的区别?

++3C.B.0六、CharacterController和Rigidbody的区别?

++++立钻哥哥:CharacterController自带胶囊碰撞器,里面包含有刚体的属性;

++++Rigidbody就是刚体,使物体带有刚体的特征;

 

 

 

 

###3C.B.0七、在Unity3d中物体发生碰撞的整个过程当中,有几个阶段,分别列出对应的阶段函数?

###3C.B.0七、在Unity3d中物体发生碰撞的整个过程当中,有几个阶段,分别列出对应的阶段函数?

++3C.B.0七、在Unity3d中物体发生碰撞的整个过程当中,有几个阶段,分别列出对应的阶段函数?

++++立钻哥哥:物体发生碰撞的整个过程主要是三个阶段:Enter()Stay()Exit()

++++一、Collider.OnCollisionEnter():进入碰撞:当collider/rigidbody开始触动另外一个rigidbody/colliderOnCollisionEnter()被调用。

++++二、Collider.OnCollisionStay():逗留碰撞:每一个collider/rigidbody触动rigidbody/collider,将在每帧调用OnCollisionStay()。(通俗地说:一个碰撞器或刚体触动另外一个刚体或碰撞器,在每帧都会调用OnCollisionStay(),直到它们之间离开不接触。)

++++三、Collider.OnCollisionExit():退出碰撞:当collider/rigidbody中止触动另外一个rigidbody/collider时,OnCollisionExit()被调用。

 

 

 

 

 

 

##3C.C、动画

##3C.C、动画

++3C.C、动画

++++3C.C.0一、一个简单的游戏,怪物会走动/攻击/死亡,游戏角色会走动,跳跃/攻击/阻挡/死亡,还会接受玩家从输入端输入的指令,NPC会走动,他们彼此之间能够相互通讯,请画出以上三种角色的UML图示?

++++3C.C.0二、请描述游戏动画有哪几种,以及其原理?

++++3C.C.0三、反向旋转动画的方法是什么?

++++3C.C.0四、写出Animation的五个方法?

++++3C.C.0五、动画层(AnimationState Layers)的做用是什么?

++++3C.C.0六、ITween插件的做用是什么,ITween做用于世界坐标仍是局部坐标,请列举3个经常使用方法?

++++3C.C.0七、法线贴图、CS动画?

 

 

 

###3C.C.0一、一个简单的游戏,怪物会走动/攻击/死亡,游戏角色会走动,跳跃/攻击/阻挡/死亡,还会接受玩家从输入端输入的指令,NPC会走动,他们彼此之间能够相互通讯,请画出以上三种角色的UML图示?

###3C.C.0一、一个简单的游戏,怪物会走动/攻击/死亡,游戏角色会走动,跳跃/攻击/阻挡/死亡,还会接受玩家从输入端输入的指令,NPC会走动,他们彼此之间能够相互通讯,请画出以上三种角色的UML图示?

++3C.C.0一、一个简单的游戏,怪物会走动/攻击/死亡,游戏角色会走动,跳跃/攻击/阻挡/死亡,还会接受玩家从输入端输入的指令,NPC会走动,他们彼此之间能够相互通讯,请画出以上三种角色的UML图示?

++++立钻哥哥:

 

 

 

 

###3C.C.0二、请描述游戏动画有哪几种,以及其原理?

###3C.C.0二、请描述游戏动画有哪几种,以及其原理?

++3C.C.0二、请描述游戏动画有哪几种,以及其原理?

++++立钻哥哥:主要有关节动画单一网格模型动画(关键帧动画)骨骼动画

++++一、关节动画:把角色分红若干独立部分,一个部分对应一个网格模型,部分的动画链接成一个总体的动画,角色比较灵活,Quake2中使用这种动画;

++++二、单一网格模型动画:由一个完整的网格模型构成,在动画序列的关键帧里记录各个顶点的原位置及其该变量,而后插值运算实现动画效果,角色动画较真实;

++++三、骨骼动画:普遍应用的动画方式,集成了以上两个方式的优势,骨骼按角色特色组成必定的层次结构,由关节相连,可作相对运动,皮肤做为单一网格蒙在骨骼以外,决定角色的外观,皮肤网格的每个顶点都会受到骨骼的影响,从而实现完美的动画

 

 

 

 

###3C.C.0三、反向旋转动画的方法是什么?

###3C.C.0三、反向旋转动画的方法是什么?

++3C.C.0三、反向旋转动画的方法是什么?

++++立钻哥哥:反转动画的方法是:将动画的速度调到-1

 

 

 

 

###3C.C.0四、写出Animation的五个方法?

###3C.C.0四、写出Animation的五个方法?

++3C.C.0四、写出Animation的五个方法?

++++立钻哥哥:Animation的方法:

++++AddClip():添加剪辑;

++++Blend():混合;

++++Play():播放;

++++Stop():中止;

++++Sample():采样;

++++CrossFade():淡入淡出切换动画;

++++IsPlaying():是否正在播放某个动画;

 

 

 

 

###3C.C.0五、动画层(AnimationState Layers)的做用是什么?

###3C.C.0五、动画层(AnimationState Layers)的做用是什么?

++3C.C.0五、动画层(AnimationState Layers)的做用是什么?

++++立钻哥哥:动画层做为一个具备层级动画编辑概念的工具,能够用来制做和处理任何类型的动画。

 

 

 

 

###3C.C.0六、ITween插件的做用是什么,ITween做用于世界坐标仍是局部坐标,请列举3个经常使用方法?

###3C.C.0六、ITween插件的做用是什么,ITween做用于世界坐标仍是局部坐标,请列举3个经常使用方法?

++3C.C.0六、ITween插件的做用是什么,ITween做用于世界坐标仍是局部坐标,请列举3个经常使用方法?

++++立钻哥哥:ITween是补间动画的一个插件,主要做用就是给出开始、结束的值、时间,此插件实现各类动画,晃动,旋转,移动,褪色,上色,音量控制等;

++++一、MoveTo():物体移动;

++++二、ColorTo():随着时间改变对象的颜色组;

++++三、LookTo():随时间旋转物体让其脸部朝向所提供的Vector3Transform位置;

 

 

 

 

###3C.C.0七、法线贴图、CS动画?

###3C.C.0七、法线贴图、CS动画?

++3C.C.0七、法线贴图、CS动画?

++++立钻哥哥:法线贴图:是一种特殊的纹理,能够应用在3D表面,让低模呈现出更明显的凹凸效果。(法线贴图通常应用在CG动画、美术效果要求较高的单机游戏)

++++CG动画:游戏中的CG动画实际上是用3D模拟引擎制做的游戏短片,通常画面效果比较真实。

 

 

 

 

 

 

##3C.D、线程和协程

##3C.D、线程和协程

++3C.D、线程和协程

++++3C.D.0一、Unity3D是否支持写成多线程程序? 若是支持的话须要注意什么?

++++3C.D.0二、Unity3D的协程和C#线程之间的区别是什么?

++++3C.D.0三、什么是协同程序?

 

 

 

###3C.D.0一、Unity3D是否支持写成多线程程序? 若是支持的话须要注意什么?

###3C.D.0一、Unity3D是否支持写成多线程程序? 若是支持的话须要注意什么?

++3C.D.0一、Unity3D是否支持写成多线程程序? 若是支持的话须要注意什么?

++++立钻哥哥:Unity支持多线程,若是同时要处理不少事情或者与Unity的对象互动小能够用Thread线程,不然使用Coroutine协程

++++注意1:虽然支持多线程,可是仅能从主线程中访问Unity3D的组件、对象和Unity3D系统调用,因此若是使用的话须要把组件中的数值传到开启的新线程中。

++++注意2:C#中有lock这个关键字,以确保只有一个线程能够在特定时间内访问特定的对象。

 

 

 

 

###3C.D.0二、Unity3D的协程和C#线程之间的区别是什么?

###3C.D.0二、Unity3D的协程和C#线程之间的区别是什么?

++3C.D.0二、Unity3D的协程和C#线程之间的区别是什么?

++++立钻哥哥:多线程程序同时运行多个线程,除主线程以外的线程没法访问Unity3D的对象、组件、方法,而在任一指定时刻只有一个协程在运行。

 

 

 

 

###3C.D.0三、什么是协同程序?

###3C.D.0三、什么是协同程序?

++3C.D.0三、什么是协同程序?

++++立钻哥哥:在主线程运行时开启另外一段逻辑处理,来协助当前程序的执行。(换句话说,开启协程就是开启一个线程。能够用来控制运动、序列以及对象的行为。)

 

 

 

 

 

##3C.E、四元数

##3C.E、四元数

++3C.E、四元数

++++3C.E.0一、四元数是什么? 主要做用是什么? 对欧拉角的优势是什么?

 

 

 

###3C.E.0一、四元数是什么? 主要做用是什么? 对欧拉角的优势是什么?

###3C.E.0一、四元数是什么? 主要做用是什么? 对欧拉角的优势是什么?

++3C.E.0一、四元数是什么? 主要做用是什么? 对欧拉角的优势是什么?

++++立钻哥哥:所谓四元数,就是把4个实数组合起来的东西。(4个元素中,一个是实部,其他3个是虚部)

++++做用:四元数用于表示旋转。

++++优势:

--一、能进行增量旋转;

--二、避免万向锁;

--三、给定方位的表达方式有两种,互为负(欧拉角有无数种表达方式)

++++四元数不会有欧拉角存在的gimbal lock问题(万向节死锁)

++++四元数由4个数组成,旋转矩阵须要9个数。

++++两个四元数之间更容易插值;

++++四元数、矩阵在屡次运算后会积累偏差,须要分别对其作规范化(normalize)和正交化(orthogonalize),对四元数规范化更容易;

++++与旋转矩阵相似,两个四元数相乘可表示两次旋转。

 

 

 

 

 

##3C.F、摄像机

##3C.F、摄像机

++3C.F、摄像机

++++3C.F.0一、在场景中放置多个Camera并同时处于活动状态会发生什么?

++++3C.F.0二、Unity摄像机有几种工做方式,分别是什么?

 

 

 

###3C.F.0一、在场景中放置多个Camera并同时处于活动状态会发生什么?

###3C.F.0一、在场景中放置多个Camera并同时处于活动状态会发生什么?

+++3C.F.0一、在场景中放置多个Camera并同时处于活动状态会发生什么?

++++立钻哥哥:会出现:游戏界面能够看到不少摄像机的混合。

 

 

 

 

###3C.F.0二、Unity摄像机有几种工做方式,分别是什么?

###3C.F.0二、Unity摄像机有几种工做方式,分别是什么?

++3C.F.0二、Unity摄像机有几种工做方式,分别是什么?

++++立钻哥哥:摄像机工做方式有两种:正交和透视

++++【正交(Orthographic)】:正交没法看到一个物体距离本身有多远,或者远近的变化,物体也不会随着距离而收缩,因此通常作2D游戏或者是UI时会使用正交摄像机。

++++【透视(Perspective)】:透视通常看物体随着距离有大小的变化,通常3D游戏里常用这种摄像机。

 

 

 

 

 

##3C.G、预制体

##3C.G、预制体

++3C.G、预制体

++++3C.G.0一、Prefab的做用? 如何在移动环境的设备下恰当地使用它?

++++3C.G.0二、Unity当须要频繁建立一个物体对象时,怎样减小内存?

 

 

 

###3C.G.0一、Prefab的做用? 如何在移动环境的设备下恰当地使用它?

###3C.G.0一、Prefab的做用? 如何在移动环境的设备下恰当地使用它?

++3C.G.0一、Prefab的做用? 如何在移动环境的设备下恰当地使用它?

++++立钻哥哥:Prefab是预制体,通常当游戏中须要频繁建立一个物体时,使用预制体能够节省内存,方便建立,方便对游戏物体进行操做,方便对属性进行修改。

 

 

 

 

###3C.G.0二、Unity当须要频繁建立一个物体对象时,怎样减小内存?

###3C.G.0二、Unity当须要频繁建立一个物体对象时,怎样减小内存?

++3C.G.0二、Unity当须要频繁建立一个物体对象时,怎样减小内存?

++++立钻哥哥:动态加载再实例化,若是本身不主动清理内存的话,再次加载不会增长内存的,会自动去取以前已经加载好的assets,

++++若是这一个assets都嫌多的话,那只能减资源了,好比:模型面数,纹理尺寸等。

 

 

 

 

 

##3C.H、Shader

##3C.H、Shader

++3C.H、Shader

++++3C.H.0一、写出光照计算中的diffuse的计算公式?

++++3C.H.0二、MeshRender中material和shader的区别?

++++3C.H.0三、Alpha Blend工做原理?

++++3C.H.0四、光照贴图的优点是什么?

++++3C.H.0五、Vertex Shader是什么,怎么计算?

++++3C.H.0六、Unity3D提供了几种光源,分别是什么?

 

 

 

###3C.H.0一、写出光照计算中的diffuse的计算公式?

###3C.H.0一、写出光照计算中的diffuse的计算公式?

++3C.H.0一、写出光照计算中的diffuse的计算公式?

++++立钻哥哥:实际光照强度I = 环境光(I ambient)+ 漫反射光(I diffuse)+ 镜面高光(I specular

++++【环境光(I ambient)】I ambient =环境光强度(A intensity)*环境光颜色(A color);

    --I ambient = A intensity * A color;

++++【漫反射光(I diffuse)】I diffuse =镜面光照强度(D intensity)*镜面光颜色(S color)*(光的反射向量(R).观察者向量(V))^镜面光指数(n);

    --I diffuse = D intensity * S color * (R.V)^n;

 

 

 

 

###3C.H.0二、MeshRender中material和shader的区别?

###3C.H.0二、MeshRender中material和shader的区别?

++++立钻哥哥:MeshRender是模型渲染的组件,有此组件物体才能显示出来。

++++Material是材质球,实际就是shader的实例,并进行赋值,贴图、纹理、颜色等。

++++Shader是着色器,其实是一段程序,还能够用来实现一些仅靠贴图不容易实现的效果,如玻璃等。

++++Shader大体分三种:一、表面着色器;二、顶点和片元着色器;三、固定功能着色器;

 

 

 

 

###3C.H.0三、Alpha Blend工做原理?

###3C.H.0三、Alpha Blend工做原理?

++3C.H.0三、Alpha Blend工做原理?

++++立钻哥哥:Alpha Blend是实现透明效果。

++++Color = 原颜色 * alpha/255 + 目标色*(255 - alpha)/255;

 

 

 

 

###3C.H.0四、光照贴图的优点是什么?

###3C.H.0四、光照贴图的优点是什么?

++3C.H.0四、光照贴图的优点是什么?

++++立钻哥哥:一、使用光照贴图比使用实时光源渲染要快;

++++二、能够下降游戏内存消耗;

++++三、多个物体可使用同一张光照贴图;

 

 

 

 

###3C.H.0五、Vertex Shader是什么,怎么计算?

###3C.H.0五、Vertex Shader是什么,怎么计算?

++3C.H.0五、Vertex Shader是什么,怎么计算?

++++立钻哥哥:Vertex Shader:顶点着色器:顶点着色器是一段执行在GPU上的程序,用来取代fixed pipeline中的transformation和lighting,Vertex Shader主要操做顶点。

++++Vertex Shader对输入顶点完成了从local space到homogeneous space(齐次空间)的变换过程,homogeneous space即projection space的下一个space。(在这期间共有:world transformation, view transformation, projection transformation, lighting等几个过程)

 

 

 

 

###3C.H.0六、Unity3D提供了几种光源,分别是什么?

###3C.H.0六、Unity3D提供了几种光源,分别是什么?

++3C.H.0六、Unity3D提供了几种光源,分别是什么?

++++立钻哥哥:Unity3D提供了4种光源:

++++平行光:Directional light;

++++点光源:Point Light;

++++聚光灯:Spot Light;

++++区域光:Area Light;

 

 

 

 

 

##3C.I、系统函数

##3C.I、系统函数

++3C.I、系统函数

++++3C.I.0一、物理更新通常在哪一个系统函数里?

++++3C.I.0二、OnEnable、Awake、Start运行时的发生顺序? 哪些可能在同一个对象周期中反复的发生?

++++3C.I.0三、Unity3D脚本从唤醒到销毁有着一套比较完整的生命周期,请列出系统自带的几个重要的方法?

++++3C.I.0四、物理更新通常放在哪一个系统函数里?

++++3C.I.0五、移动摄像机的动做放在哪一个系统函数中,为何放在这个函数中?

++++3C.I.0六、请简述OnBecameVisible及OnBecameInvisible的发生时机,以及这一对回调函数的意义?

++++3C.I.0七、Unity3D提供了一个用于保存和读取数据的类(PlayerPrefs),请列出保存和读取整形数据的函数?

++++3C.I.0八、动态加载资源的方式? 区别是什么?

++++3C.I.0九、如下哪一个函数在游戏进入新场景后会被立刻调用?

++++3C.I.十、如何销毁一个UnityEngine.Object及其子类?

++++3C.I.十一、获取、增长、删除组件的命令分别是什么?

++++3C.I.十二、Application.loadLevel命令是什么?

++++3C.I.1三、调试记录到控制台的命令是什么?

++++3C.I.1四、LayerMask.NameToLayer()这个方法有什么做用?

++++3C.I.1五、localPosition与Position的使用区别?

++++3C.I.1六、物体自身旋转使用的函数?

++++3C.I.1七、物体围绕某点旋转使用的函数?

++++3C.I.1八、U3D中用于记录节点空间几何信息的组件名称,及其父类名称?

++++3C.I.1九、写一个计时器工具,从整点开始计时,格式为:00:00:00?

 

 

 

###3C.I.0一、物理更新通常在哪一个系统函数里?

###3C.I.0一、物理更新通常在哪一个系统函数里?

++3C.I.0一、物理更新通常在哪一个系统函数里?

++++立钻哥哥:物理更新通常放在FixedUpdate(),每固定帧绘制时执行一次,和Update()不一样的是FixedUpdate()是渲染帧执行,若是渲染效率低下的时候:FixedUpdate()调用次数就会跟着降低。

++++FixedUpdate()比较适用于物理引擎的计算,由于是跟每帧渲染有关。

++++Update()就比较适合作控制。

 

 

 

 

###3C.I.0二、OnEnable、Awake、Start运行时的发生顺序? 哪些可能在同一个对象周期中反复的发生?

###3C.I.0二、OnEnable、Awake、Start运行时的发生顺序? 哪些可能在同一个对象周期中反复的发生?

++3C.I.0二、OnEnable、Awake、Start运行时的发生顺序? 哪些可能在同一个对象周期中反复的发生?

++++立钻哥哥:【Awake()】=>【OnEnable()】=>【Start()】

++++OnEnable()在同一周期中能够反复地发生。

 

 

 

 

###3C.I.0三、Unity3D脚本从唤醒到销毁有着一套比较完整的生命周期,请列出系统自带的几个重要的方法?

###3C.I.0三、Unity3D脚本从唤醒到销毁有着一套比较完整的生命周期,请列出系统自带的几个重要的方法?

++3C.I.0三、Unity3D脚本从唤醒到销毁有着一套比较完整的生命周期,请列出系统自带的几个重要的方法?

++++立钻哥哥:【Awake()】=>【Start()】=>【Update()】=>【FixedUpdate()】=>【LateUpdate】=>【OnGUI()】=>【OnDisable()】=>【OnDestroy()】

 

 

 

 

###3C.I.0四、物理更新通常放在哪一个系统函数里?

###3C.I.0四、物理更新通常放在哪一个系统函数里?

++3C.I.0四、物理更新通常放在哪一个系统函数里?

++++立钻哥哥:FixedUpdate()由于不受到计算机帧频的影响,因此比较适合于作物理方面的更新;

 

 

 

 

###3C.I.0五、移动摄像机的动做放在哪一个系统函数中,为何放在这个函数中?

###3C.I.0五、移动摄像机的动做放在哪一个系统函数中,为何放在这个函数中?

++3C.I.0五、移动摄像机的动做放在哪一个系统函数中,为何放在这个函数中?

++++立钻哥哥:移动摄像机的动做放在LateUpdate(),在每帧执行完毕调用,它是在全部Update()结束后才调用,比较适合用于命令脚本的执行。

++++官网上例子是摄像机的跟随,都是在全部Update()操做完才跟进摄像机,否则就有可能出现摄像机已经推动了,可是视角里尚未角色的空帧出现。

 

 

 

 

###3C.I.0六、请简述OnBecameVisible及OnBecameInvisible的发生时机,以及这一对回调函数的意义?

###3C.I.0六、请简述OnBecameVisible及OnBecameInvisible的发生时机,以及这一对回调函数的意义?

++3C.I.0六、请简述OnBecameVisible及OnBecameInvisible的发生时机,以及这一对回调函数的意义?

++++立钻哥哥:当物体是否可见切换时会调用:OnBecameVisible()OnBecameInvisible()

++++能够用于只须要在物体可见时才进行的计算。

++++当Renderer(渲染器)在任何相机上都不可见时调用:OnBecameInvisible();

++++当Renderer(渲染器)在任何相机上可见时调用:OnBecameVisible();

 

 

 

 

###3C.I.0七、Unity3D提供了一个用于保存和读取数据的类(PlayerPrefs),请列出保存和读取整形数据的函数?

###3C.I.0七、Unity3D提供了一个用于保存和读取数据的类(PlayerPrefs),请列出保存和读取整形数据的函数?

++3C.I.0七、Unity3D提供了一个用于保存和读取数据的类(PlayerPrefs),请列出保存和读取整形数据的函数?

++++立钻哥哥:保存和读取整形数据的函数:PlayerPrefs.SetInt(); 和 PlayerPrefs.GetInt(); 

 

 

 

 

###3C.I.0八、动态加载资源的方式? 区别是什么?

###3C.I.0八、动态加载资源的方式? 区别是什么?

++3C.I.0八、动态加载资源的方式? 区别是什么?

++++立钻哥哥:动态加载资源的方式有:一、Resources.Load(); 二、AssetBundle

++++Resources是动态内部调用,Resources在编辑环境下是project窗口的一个文件夹,调用里面的资源,能够用Resources类,好比Resources.Load();

++++打包后这个文件夹是不存在的,会统一辈子成assets资源,AssetBundle是外部调用的,要用AssetBundle,首先要先把资源打包为.assetbundle文件,再动态的去加载这个文件,本地或者网络服务器均可以。

++++立钻哥哥:Resources资源的加载是动态加载内部的,AssetBundle是动态加载外部的

 

 

 

 

###3C.I.0九、如下哪一个函数在游戏进入新场景后会被立刻调用?

###3C.I.0九、如下哪一个函数在游戏进入新场景后会被立刻调用?

++3C.I.0九、如下哪一个函数在游戏进入新场景后会被立刻调用?

++++立钻哥哥:进入新场景后立刻调用:MonoBehaviour.OnLevelWasLoaded();

 

 

 

 

###3C.I.十、如何销毁一个UnityEngine.Object及其子类?

###3C.I.十、如何销毁一个UnityEngine.Object及其子类?

++3C.I.十、如何销毁一个UnityEngine.Object及其子类?

++++立钻哥哥:销毁使用:Destroy();

 

 

 

 

###3C.I.十一、获取、增长、删除组件的命令分别是什么?

###3C.I.十一、获取、增长、删除组件的命令分别是什么?

++3C.I.十一、获取、增长、删除组件的命令分别是什么?

++++立钻哥哥:组件获取:GetComponet();

++++组件增长:AddComponent();

++++没有组件删除只有让组件不生效:enable();

 

 

 

 

###3C.I.十二、Application.loadLevel命令是什么?

###3C.I.十二、Application.loadLevel命令是什么?

++3C.I.十二、Application.loadLevel命令是什么?

++++立钻哥哥:Application.LoadLevel()加载关卡

 

 

 

 

###3C.I.1三、调试记录到控制台的命令是什么?

###3C.I.1三、调试记录到控制台的命令是什么?

++3C.I.1三、调试记录到控制台的命令是什么?

++++立钻哥哥:调试命令:Debug.Log();

 

 

 

 

###3C.I.1四、LayerMask.NameToLayer()这个方法有什么做用?

###3C.I.1四、LayerMask.NameToLayer()这个方法有什么做用?

++3C.I.1四、LayerMask.NameToLayer()这个方法有什么做用?

++++立钻哥哥:LayerMask.NameToLayer(): 层索引

 

 

 

 

###3C.I.1五、localPosition与Position的使用区别?

###3C.I.1五、localPosition与Position的使用区别?

++3C.I.1五、localPosition与Position的使用区别?

++++立钻哥哥:localPosition:自身位置,相对于父级的变换的位置,局部坐标其实就是自身的坐标,会随着物体的旋转而变化的;

++++Position:在世界坐标Transform的位置,世界坐标是不会变的,一直以世界坐标轴的XYZ为标准。

 

 

 

 

###3C.I.1六、物体自身旋转使用的函数?

###3C.I.1六、物体自身旋转使用的函数?

++3C.I.1六、物体自身旋转使用的函数?

++++立钻哥哥:物体自身旋转: Transform.Rotate();

 

 

 

 

###3C.I.1七、物体围绕某点旋转使用的函数?

###3C.I.1七、物体围绕某点旋转使用的函数?

++3C.I.1七、物体围绕某点旋转使用的函数?

++++立钻哥哥:物体围绕某点旋转: Transform.RotateAround();

 

 

 

 

###3C.I.1八、U3D中用于记录节点空间几何信息的组件名称,及其父类名称?

###3C.I.1八、U3D中用于记录节点空间几何信息的组件名称,及其父类名称?

++3C.I.1八、U3D中用于记录节点空间几何信息的组件名称,及其父类名称?

++++立钻哥哥:Unity3d中用于记录节点空间几何信息的组件是:Transform

++++Transform父类是Component

 

 

 

 

###3C.I.1九、写一个计时器工具,从整点开始计时,格式为:00:00:00?

###3C.I.1九、写一个计时器工具,从整点开始计时,格式为:00:00:00?

++3C.I.1九、写一个计时器工具,从整点开始计时,格式为:00:00:00?

++++立钻哥哥:

int second;

int minute;

int hour;

 

void Start(){

    second = 0;

    minute = 0;

    hour = 0;

}

 

void Update(){

    if(second < 60){

        second += Time.deltaTime;

    }else{

        second -= 60;

        minute += 1;

    }

 

    if(minute >= 60){

        minute -= 60;

        hour += 1;

    }

}

 

 

 

 

 

##3C.J、物理引擎

##3C.J、物理引擎

++3C.J、物理引擎

++++3C.J.0一、《愤怒的小鸟》给予初速度之后,怎么让小鸟受到重力和空气阻力的影响而绘制抛物线轨迹,说出具体的计算方法?

++++3C.J.0二、实现吊机吊物体的功能?

++++3C.J.0三、上机题:用鼠标实如今场景中拖动物体,用鼠标滚动实现缩放(用一个Cube便可)

++++3C.J.0四、Material和Physic Material的区别?

++++3C.J.0五、CharacterController和Rigidbody的区别?

++++3C.J.0六、Unity3D的物理引擎中,有几种施加力的方式,分别描述出来?

++++3C.J.0七、什么叫作链条关节?

++++3C.J.0八、什么是导航网格(NavMesh)?

++++3C.J.0九、Unity3D提供了几种光源类型,分别是哪几种?

 

 

 

 

###3C.J.0一、《愤怒的小鸟》给予初速度之后,怎么让小鸟受到重力和空气阻力的影响而绘制抛物线轨迹,说出具体的计算方法?

###3C.J.0一、《愤怒的小鸟》给予初速度之后,怎么让小鸟受到重力和空气阻力的影响而绘制抛物线轨迹,说出具体的计算方法?

++3C.J.0一、《愤怒的小鸟》给予初速度之后,怎么让小鸟受到重力和空气阻力的影响而绘制抛物线轨迹,说出具体的计算方法?

++++立钻哥哥:添加Rigidbody刚体使小鸟模拟受到重力影响

 

 

 

 

###3C.J.0二、实现吊机吊物体的功能?

###3C.J.0二、实现吊机吊物体的功能?

++3C.J.0二、实现吊机吊物体的功能?

++++立钻哥哥:

using UnityEngine;

using System.Collecitons;

 

public class CraneCS : MonoBehaviour{

}    //立钻哥哥:public class CraneCS : MonoBehaviour{}

 

 

 

 

###3C.J.0三、上机题:用鼠标实如今场景中拖动物体,用鼠标滚动实现缩放(用一个Cube便可)

###3C.J.0三、上机题:用鼠标实如今场景中拖动物体,用鼠标滚动实现缩放(用一个Cube便可)

++3C.J.0三、上机题:用鼠标实如今场景中拖动物体,用鼠标滚动实现缩放(用一个Cube便可)

++++立钻哥哥:在场景中添加一个Plane,Cube。

++++添加两个脚本ScrollerScript(挂在Camera上),CubeDragScript(挂在Cube上)。

 

++++一、鼠标滚轮实现缩放:将摄像机的镜头拉近或者拉远,调整摄像机的视角就能够实现,主要实现代码以下:

void Update(){

    //鼠标滚轮的效果

    //Camera.main.fieldOfView:摄像机的视野

    //Camera.main.orthographicSize:射线机的正交投影

 

    //Zoom out

    if(Input.GetAxis(Mouse ScrollWheel) < 0){

        if(Camera.main.fieldOfView <= 100){

            Camera.main.fieldOfView += 2;

        }

 

        if(Camera.main.orthographicSize <= 20){

            Camera.main.orthographicSize += 0.5f;

        }

    }

 

    //Zoom in

    if(Input.GetAxis(Mouse ScrollWheel) > 0){

        if(Camera.main.fieldOfView > 2){

            Camera.main.fieldOfView -= 2;

        }

 

        if(Camera.main.orthographicSize >= 1){

            Camera.main.orthographicSize -= 0.5f;

        }

    }

}

 

++++二、鼠标实如今场景中拖动物体:解决思路:就是将世界坐标转换成屏幕坐标,而后计算物体与鼠标之间移动量,循环鼠标被按下操做,获得鼠标的当前位置,加上计算好的移动量,将新的坐标赋值给物理就好了。(主要是开启一个协同程序(Coroutine)来处理)

//Use this for initialization

void Start(){

    StartCoroutine(OnMouseDown());    //立钻哥哥:开启一个协程

}

 

IEnumerator OnMouseDown(){

    //将物体由世界坐标系转换为屏幕坐标系

    Vector3 screenSpace = Camera.main.WorldToScreenPoint(transform.position);    //转换

 

    //立钻哥哥:完成两个步骤:一、因为鼠标的坐标系是二维,须要转换成三维的世界坐标系;二、只有三维坐标状况下才能来计算鼠标位置与物理的距离,offset便是距离:将鼠标屏幕坐标转为三维坐标,再算出物体位置与鼠标之间的距离

    Vector3 offset = transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenSpace.z));

        while(Input.GetMouseButton(0)){

            //获得如今鼠标的二维坐标系位置

            Vector3 curScreenSpace = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenSpace.z);

 

            //将当前鼠标的二维位置转换成三维位置,再加上鼠标的移动量

            Vector3 curPosition = Camera.main.ScreenToWorldPoint(curScreenSpace) + offset;

 

            //curPosition就是物体应该的移动向量赋给transform的position属性

            transform.position = curPosition;

 

            yield return new WaitForFixedUpdate();    //这个很重要,循环执行

    }

}

 

 

 

 

###3C.J.0四、Material和Physic Material的区别?

###3C.J.0四、Material和Physic Material的区别?

++3C.J.0四、Material和Physic Material的区别?

++++立钻哥哥:PhysicMaterial物理材质:主要是控制物体的摩擦,弹力等物理属性。

++++Material材质:主要是控制一个物体的颜色,质感等显示。

 

 

 

 

###3C.J.0五、CharacterController和Rigidbody的区别?

###3C.J.0五、CharacterController和Rigidbody的区别?

++3C.J.0五、CharacterController和Rigidbody的区别?

++++立钻哥哥:CharacterController自带胶囊碰撞器,里面包含有刚体的属性;

++++Rigidbody就是刚体,使物体带有刚体的特征。

 

 

 

 

###3C.J.0六、Unity3D的物理引擎中,有几种施加力的方式,分别描述出来?

###3C.J.0六、Unity3D的物理引擎中,有几种施加力的方式,分别描述出来?

++3C.J.0六、Unity3D的物理引擎中,有几种施加力的方式,分别描述出来?

++++立钻哥哥:施加力:rigidbody.AddForce(); 和 rigidbody.AddForceAtPosition();

 

 

 

 

###3C.J.0七、什么叫作链条关节?

###3C.J.0七、什么叫作链条关节?

++3C.J.0七、什么叫作链条关节?

++++立钻哥哥:链条关节:Hinge Joint,能够模拟两个物体间用一根链条链接在一块儿的状况,能保持两个物体在一个固定距离内部相互移动而不产生做用力,可是达到固定距离后就会产生拉力。

 

 

 

 

###3C.J.0八、什么是导航网格(NavMesh)?

###3C.J.0八、什么是导航网格(NavMesh)?

++3C.J.0八、什么是导航网格(NavMesh)?

++++立钻哥哥:NavMesh导航网格:是Unity内一种用于实现自动寻路的网格。

 

 

 

 

###3C.J.0九、Unity3D提供了几种光源类型,分别是哪几种?

###3C.J.0九、Unity3D提供了几种光源类型,分别是哪几种?

++3C.J.0九、Unity3D提供了几种光源类型,分别是哪几种?

++++立钻哥哥:Unity提供了4种光源类型:

++++平行光Directional Light;

++++点光源Point Light;

++++聚光灯Spot Light;

++++区域光源Area Light;

 

 

 

 

 

##3C.K、Unity引擎问题

##3C.K、Unity引擎问题

++++3C.K.0一、简述Unity3D支持的做为脚本的语言的名称?

++++3C.K.0二、向量的点乘、叉乘以及归一化的意义?

++++3C.K.0三、矩阵相乘的意义及注意点?

++++3C.K.0四、为何dynamic font在unicode环境下优于static font?

++++3C.K.0五、Render的做用? 描述MeshRender和SkinnedMeshRender的关系与不一样?

++++3C.K.0六、简述SkinnedMesh的实现原理?

++++3C.K.0七、为何Unity3D中会发生:在组件上出现数据丢失的状况?

++++3C.K.0八、如何安全的在不一样工程间安全地迁移Asset数据? 三种方式?

++++3C.K.0九、LOD是什么,优缺点是什么?

++++3C.K.十、两种阴影判断的方法、工做原理?

++++3C.K.十一、MipMap是什么,做用?

++++3C.K.十二、用代码实现第三角色控制器?

++++3C.K.1三、Mecanim系统中,Body Mask的做用是?

++++3C.K.1四、Unity链接数据库?

++++3C.K.1五、如何优化内存?

++++3C.K.1六、您用过哪些插件?

++++3C.K.1七、在哪一个模块下能够修改Render Path?

 

 

 

###3C.K.0一、简述Unity3D支持的做为脚本的语言的名称?

###3C.K.0一、简述Unity3D支持的做为脚本的语言的名称?

++3C.K.0一、简述Unity3D支持的做为脚本的语言的名称?

++++立钻哥哥:Unity的脚本语言基于Mono的.Net平台上运行,可使用.NET库,这也为XML、数据库、正则表达式等问题提供了很好的解决方案。

++++Unity里的脚本都会通过编译,他们的运行速度也很快。(C#、Boo、JavaScript这三种语言实际上的功能和运算速度都同样的,区别主要体如今语言特性上。)

 

 

 

 

###3C.K.0二、向量的点乘、叉乘以及归一化的意义?

###3C.K.0二、向量的点乘、叉乘以及归一化的意义?

++3C.K.0二、向量的点乘、叉乘以及归一化的意义?

++++立钻哥哥:一、点乘计算两个向量之间的夹角,还能够表示某一方向的投影

++++二、叉乘获得的是法向量

++++三、标准化向量用在只关系方向,不关心大小的时候

 

 

 

 

###3C.K.0三、矩阵相乘的意义及注意点?

###3C.K.0三、矩阵相乘的意义及注意点?

++3C.K.0三、矩阵相乘的意义及注意点?

++++立钻哥哥:矩阵相乘:用于表示线性变换:平移旋转缩放投影仿射

++++注意:矩阵的蠕变,偏差的积累;

 

 

 

 

###3C.K.0四、为何dynamic font在unicode环境下因为static font?

###3C.K.0四、为何dynamic font在unicode环境下因为static font?

++3C.K.0四、为何dynamic font在unicode环境下优于static font?

++++立钻哥哥:Unicode是国际组织制定的能够容纳世界上全部文字和符号的字符编码方案。

++++使用动态字体时,Unity将不会预先生成一个有全部字体的字符纹理。

++++当须要支持亚洲语言或者较大的字体的时候,若使用正常纹理,则字体的纹理将很是大。

 

 

 

 

###3C.K.0五、Render的做用? 描述MeshRender和SkinnedMeshRender的关系与不一样?

###3C.K.0五、Render的做用? 描述MeshRender和SkinnedMeshRender的关系与不一样?

++3C.K.0五、Render的做用? 描述MeshRender和SkinnedMeshRender的关系与不一样?

++++立钻哥哥:Render渲染器,渲染器可使物体显示在屏幕上。

++++MeshRenderer网格渲染SkinnedMeshRender蒙皮网格渲染器

 

 

 

 

###3C.K.0六、简述SkinnedMesh的实现原理?

###3C.K.0六、简述SkinnedMesh的实现原理?

++3C.K.0六、简述SkinnedMesh的实现原理?

++++立钻哥哥:SkinnedMesh的实现原理:骨骼蒙皮动画,模型自己是静态的,是由于经过蒙皮,使模型每一个点都有Skin数据,Skin数据包括顶点受到哪些骨骼影响以及这些骨骼影响顶点的权重值,还有动画数据,有了Skin数据的模型就能够根据动画数据进行显示动画了。

 

 

 

 

###3C.K.0七、为何Unity3D中会发生:在组件上出现数据丢失的状况?

###3C.K.0七、为何Unity3D中会发生:在组件上出现数据丢失的状况?

++3C.K.0七、为何Unity3D中会发生:在组件上出现数据丢失的状况?

++++立钻哥哥:组件上会出现数据丢失:是由于组件上绑定的对象被删除了

 

 

 

 

###3C.K.0八、如何安全的在不一样工程间安全地迁移Asset数据? 三种方式?

###3C.K.0八、如何安全的在不一样工程间安全地迁移Asset数据? 三种方式?

++3C.K.0八、如何安全的在不一样工程间安全地迁移Asset数据? 三种方式?

++++立钻哥哥:一、将Assets目录和Library目录一块儿迁移;

++++二、导出包;

++++三、用Unity自带的Assets Server功能;

 

 

 

 

###3C.K.0九、LOD是什么,优缺点是什么?

###3C.K.0九、LOD是什么,优缺点是什么?

++3C.K.0九、LOD是什么,优缺点是什么?

++++立钻哥哥:LODLevel of detail简称,意为多层次细节,是最经常使用的游戏优化技术,LOD技术指根据物体模型的节点在显示环境中所处的位置和重要性,决定物体渲染的资源分配,下降非重要物体的面数和细节度,从而得到高效率的渲染运算。

++++优势:可根据距离动态的选择渲染不一样细节的模型;

++++缺点:增长美工工做量,增大了游戏的容量;

 

 

 

 

###3C.K.十、两种阴影判断的方法、工做原理?

###3C.K.十、两种阴影判断的方法、工做原理?

++3C.K.十、两种阴影判断的方法、工做原理?

++++立钻哥哥:两种阴影:自身阴影投射阴影

++++【自身阴影】:因物体自身的遮挡而使光线照射不到它上面的某些可见面;

--工做原理:利用背面剔除的方法求出,即假设视点在点光源的位置;

++++【投射阴影】:因不透明物体遮挡光线使得场景中位于物体后面的物体或区域收不到光照照射而造成的阴影;

--工做原理:从光源处向物体的全部可见面投射光线,将这些面投射到场景中获得投射面,再将这些投射面与场景中的其余平面求交得出阴影多边形,保存这些阴影多边形信息,而后再按视点位置对场景进行相应处理获得所要求的视图;(利用空间换时间,每次只需依据视点位置进行一次阴影计算便可,省去了一次消隐过程)(如果动态光源此方法就无效了)

 

 

 

 

###3C.K.十一、MipMap是什么,做用?

###3C.K.十一、MipMap是什么,做用?

++3C.K.十一、MipMap是什么,做用?

++++立钻哥哥:MipMapping:在三维计算机图形的贴图渲染中经常使用的技术,为加快渲染进度和减小图像锯齿,贴图被处理成由一系列被预先计算和优化过的图片组成的文件,这样的贴图被称为MipMap

 

 

 

 

###3C.K.十二、用代码实现第三角色控制器?

###3C.K.十二、用代码实现第三角色控制器?

++3C.K.十二、用代码实现第三角色控制器?

++++立钻哥哥:

 

 

 

 

###3C.K.1三、Mecanim系统中,Body Mask的做用是?

###3C.K.1三、Mecanim系统中,Body Mask的做用是?

++3C.K.1三、Mecanim系统中,Body Mask的做用是?

++++立钻哥哥:Mecanim系统中的Body Mask的做用:指定身体的某一部分是否参与渲染

 

 

 

 

###3C.K.1四、Unity链接数据库?

###3C.K.1四、Unity链接数据库?

++3C.K.1四、Unity链接数据库?

++++立钻哥哥:Unity链接数据库须要获得:Mono.Data.Sqlite.dll文件和System.Data.dll文件;

 

 

 

 

###3C.K.1五、如何优化内存?

###3C.K.1五、如何优化内存?

++3C.K.1五、如何优化内存?

++++立钻哥哥:一、压缩自带类库;

++++二、将暂时不用的之后还须要使用的物体隐藏起来而不是直接Destroy掉;

++++三、释放AssetBundle占用的资源;

++++四、下降模型的片面数,下降模型的骨骼数量,下降贴图的大小;

++++五、使用光照贴图;

++++六、使用多层次细节(LOD);

++++七、使用着色器(Shader);

++++八、使用预设体(Prefab)等;

 

 

 

 

###3C.K.1六、您用过哪些插件?

###3C.K.1六、您用过哪些插件?

++3C.K.1六、您用过哪些插件?

++++立钻哥哥:用过的插件:NGUIDFITween等;

++++一、界面制做,推荐:NGUI

++++二、2D游戏制做,推荐:2D ToolKit

++++三、可视化编辑,推荐:PlayMaker

++++四、插值插件,推荐:iTweenHOTween

++++五、路径搜寻,推荐:Simple Path

++++六、美术及动画制做,推荐:RageSplineSmooth Moves

++++七、画面加强,推荐:Bitmap2MaterialStrumpy Shader Editor

++++八、摄像机管理,推荐:Security Camera

++++九、资源包,推荐:Nature Pack

++++十、造路插件,推荐:EasyRoads3D

 

 

 

 

###3C.K.1七、在哪一个模块下能够修改Render Path?

###3C.K.1七、在哪一个模块下能够修改Render Path?

++3C.K.1七、在哪一个模块下能够修改Render Path?

++++立钻哥哥:在如下模块能够修改Render Path

++++一、Camera

++++二、Light

++++三、Render Settings

++++四、ProjectSetting => Player => OtherSettings;

 

 

 

 

 

##3C.M、图形图像

##3C.M、图形图像

++3C.M、图形图像

++++3C.M.0一、什么是渲染管道?

++++3C.M.0二、什么是矢量图?

++++3C.M.0三、什么是矩阵? 矩阵运算?

++++3C.M.0四、角度和弧度的转换?

++++3C.M.0五、矢量标量?

 

 

 

###3C.M.0一、什么是渲染管道?

###3C.M.0一、什么是渲染管道?

++3C.M.0一、什么是渲染管道?

++++立钻哥哥:渲染管道是指在显示器上为了显示出图像而通过的一系列必要操做;

++++渲染管道中的不少步骤,都要将几何物体从一个坐标系中变换到另外一个坐标系中去;

++++主要有三步:应用程序阶段,几何阶段,光栅阶段;

 

 

 

 

###3C.M.0二、什么是矢量图?

###3C.M.0二、什么是矢量图?

++3C.M.0二、什么是矢量图?

++++立钻哥哥:计算机中显示的图形通常能够分两大类:矢量图位图

++++【矢量图】:使用直线和曲线来描述图形,这些图形的元素是一些点、线、矩形、多边形、圆和弧线等等,它们都是经过数学公式计算得到的。

--例如:一幅花的矢量图形其实是由线段造成外框轮廓,由外框的颜色以及外框所封闭的颜色决定花显示出的颜色。

--因为矢量图形可经过公式计算得到,因此矢量图形文件体积通常较小。

--矢量图形最大的优势是:不管放大、缩小或者旋转等都不会失真

--矢量图形最大的缺点是:难以表现色彩层次丰富的逼真图像效果

 

 

 

 

###3C.M.0三、什么是矩阵? 矩阵运算?

###3C.M.0三、什么是矩阵? 矩阵运算?

++3C.M.0三、什么是矩阵? 矩阵运算?

++++立钻哥哥:【矩阵】:横轴排列的二维数据表格;

++++【矩阵运算】

--矩阵加减:限制条件:行和列必须相同,对应相加相减获得结果;

--矩阵乘法:限制条件:要求左矩阵的行和右矩阵的列必须同,行数和左矩阵相等,列数和右矩阵相等,结果的第i行第j列,是左矩阵的第i行和右矩阵的第j列逐个相乘并把结果相加,获得结果是结果的 第i行第j列;

 

 

 

 

###3C.M.0四、角度和弧度的转换?

###3C.M.0四、角度和弧度的转换?

++3C.M.0四、角度和弧度的转换?

++++立钻哥哥:1弧度 = 180度 / pi (约57.3)

++++1度 = pi / 180弧度 (约0.017)

 

 

 

 

###3C.M.0五、矢量标量?

###3C.M.0五、矢量标量?

++3C.M.0五、矢量标量?

++++立钻哥哥:【矢量】有方向,如力,速度

++++【标量】没有方向,如温度

++++【单位向量】有方向,大小为1的向量

++++【矢量的加法】:是矢量的几何和,服从平行四边形规则;

++++【矢量知足交换律,知足结合律】;

++++在直接坐标系中,矢量等于其在坐标轴上投影的矢量之和(二维矢量能够看作三维矢量的特例,也就是说:三维成立,二维也成立)

++++【矢量减法】:大小相等,方向相反,称为逆矢量;

++++任意多个矢量首尾相链接组成闭合多边形,其结果必为0;

++++【矢量的乘法】:点积(內积、标量积)、叉积(外积)结果是矢量;

++++【点积方法】:dot;

 

 

 

 

 

 

#第四篇:Unity模拟面试

#第四篇:Unity模拟面试

 

++++Unity面试题ABChttp://www.javashuo.com/article/p-mwacxwca-gm.html

++++Unity面试题DEFhttp://www.javashuo.com/article/p-wuwcrclr-s.html

 

 

 

 

 

 

 

 

 

++立钻哥哥推荐的拓展学习连接(Link_Url)

++++立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz/

++++Unity面试题http://www.javashuo.com/article/p-mwacxwca-gm.html

++++Unity知识点0001http://www.javashuo.com/article/p-ryvdxxjr-ep.html

++++Unity知识点0008http://www.javashuo.com/article/p-kxgstxls-gu.html

++++Unity引擎基础http://www.javashuo.com/article/p-beommoeb-ka.html

++++Unity面向组件开发http://www.javashuo.com/article/p-eigmuvut-dt.html

++++Unity物理系统http://www.javashuo.com/article/p-nqvvciwv-kd.html

++++Unity2D平台开发http://www.javashuo.com/article/p-ycaagdtj-hs.html

++++UGUI基础http://www.javashuo.com/article/p-rukxwckw-mc.html

++++UGUI进阶http://www.javashuo.com/article/p-wcatruhq-gt.html

++++UGUI综合http://www.javashuo.com/article/p-dkccmqii-gg.html

++++Unity动画系统基础http://www.javashuo.com/article/p-mbrdouxy-dq.html

++++Unity动画系统进阶http://www.javashuo.com/article/p-aqaqpbkh-bp.html

++++Navigation导航系统http://www.javashuo.com/article/p-dswwllas-t.html

++++Unity特效渲染http://www.javashuo.com/article/p-ckojjyfj-bp.html

++++Unity数据存储http://www.javashuo.com/article/p-bvlzynso-m.html

++++Unity中Sqlite数据库http://www.javashuo.com/article/p-ejutsbxl-ca.html

++++WWW类和协程http://www.javashuo.com/article/p-dbwmhsav-cy.html

++++Unity网络http://www.javashuo.com/article/p-sqrlntgh-dw.html

++++C#事件http://www.javashuo.com/article/p-zmwruvql-gm.html

++++C#委托http://www.javashuo.com/article/p-uozpymaf-gh.html

++++C#集合http://www.javashuo.com/article/p-sfqfdqsf-ex.html

++++C#泛型http://www.javashuo.com/article/p-xrttqngo-ee.html

++++C#接口http://www.javashuo.com/article/p-vhlfplgv-dm.html

++++C#静态类https://blog.csdn.net/vrunsoftyanlz/article/details/78630979

++++C#中System.String类http://www.javashuo.com/article/p-olslkfao-cq.html

++++C#数据类型http://www.javashuo.com/article/p-hmabbtmc-ba.html

++++Unity3D默认的快捷键http://www.javashuo.com/article/p-wuwcrclr-s.html

++++游戏相关缩写http://www.javashuo.com/article/p-mwacxwca-gm.html

++++设计模式简单整理http://www.javashuo.com/article/p-rngqugib-hg.html

++++U3D小项目参考https://blog.csdn.net/vrunsoftyanlz/article/details/80141811

++++UML类图http://www.javashuo.com/article/p-sxberuew-bm.html

++++U3D_Shader编程(第一篇:快速入门篇)http://www.javashuo.com/article/p-kyppgrac-gz.html

++++U3D_Shader编程(第二篇:基础夯实篇)http://www.javashuo.com/article/p-qkyowtli-hv.html

++++框架知识点http://www.javashuo.com/article/p-eufbowgf-u.html

++++游戏框架(UI框架夯实篇)http://www.javashuo.com/article/p-cvemoigb-cu.html

++++游戏框架(初探篇)http://www.javashuo.com/article/p-zfpoilbc-hy.html

++++Lua快速入门篇(基础概述)http://www.javashuo.com/article/p-shernvtt-u.html

++++Lua快速入门篇(XLua教程):http://www.javashuo.com/article/p-pduvmusb-ho.html

++++Lua快速入门篇(Xlua拓展):http://www.javashuo.com/article/p-rrszijom-cm.html

++++立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz/

 

--_--RunSoft:lovezuanzuan--_--