unity面试常见问题

本文深入探讨Unity游戏开发中的关键概念,如Update、FixedUpdate、LateUpdate的区别及应用,Prefab、AssetBundle的功能,Resources与StreamingAssets的区别,Batching的作用原理,以及MeshCollider碰撞条件。同时,提供实现无缝游戏场景的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

给大家推荐一个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内,在打包之后要针对每个打包的资源查询重用资源。将共用同一父节点的重用资源作为子节点的资源依赖项。根据玩家在大场景中的位置,根据四叉树的结构加载周围资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值