河北农业网站建设公司,郑州公司网站平台建设,网页版本传奇,wordpress动漫插件1、什么是协同程序#xff1f;答#xff1a;在主线程运行时同时开启另一段逻辑处理#xff0c;来协助当前程序的执行。换句话说#xff0c;开启协程就是开启一个可以与程序并行的逻辑。可以用来控制运动、序列以及对象的行为。2、Unity3D中的碰撞器和触发器的区别#xff…1、什么是协同程序答在主线程运行时同时开启另一段逻辑处理来协助当前程序的执行。换句话说开启协程就是开启一个可以与程序并行的逻辑。可以用来控制运动、序列以及对象的行为。2、Unity3D中的碰撞器和触发器的区别答碰撞器是触发器的载体而触发器只是碰撞器身上的一个属性。当Is Triggerfalse时碰撞器根据物理引擎引发碰撞产生碰撞的效果可以调用OnCollisionEnter/Stay/Exit函数当Is Triggertrue时碰撞器被物理引擎所忽略没有碰撞效果可以调用OnTriggerEnter/Stay/Exit函数。如果既要检测到物体的接触又不想让碰撞检测影响物体移动或要检测一个物件是否经过空间中的某个区域这时就可以用到触发器。3、物体发生碰撞的必要条件答两个物体都必须带有碰撞器Collider其中一个物体还必须带有Rigidbody刚体。4、七简述四元数Quaternion的作用四元数对欧拉角的优点答四元数用于表示旋转相对欧拉角的优点能进行增量旋转、避免万向锁、给定方位的表达方式有两种互为负欧拉角有无数种表达方式5、如何安全的在不同工程间安全地迁移asset数据三种方法答1.将Assets和Library一起迁移2.导出包package3.用unity自带的assets Server功能6、OnEnable、Awake、Start运行时的发生顺序哪些可能在同一个对象周期中反复的发生答Awake–OnEnable-StartOnEnable在同一周期中可以反复地发生!7、MeshRender中material和sharedmaterial的区别答修改sharedMaterial将改变所有物体使用这个材质的外观并且也改变储存在工程里的材质设置。不推荐修改由sharedMaterial返回的材质。如果你想修改渲染器的材质使用material替代。8、TCP/IP协议栈各个层次及分别的功能答网络接口层这是协议栈的最低层对应OSI的物理层和数据链路层主要完成数据帧的实际发送和接收。网络层处理分组在网络中的活动例如路由选择和转发等这一层主要包括IP协议、ARP、ICMP协议等。传输层主要功能是提供应用程序之间的通信这一层主要是TCP/UDP协议。应用层用来处理特定的应用针对不同的应用提供了不同的协议例如进行文件传输时用到的FTP协议发送email用到的SMTP等。9、Unity提供了几种光源分别是什么答四种。平行光Directional Light点光源Point Light聚光灯Spot Light区域光源Area Light10、简述一下对象池你觉得在FPS里哪些东西适合使用对象池对象池就存放需要被反复调用资源的一个空间比如游戏中要常被大量复制的对象子弹敌人以及任何重复出现的对象。11、CharacterController和Rigidbody的区别Rigidbody具有完全真实物理的特性而CharacterController可以说是受限的的Rigidbody具有一定的物理效果但不是完全真实的。12、移动相机动作在哪个函数里为什么在这个函数里LateUpdate是在所有的Update结束后才调用比较适合用于命令脚本的执行。官网上例子是摄像机的跟随都是所有的Update操作完才进行摄像机的跟进不然就有可能出现摄像机已经推进了但是视角里还未有角色的空帧出现。13、简述prefab的用处在游戏运行时实例化prefab相当于一个模板对你已经有的素材、脚本、参数做一个默认的配置以便于以后的修改同事prefab打包的内容简化了导出的操作便于团队的交流。14、GPU的工作原理简而言之GPU的图形处理流水线完成如下的工作并不一定是按照如下顺序。顶点处理这阶段GPU读取描述3D图形外观的顶点数据并根据顶点数据确定3D图形的形状及位置关系建立起3D图形的骨架。在支持DX8和DX9规格的GPU中这些工作由硬件实现的Vertex Shader定点着色器完成。光栅化计算显示器实际显示的图像是由像素组成的我们需要将上面生成的图形上的点和线通过一定的算法转换到相应的像素点。把一个矢量图形转换为一系列像素点的过程就称为光栅化。例如一条数学表示的斜线段最终被转化成阶梯状的连续像素点。纹理帖图顶点单元生成的多边形只构成了3D物体的轮廓而纹理映射texture mapping工作完成对多变形表面的帖图通俗的说就是将多边形的表面贴上相应的图片从而生成“真实”的图形。TMUTexture mapping unit即是用来完成此项工作。像素处理这阶段在对每个像素进行光栅化处理期间GPU完成对像素的计算和处理从而确定每个像素的最终属性。在支持DX8和DX9规格的GPU中这些工作由硬件实现的Pixel Shader像素着色器完成。最终输出由ROP光栅化引擎最终完成像素的输出1帧渲染完毕后被送到显存帧缓冲区。总结GPU的工作通俗的来说就是完成3D图形的生成将图形映射到相应的像素点上对每个像素进行计算确定最终颜色并完成输出。15、什么是渲染管道答是指在显示器上为了显示出图像而经过的一系列必要操作。 渲染管道中的很多步骤都要将几何物体从一个坐标系中变换到另一个坐标系中去。主要步骤有本地坐标-视图坐标-背面裁剪-光照-裁剪-投影-视图变换-光栅化。16、如何优化内存答有很多种方式例如1.压缩自带类库2.将暂时不用的以后还需要使用的物体隐藏起来而不是直接Destroy掉3.释放AssetBundle占用的资源4.降低模型的片面数降低模型的骨骼数量降低贴图的大小5.使用光照贴图使用多层次细节(LOD)使用着色器(Shader)使用预设(Prefab)。18、动态加载资源的方式?1.Resources.Load();2.AssetBundleUnity5.1版本后可以选择使用Git: https://github.com/applexiaohao/LOAssetFramework.git19、 使用Unity3d实现2d游戏有几种方式答1.使用本身的GUI、UGUI2.把摄像机的Projection(投影)值调为Orthographic(正交投影)不考虑z轴3.使用2d插件如2DToolKit、NGUI20、在物体发生碰撞的整个过程中有几个阶段分别列出对应的函数 三个阶段答OnCollisionEnter、OnCollisionStay、OnCollisionExit21、Unity3d的物理引擎中有几种施加力的方式分别描述出来答rigidbody.AddForce、rigidbody.AddForceAtPosition22、什么叫做链条关节答Hinge Joint可以模拟两个物体间用一根链条连接在一起的情况能保持两个物体在一个固定距离内部相互移动而不产生作用力但是达到固定距离后就会产生拉力。23、物体自身旋转使用的函数答 Transform.Rotate()24、Unity3d提供了一个用于保存和读取数据的类(PlayerPrefs)请列出保存和读取整形数据的函数答PlayerPrefs.SetInt()、PlayerPrefs.GetInt()25、Unity3d脚本从唤醒到销毁有着一套比较完整的生命周期请列出系统自带的几个重要的方法。答Awake——Start——Update——FixedUpdate——LateUpdate——OnGUI——Reset——OnDisable——OnDestroy26、物理更新一般放在哪个系统函数里答FixedUpdate每固定帧绘制时执行一次和Update不同的是FixedUpdate是渲染帧执行如果你的渲染效率低下的时候FixedUpdate调用次数就会跟着下降。FixedUpdate比较适用于物理引擎的计算因为是跟每帧渲染有关。Update就比较适合做控制。27、在场景中放置多个Camera并同时处于活动状态会发生什么答游戏界面可以看到很多摄像机的混合。28、如何销毁一个UnityEngine.Object及其子类答 使用Destroy()方法;29、请描述游戏动画有哪几种以及其原理答主要有关节动画、骨骼动画、单一网格模型动画(关键帧动画)。 关节动画把角色分成若干独立部分一个部分对应一个网格模型部分的动画连接成一个整体的动画角色比较灵活Quake2中使用这种动画骨骼动画广泛应用的动画方式集成了以上两个方式的优点骨骼按角色特点组成一定的层次结构有关节相连可做相对运动皮肤作为单一网格蒙在骨骼之外决定角色的外观单一网格模型动画由一个完整的网格模型构成在动画序列的关键帧里记录各个顶点的原位置及其改变量然后插值运算实现动画效果角色动画较真实。30、请描述为什么Unity3d中会发生在组件上出现数据丢失的情况答 一般是组件上绑定的物体对象被删除了31、alpha blend工作原理?答Alpha Blend 实现透明效果不过只能针对某块区域进行alpha操作透明度可设。32、写出光照计算中的diffuse的计算公式答diffuse Kd x colorLight x max(N*L,0)Kd 漫反射系数、colorLight 光的颜色、N 单位法线向量、L 由点指向光源的单位向量、其中N与L点乘如果结果小于等于0则漫反射为0。33、LOD是什么优缺点是什么答LOD(Level of detail)多层次细节是最常用的游戏优化技术。它按照模型的位置和重要程度决定物体渲染的资源分配降低非重要物体的面数和细节度从而获得高效率的渲染运算。33、两种阴影判断的方法、工作原理本影和半影本影景物表面上那些没有被光源直接照射的区域全黑的轮廓分明的区域。半影景物表面上那些被某些特定光源直接照射但并非被所有特定光源直接照射的区域半明半暗区域工作原理从光源处向物体的所有可见面投射光线将这些面投影到场景中得到投影面再将这些投影面与场景中的其他平面求交得出阴影多边形保存这些阴影多边形信息然后再按视点位置对场景进行相应处理得到所要求的视图利用空间换时间每次只需依据视点位置进行一次阴影计算即可省去了一次消隐过程34、Vertex Shader是什么怎么计算答顶点着色器是一段执行在GPU上的程序用来取代fixed pipeline中的transformation和lightingVertex Shader主要操作顶点。Vertex Shader对输入顶点完成了从local space到homogeneous space齐次空间的变换过程homogeneous space即projection space的下一个space。在这其间共有world transformation, view transformation和projection transformation及lighting几个过程。35、MipMap是什么作用答MipMapping在三维计算机图形的贴图渲染中有常用的技术为加快渲染进度和减少图像锯齿贴图被处理成由一系列被预先计算和优化过的图片组成的文件这样的贴图被称为MipMap。36、请描述Interface与抽象类之间的不同答抽象类表示该类中可能已经有一些方法的具体定义但接口就是公公只能定义各个方法的界面 不能具体的实现代码在成员方法中。类是子类用来继承的当父类已经有实际功能的方法时该方法在子类中可以不必实现直接引用父类的方法子类也可以重写该父类的方法。实现接口的时候必须要实现接口中所有的方法不能遗漏任何一个。37、.Net与Mono的关系答mono是.net的一个开源跨平台工具就类似java虚拟机java本身不是跨平台语言但运行在虚拟机上就能够实现了跨平台。.net只能在windows下运行mono可以实现跨平台编译运行可以运行于LinuxUnixMac OS等。38、简述Unity3D支持的作为脚本的语言的名称答Unity的脚本语言基于Mono的.Net平台上运行可以使用.NET库这也为XML、数据库、正则表达式等问题提供了很好的解决方案。Unity里的脚本都会经过编译他们的运行速度也很快。这三种语言实际上的功能和运行速度是一样的区别主要体现在语言特性上。JavaScript、 C#、Boo39、Unity3D是否支持写成多线程程序如果支持的话需要注意什么答仅能从主线程中访问Unity3D的组件对象和Unity3D系统调用支持如果同时你要处理很多事情或者与Unity的对象互动小可以用thread,否则使用coroutine。注意C#中有lock这个关键字,以确保只有一个线程可以在特定时间内访问特定的对象40、Unity3D的协程和C#线程之间的区别是什么答多线程程序同时运行多个线程 而在任一指定时刻只有一个协程在运行并且这个正在运行的协同程序只在必要时才被挂起。除主线程之外的线程无法访问Unity3D的对象、组件、方法。Unity3d没有多线程的概念不过unity也给我们提供了StartCoroutine协同程序和LoadLevelAsync异步加载关卡后台加载场景的方法。 StartCoroutine为什么叫协同程序呢所谓协同就是当你在StartCoroutine的函数体里处理一段代码时利用yield语句等待执行结果这期间不影响主程序的继续执行可以协同工作。41、U3D中用于记录节点空间几何信息的组件名称及其父类名称答Transform 父类是 Component42、向量的点乘、叉乘以及归一化的意义答1点乘描述了两个向量的相似程度结果越大两向量越相似还可表示投影2叉乘得到的向量垂直于原来的两个向量3标准化向量用在只关系方向不关心大小的时候43、矩阵相乘的意义及注意点答用于表示线性变换旋转、缩放、投影、平移、仿射注意矩阵的蠕变误差的积累44、为何大家都在移动设备上寻求U3D原生GUI的替代方案答不美观OnGUI很耗费时间使用不方便45、请简述如何在不同分辨率下保持UI的一致性答NGUI很好的解决了这一点屏幕分辨率的自适应性原理就是计算出屏幕的宽高比跟原来的预设的屏幕分辨率求出一个对比值然后修改摄像机的size。46、为什么dynamic font在unicode环境下优于static font答Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。使用动态字体时Unity将不会预先生成一个与所有字体的字符纹理。当需要支持亚洲语言或者较大的字体的时候若使用正常纹理则字体的纹理将非常大。47、当一个细小的高速物体撞向另一个较大的物体时会出现什么情况如何避免答穿透碰撞检测失败48、请简述OnBecameVisible及OnBecameInvisible的发生时机以及这一对回调函数的意义答当物体是否可见切换之时。可以用于只需要在物体可见时才进行的计算。49、什么叫动态合批跟静态合批有什么区别答如果动态物体共用着相同的材质那么Unity会自动对这些物体进行批处理。动态批处理操作是自动完成的并不需要你进行额外的操作。区别动态批处理一切都是自动的不需要做任何操作而且物体是可以移动的但是限制很多。静态批处理自由度很高限制很少缺点可能会占用更多的内存而且经过静态批处理后的所有物体都不可以再移动了。50、简述StringBuilder和String的区别答String是字符串常量。StringBuffer是字符串变量 线程安全。StringBuilder是字符串变量线程不安全。String类型是个不可变的对象当每次对String进行改变时都需要生成一个新的String对象然后将指针指向一个新的对象如果在一个循环里面不断的改变一个对象就要不断的生成新的对象所以效率很低建议在不断更改String对象的地方不要使用String类型。StringBuilder对象在做字符串连接操作时是在原来的字符串上进行修改改善了性能。这一点我们平时使用中也许都知道连接操作频繁的时候使用StringBuilder对象。51、什么是LightMap答LightMap:就是指在三维软件里实现打好光然后渲染把场景各表面的光照输出到贴图上最后又通过引擎贴到场景上这样就使物体有了光照的感觉。42、Unity和cocos2d的区别答Unity3D支持C#、javascript等cocos2d-x 支持c、Html5、Lua等。cocos2d 开源 并且免费Unity3D支持iOS、Android、Flash、Windows、Mac、Wii等平台的游戏开发cocos2d-x支持iOS、Android、WP等。43、Unity3D Shader分哪几种有什么区别答表面着色器的抽象层次比较高它可以轻松地以简洁方式实现复杂着色。表面着色器可同时在前向渲染及延迟渲染模式下正常工作。顶点片段着色器可以非常灵活地实现需要的效果但是需要编写更多的代码并且很难与Unity的渲染管线完美集成。固定功能管线着色器可以作为前两种着色器的备用选择当硬件无法运行那些酷炫Shader的时还可以通过固定功能管线着色器来绘制出一些基本的内容。44、协同程序的执行代码是什么有何用处有何缺点function Start() { // - After 0 seconds, prints Starting 0.0 // - After 0 seconds, prints Before WaitAndPrint Finishes 0.0 // - After 2 seconds, prints WaitAndPrint 2.0 // 先打印Starting 0.0和Before WaitAndPrint Finishes 0.0两句,2秒后打印WaitAndPrint 2.0 print (Starting Time.time ); // Start function WaitAndPrint as a coroutine. And continue execution while it is running // this is the same as WaintAndPrint(2.0) as the compiler does it for you automatically // 协同程序WaitAndPrint在Start函数内执行,可以视同于它与Start函数同步执行. StartCoroutine(WaitAndPrint(2.0)); print (Before WaitAndPrint Finishes Time.time );}function WaitAndPrint (waitTime : float) { // suspend execution for waitTime seconds // 暂停执行waitTime秒 yield WaitForSeconds (waitTime); print (WaitAndPrint Time.time );}作用一个协同程序在执行过程中,可以在任意位置使用yield语句。yield的返回值控制何时恢复协同程序向下执行。协同程序在对象自有帧执行过程中堪称优秀。协同程序在性能上没有更多的开销。缺点协同程序并非真线程可能会发生堵塞。45、Mock和Stub有何区别Mock与Stub的区别Mock:关注行为验证。细粒度的测试即代码的逻辑多数情况下用于单元测试。Stub关注状态验证。粗粒度的测试在某个依赖系统不存在或者还没实现或者难以测试的情况下使用例如访问文件系统数据库连接远程协议等。46、射线检测碰撞物的原理是答射线是3D世界中一个点向一个方向发射的一条无终点的线在发射轨迹中与其他物体发生碰撞时它将停止发射 。47、客户端与服务器交互方式有几种答 socket通常也称作套接字,实现服务器和客户端之间的物理连接并进行数据传输主要有UDP和TCP两个协议。Socket处于网络协议的传输层。http协议传输的主要有http协议 和基于http协议的Soap协议web service,常见的方式是 http 的post 和get 请求web 服务。48、八十三Unity中照相机的Clipping Planes的作用是什么调整Near、Fare两个值时应该注意什么答剪裁平面 。从相机到开始渲染和停止渲染之间的距离。49、如何在Unity3D中查看场景的面试顶点数和Draw Call数如何降低Draw Call数答在Game视图右上角点击Stats。降低Draw Call 的技术是Draw Call Batching50、请问alpha test在何时使用能达到什么效果Alpha Test,中文就是透明度测试。简而言之就是VF shader中最后fragment函数输出的该点颜色值即上一讲frag的输出half4的alpha值与固定值进行比较。Alpha Test语句通常于Pass{}中的起始位置。Alpha Test产生的效果也很极端要么完全透明即看不到要么完全不透明。51、UNITY3d在移动设备上的一些优化资源的方法答1.使用assetbundle实现资源分离和共享将内存控制到200m之内同时也可以实现资源的在线更新2.顶点数对渲染无论是cpu还是gpu都是压力最大的贡献者降低顶点数到8万以下fps稳定到了30帧左右3.只使用一盏动态光不是用阴影不使用光照探头粒子系统是cpu上的大头4.剪裁粒子系统5.合并同时出现的粒子系统6.自己实现轻量级的粒子系统nimator也是一个效率奇差的地方7.把不需要跟骨骼动画和动作过渡的地方全部使用animation控制骨骼数量在30根以下8.animator出视野不更新9.删除无意义的animator10.animator的初始化很耗时粒子上能不能尽量不用animator11.除主角外都不要跟骨骼运动apply root motion12.绝对禁止掉那些不带刚体带包围盒的物体static collider 运动NUGI的代码效率很差基本上runtime的时候对cpu的贡献和render不相上下13每帧递归的计算finalalpha改为只有初始化和变动时计算14去掉法线计算15不要每帧计算viewsize 和windowsize16filldrawcall时构建顶点缓存使用array.copy17.代码剪裁使用strip level 使用.net2.0 subset18.尽量减少smooth group19.给美术定一个严格的经过科学验证的美术标准并在U3D里面配以相应的检查工具52、四元数有什么作用答对旋转角度进行计算时用到四元数53、将Camera组件的ClearFlags选项选成Depth only是什么意思有何用处答仅深度该模式用于对象不被裁剪。54、如何让已经存在的GameObject在LoadLevel后不被卸载掉void Awake(){ DontDestroyOnLoad(transform.gameObject);}55、在编辑场景时将GameObject设置为Static有何作用答设置游戏对象为Static将会剔除或禁用网格对象当这些部分被静态物体挡住而不可见时。因此在你的场景中的所有不会动的物体都应该标记为Static。56、有A和B两组物体有什么办法能够保证A组物体永远比B组物体先渲染答把A组物体的渲染对列大于B物体的渲染队列57、将图片的TextureType选项分别选为Texture和Sprite有什么区别答Sprite作为UI精灵使用Texture作用模型贴图使用。58、问一个Terrain分别贴3张4张5张地表贴图渲染速度有什么区别为什么答没有区别因为不管几张贴图只渲染一次。59、什么是DrawCallDrawCall高了又什么影响如何降低DrawCall答Unity中每次引擎准备数据并通知GPU的过程称为一次Draw Call。DrawCall越高对显卡的消耗就越大。降低DrawCall的方法Dynamic BatchingStatic Batching高级特性Shader降级为统一的低级特性的Shader。60、实时点光源的优缺点是什么答可以有cookies – 带有 alpha通道的立方图(Cubemap )纹理。点光源是最耗费资源的。61、Unity的Shader中Blend SrcAlpha OneMinusSrcAlpha这句话是什么意思答作用就是Alpha混合。公式最终颜色 源颜色 源透明值 目标颜色1 - 源透明值62、简述水面倒影的渲染原理答: 原理就是对水面的贴图纹理进行扰动以产生波光玲玲的效果。用shader可以通过GPU在像素级别作扰动效果细腻需要的顶点少速度快63、简述NGUI中Grid和Table的作用答对Grid和Table下的子物体进行排序和定位64、请简述NGUI中Panel和Anchor的作用答只要提供一个half-pixel偏移量它可以让一个控件的位置在Windows系统上精确的显示出来只有这个Anchor的子控件会受到影响如果挂载到一个对象上那么他可以将这个对象依附到屏幕的角落或者边缘UIPanel用来收集和管理它下面所有widget的组件。通过widget的geometry创建实际的draw call。没有panel所有东西都不能够被渲染出来,你可以把UIPanel当做Renderer