文档介绍:本人总结的一些Unity3d高频面试题目,希望可以帮助到大家。
限于个人水平有限,只附上一些参考答案。
=======================================
数据结构和算法很重要,图形学也很重要!
大的游戏公司很看重个人基础、综合能力;
小公司看你实际工作能力,看你的Demo。
高频问答的问题:
什么是渲染管道?
是指在显示器上为了显示出图像而经过的一系列必要操作。
渲染管道中的很多步骤,都要将几何物体从一个坐标系中变换到另一个坐标系中去。
主要步骤有:
本地坐标->视图坐标->背面裁剪->光照->裁剪->投影->视图变换->光栅化。
如何优化内存?
有很多种方式,例如
压缩自带类库;
将暂时不用的以后还需要使用的物体隐藏起来而不是直接Destroy掉;
释放AssetBundle占用的资源;
降低模型的片面数,降低模型的骨骼数量,降低贴图的大小;
使用光照贴图,使用多层次细节(LOD),使用着色器(Shader),使用预设(Prefab)。
动态加载资源的方式?(有时候也问区别,具体请百度)
();
什么是协同程序?
在主线程运行时同时开启另一段逻辑处理,来协助当前程序的执行。换句话说,开启协程就是开启一个线程。可以用来控制运动、序列以及对象的行为。
你用过哪些插件?
(最好多熟悉几个插件,问的时候好回答)
====================================================
,有几种方式?
;
(投影)值调为Orthographic(正交投影),不考虑z轴;
,如:2DToolKit;
Unity3d中的碰撞器和触发器的区别?
碰撞器有碰撞的效果,IsTrigger=false,可以调用OnCollisionEnter/Stay/Exit函数;
触发器没有碰撞效果,IsTrigger=true,可以调用OnTriggerEnter/Stay/Exit函数。
物体发生碰撞的必要条件
两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigidbody刚体。
CharacterController和Rigidbody的区别?
CharacterController自带胶囊碰撞器,里面包含有刚体的属性;
Rigidbody就是刚体,使物体带有刚体的特征。
在物体发生碰撞的整个过程中,有几个阶段,分别列出对应的函数
三个阶段
Unity3d的物理引擎中,有几种施加力的方式,分别描述出来
,都在rigidbody系列函数中。
什么叫做链条关节?
Hinge Joint,可以模拟两个物体间用一根链条连接在一起的情况,能保持两个物体在一个固定距离内部相互移动而不产生作用力,但是达到固定距离后就会产生拉力。
物体自身旋转使用的函数?
()
物体围绕某点旋转使用的函数?
()
Unity3d提供了一个用于保存和读取数据的类(PlayerPrefs),请列出保存和读取整形数据的函数
() ()
Unity3d提供了几种光源类型,分别是哪几种?
四种。
平行光:Directional Light 点光源:Point Light
聚光灯:Spot Light 区域光源:Area Light
Unity3d脚本从唤醒到销毁有着一套比较完整的生命周期,请列出系统自带的几个重要的方法。
Awake——>Start——>Update——>FixedUpdate——>LateUpdate——>OnGUI——>Reset——>OnDisable——>OnDestroy
物理更新一般放在哪个系统函数里?
FixedUpdate,每固定帧绘制时执行一次,和Update不同的是FixedUpdate是渲染帧执行,如果你的渲染效率低下的时候FixedUpdate调用次数就会跟着下降。FixedUpdate比较适用于物理引擎的计算,因为是跟每帧渲染有关。Update就比较适合做控制。
移动摄像机的动作放在哪个系统函数中,为什么放在这个函数中?
LateUpdate,在每帧执行完