洪流学堂,让你快人几步。
本篇文章首发于我的公众号:洪流学堂
今天整理了一些Unity面试题目,希望可以帮助到你。
面试官:叉乘和点乘的意义?
答:
叉乘:
几何意义:得到一个与这两个向量都垂直的向量,这个向量的模是以两个向量为边的平行四边形的面积。
在同一平面内,结果>0表示B在A的逆时针方向,结果<0表示B在A的顺时针方向, 结果=0表示B与A同向。
点乘:
几何意义:可以用来表征或计算两个向量之间的夹角,以及b向量在a向量方向上的投影。
两个向量的点乘所得到的是两个向量的余弦值,也就是-1到1之间,0表示垂直,-1表示相反,1表示相同方向。
面试官:虚方法和抽象方法的区别?
答:
- 抽象方法是只有方法名称,没有方法体,即没有方法的具体实现,子类必须重写父类抽象方法才能实现具体功能;虚函数有方法名称也也有方法体,但是子类可覆盖,也可不覆盖。
- 抽象方法是一种强制派生类覆盖的方法,否则派生类将不能被实例化。
- 抽象方法只能在抽象类中声明,虚方法不是。
- 派生类必须重写抽象类中的抽象方法,虚方法则不必要。
面试官:Addcomponent后哪个生命周期函数会被调用?
答:
对于AddComponent添加的脚本,其Awake,Start,OnEnable是在Add的当前帧被调用的,其中Awake,OnEnable与AddComponent处于同一调用链上,Start会在当前帧稍晚一些的时候被调用,Update则是根据Add调用时机决定何时调用:如果Add是在当前帧的Update前调用,那么新脚本的Update也会在当前帧被调用,否则会被延迟到下一帧调用。
面试官:Unity中协程是如何实现的?
答:
协程不是线程,也不是异步执行的。协程和MonoBehaviour的Update函数一样也是在MainThread中执行的。使用协程你不用考虑同步和锁的问题。
协程其实就是一个IEnumerator(迭代器),IEnumerator 接口有两个方法Current和MoveNext() ,只有当MoveNext()返回 true时才可以访问Current,否则会报错。迭代器方法运行到yield return语句时,会返回一个expression表达式并保留当前在代码中的位置,当下次调用迭代器函数时执行从该位置重新启动。
面试官:图集打包怎么分类?
答:
- 按业务功能的预制,寻找依赖,收集所有预制引用的图片。
- 如果有多个预制使用了同一张图片,我们就把它扔到common文件夹。
- 让图集尽量紧凑,没有太多空白,尽量让图集处于2的n次方大小。
扩展阅读
关注洪流学堂,每周一定期推送。
我是大智,你的技术探路者,下次见!
别走!点赞,收藏哦!
好,你可以走了。
网友评论