Unity面试常见问题
Update Fixed Update Late Update有什么区别有什么运用?Update每帧调用,大部分的角色行为都依赖于Update执行。
Fixed Update在固定时间间隔调用,一般用于刚体的运动。
Late Update 在所有物体的Update执行完之后执行,一般用于控制摄像机运动。
Prefab是什么?
Unity中的预制体相当于是一个游戏物体及其组件和属性的集合。也相当于一个新物体的模板。你在编辑器下修改的预制体能反映到每个你实际使用的预制体中。
AssetBundle有什么用?
AseetBundle是一些你选择导出的资源包,这些资源包中的内容已经被妥善压缩,并且允许你在应用中正常使用。这也方便开发者能以流的形式加载模型贴图音效或整个场景。AssetsBundlej就是用于简化下载流程的工具。
Resources和StreamingAssets文件夹有什么区别?
Unity的Resource文件夹中包括我们在游戏中需要用到的一些列资源,会在打包时打入UnityPlayer中,这些资源大多数没有必要在Inspector上直接附着于组件之上,任何一个在Resources的资源都可以通过Resources.Load函数来实时加载到游戏中使用
StreamingAssets文件夹中的东西不会随着Unity打包而压缩,他会正常放到文件系统中,这是为了帮助游戏运行时能通过文件访问形式访问这些资源,比如iOS设备中,就只能通过StreamingAssets来访问你需要在游戏中使用的视频资源。
什么是Batching以及Batching是如何作用的?
当需要绘制一个物体时,引擎会需要调用图形API(DirectX或者OpenGL)的DrawCall命令,而DrawCall命令。而DrawCall命令一般都是需要调用大量资源的。这样子就会对CPU端的运算造成压力,而主要CPU端的压力都是来自于渲染状态变换。Unity使用两种方式减少这些状态变换:
1. Dynamic Batching 对于小的网格,Unity会将他们一次性打包丢到GPU端来一次性绘制。
2. Static Batching 对于静态物体(不移动的物体),Unity会将他们打包成一个大型网格来一次性绘制。
两个网格碰撞体Mesh Collider 在什么情况下会产生互相碰撞?
当至少一个网格是凸多边形时才行,一般而言网格碰撞的计算将极其消耗资源。
一些附加的问题:
如何实现无缝游戏场景?
使用四叉树对所有场景进行切分,将每个四叉树的叶节点的资源打包到AssetBundle内,在打包之后要针对每个打包的资源查询重用资源。将共用同一父节点的重用资源作为子节点的资源依赖项。根据玩家在大场景中的位置,根据四叉树的结构加载周围资源。
页:
[1]