本人总结的一些 Unity3d 高频面试题目,希望可以帮助到大家。
限于个人水平有限,只附上一些参考答案。
=======================================
数据结构和算法很重要,图形学也很重要!
大的游戏公司很看重个人基础、综合能力;
小公司看你实际工作能力,看你的 Demo。
高频问答的问题:
一.什么是渲染管道?
是指在显示器上为了显示出图像而经过的一系列必要操作。
渲染管道中的很多步骤,都要将几何物体从一个坐标系中变换到另一个坐标系中去。
主要步骤有:
本地坐标->视图坐标->背面裁剪->光照->裁剪->投影->视图变换->光栅化。
二.如何优化内存?
有很多种方式,例如
1.压缩自带类库;
2.将暂时不用的以后还需要使用的物体隐藏起来而不是直接 Destroy 掉;
3.释放 AssetBundle 占用的资源;
4.降低模型的片面数,降低模型的骨骼数量,降低贴图的大小;
5.使用光照贴图,使用多层次细节(LOD),使用着色器(Shader),使用预设(Prefab)。
三、动态加载资源的方式?(有时候也问区别,具体请百度)
1.Resources.Load();
2.AssetBundle
四、什么是协同程序?
在主线程运行时同时开启另一段逻辑处理,来协助当前程序的执行。换句话说,开启协程
就是开启一个线程。可以用来控制运动、序列以及对象的行为。
五、你用过哪些插件?
(最好多熟悉几个插件,问的时候好回答)
===============================================
=====
1.使用 Unity3d 实现 2d 游戏,有几种方式?
1.使用本身的 GUI;
2.把摄像机的 Projection(投影)值调为 Orthographic(正交投影),不考虑 z 轴;
3.使用 2d 插件,如:2DToolKit;
2.Unity3d 中的碰撞器和触发器的区别?
碰撞器有碰撞的效果,IsTrigger=false,可以调用 OnCollisionEnter/Stay/Exit 函数;
触发器没有碰撞效果,IsTrigger=true,可以调用 OnTriggerEnter/Stay/Exit 函数。
3.物体发生碰撞的必要条件
两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有 Rigidbody 刚体。
4.CharacterController 和 Rigidbody 的区别?
CharacterController 自带胶囊碰撞器,里面包含有刚体的属性;
Rigidbody 就是刚体,使物体带有刚体的特征。
5.在物体发生碰撞的整个过程中,有几个阶段,分别列出对应的函数
三个阶段
1.OnCollisionEnter