码迷,mamicode.com
首页 > 编程语言 > 详细

Unity面试题汇总

时间:2018-03-02 14:59:17      阅读:287      评论:0      收藏:0      [点我收藏+]

标签:程序   使用   collision   服务器   条件   get   tor   res   版本升级   

一、什么是渲染管道?

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

      主要步骤如下:

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

 

二、如何优化内存?

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

      比如:

        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面试题汇总

标签:程序   使用   collision   服务器   条件   get   tor   res   版本升级   

原文地址:https://www.cnblogs.com/Dean27/p/8492458.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!