Unity面试题汇总

Posted dean27

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity面试题汇总相关的知识,希望对你有一定的参考价值。

一、什么是渲染管道?

    答:是指显示器为了显示出图像而经过的一系列的必要操作。渲染管道中的很多步骤,都要将几何物体从一个坐标系变换到另一个坐标系中去。

      主要步骤如下:

        本地坐标系 -- 经过世界变换矩阵 --> 世界坐标系 -- 经过视图变换矩阵 --> 视图坐标系 -- 经过投影变换矩阵 -->  投影坐标系 -- 经过视口变换矩阵 --> 视口坐标系

 

二、如何优化内存?

    答:优化内存的方式有很多种

      比如:

        1.压缩自带类库;

        2.将暂时不用的,以后还需要使用的物体隐藏起来,而不是Destroy掉;

        3.释放AssetBundle占用的资源;

        4.降低模型的片面数,降低模型的骨骼数量,降低贴图的大小;

        5.使用光照贴图,使用多层次细节(LOD),使用着色器(Shader),使用预设(Prefab)。

 

三、动态加载资源的方式,以及区别。

    答:

      1.通过Resources.Load()模块:调用它的load函数,可以直接load并返回某个类型的Object,前提是需要把这个资源放在Resource命名的文件夹下,Unity不管有没有场景引用,都会将其全部打包到安装包中。

      2.通过bundle的形式:即将资源打包成 asset bundle 放在服务器或本地磁盘,然后使用www模块get下来,之后从这个bundle中load某个Object。

      3.通过AssetDatabase.loadasset:这种方式只在editor范围内有效,游戏运行时没有这个函数,他通常是在开发中调用。

      区别:

      Resoueces的方式需要把所有资源全部打入安装包,这对游戏的发布和版本升级(patch)是不利的,所以Unity不太推荐使用它,而都用bundle的方式代替,把资源打成几个小的bundle,用哪个就load哪个,

      这样有利于分包发布和版本升级。但是在开发过程中,不可能每更新一个资源就打一次bundle,所以在editor环境下可以使用AssetDatabase来模拟,这通常需要我们封装一个dynamic resource的loader模块,

      在不同的环境下做不同的实现。

 

四、什么是协同程序?

    答:在主线程运行的同时开启另一段逻辑处理,来协助当前程序的执行,协程很像多线程,但是不是多线程。Unity的协程是在每帧结束之后去检测yield的条件是否满足。

 

五、Unity中的碰撞器和触发器的区别。

    答:

      1.碰撞器是触发器的载体,而触发器只是碰撞器身上的一个属性。

      2.当 Is Trigger = fasle 时,碰撞器根据物理引擎引发碰撞,产生碰撞的效果。可以调用OnCollisionEnter、OnCollisionExit 函数;

      3.当 Is Trigger = true 时,碰撞器被物理引擎所忽略,没有碰撞效果,可以调用OnTriggerEnter、OnTriggerExit 函数。

      4.如果既要检测到物体的接触,又不想让碰撞检测影响物体移动,或者要检测一个物体是否经过空间中的你某个区域,这时就可以用到触发器。

 

 

 

 

 

               




以上是关于Unity面试题汇总的主要内容,如果未能解决你的问题,请参考以下文章

Linux面试题汇总答案

面试题汇总

小猿圈web前端面试题汇总

四年Java面试遇到的问题整理,Java面试题汇总

面试题整理

多线程笔试面试题汇总