Unity面试题——Unity性能优化

简介: Unity面试题——Unity性能优化

168. lod 是什么,优缺点是什么

LOD 技术即 Levels of Detail 的简称,意为多细节层次。LOD 技术指根据物体模型的节点在显示环境中所 处的位置和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。

优点:可根据距离动态地选择渲染不同细节的模型

缺点:加重美工的负担,要准备不同细节的同一模型,同样的会稍微增加游戏的容量。

169. MipMap 是什么?作用?

在三维计算机图形的贴图渲染中有一个常用的技术被称为 Mipmapping。为了加快渲染速度和减少图像 锯齿,贴图被处理成由一系列被预先计算和优化过的图片组成的文件,这样的贴图被称为 MIP map 或者 mipmap。

170. 当游戏中需要频繁创建一个物体对象时,我们需要怎么做来节省内存。

做一个 pool,游戏开始时预先实例化足够的数量,然后用的时候取不用的时候收回

171. 如何优化内存?

有很多种方式,例如

1.压缩自带类库;

2.将暂时不用的以后还需要使用的物体隐藏起来而不是直接 Destroy 掉;

3.释放 AssetBundle 占用的资源;

4.降低模型的片面数,降低模型的骨骼数量,降低贴图的大小;

5.使用光照贴图,使用多层次细节(LOD),使用着色器(Shader),使用预设(Prefab)。

172. 动态加载资源的方式?和区别

1.通过 Resources 模块,调用它的 load 函数:可以直接 load 并返回某个类型的 Object,前提是要把这 个资源放在 Resource 命名的文件夹下,Unity 不关有没有场景引用,都会将其全部打入到安装包中。 Resources.Load();

2.通过 bundle 的形式: 即将资源打成 asset bundle 放在服务器或本地磁盘, 然后使用 WWW 模块 get 下来, 然后从这个 bundle 中 load 某个 object。

3.通过 AssetDatabase.loadasset :这种方式只在 editor 范围内有效,游戏运行时没有这个函数, 它通常 是在开发中调试用的 【AssetDatabase 资源数据库】

区别:Resources 的方式需要把所有资源全部打入安装包,这对游戏的分包发布(微端)和版本升级(patch)是不利的,所以 unity 推荐的方式是不用它, 都用 bundle 的方式替代, 把资源达成几个小 的 bundle, 用哪个就 load 哪个,这样还能分包发布和 patch,但是在开发过程中,不可能没更新一个 资源就打一次 bundle, 所以 editor 环境下可以使用 AssetDatabase 来模拟,这通常需要我们封装一个 dynamic resource 的 loader 模块,在不同的环境下做不同实现。

动态资源的存放

有时我需要存放一些自己的文件在磁盘上,例如我想把几个 bundle 放在初始的安装里, unity 有一个 streaming asset 的概念,用于提供存储接口的访问。我们需要在编辑器建立一个 StreamingAssets 名字 的文件夹,把需要我们放在客户磁盘上的动态文件放在这个文件夹下面,这样安装后,这些文件会放在用户磁盘的指定位置,这个位置可以通过 Application.streamingAssetsPath 来得到。

173. 请简述一下对象池原理,什么情况下使用?

对象池背后的理念其实是非常简单的。我们将对象存储在一个池子中,当需要时在再次使用,而不是 每次都实例化一个新的对象。池的最重要的特性,也就是对象池设计模式的本质是允许我们获取一个“新的”对象而不管它真的是一个新的对象还是循环使用的对象。 对象池通常用于在那些需要经常创建又销毁的对象比如我们场景中的小怪,经常需要创建和销毁,我 们就可以在小怪销毁的时候,不真正的销毁而是,而是把它放入对象池中等到下一次我们需要创建小怪的时候,再从对象池中取出来。

174. 使用 mipmap 有什么好处?什么情况下使用?

Mipmap 纹理技术是目前解决纹理分辨率与视点距离关系的最有效途径,它会先将图片压缩成很多逐渐 缩小的图片,例如一张 6464 的图片,会产生 6464,3232,1616,88,44,22,11 的 7 张图片,当屏幕上需 要绘制像素点为 2020 时,程序只是利用 3232 和 1616 这两张图片来计算出即将显示为 2020 大小 的一个图片,这比单独利用 32*32 的那张原始片计算出来的图片效果要好得多,速度也更快。

175. Unity 内存优化?

GC 垃圾回收

176. 你认为 unity 在开发过程中哪些地方比较容易造成内存泄漏和内存泄漏 问题?如何避免?

脚本做载入不删除处理时,往往脚本中还有一些不用的变量,容易导致内容泄漏

177. 使用 NGUI 开发滚动视图,当滚动列表达到几百条的时候,如何才能保 证界面的滚动流畅运行

  1. 每个滚动条目都是同一个预设体的实例

2.做缓存,只要实例化视野范围内滚动条目,往上超出视野部分,自动填补到视野的下面

178. 如何解决过多创建和删除对象带来的卡顿问题

对象池,把不用对象缓存到一个对象列表中

179. Unity 资源加载的有几种方式,简述 asset bundie

  1. 直接在脚本中 public 一个对象,然后在监视器面板进行赋值
  2. 直接在程序中进行 find 查找
  3. Resource.load
  4. 把资源打成 Assetbudle,然后用的时候 load 进来 assetbundle 就是对资源的打包处理,同时这种资源格式便于从互联网上下载

180. 背包系统中只有 20 个格子,现在有总共有 100 个物体,除了显示在 视野中的 20 个外,对其他的处理方法?(注:将其他隐藏起来不可行,对象池得有具体的说明)

  1. 每个滚动条目都是同一个预设体的实例
  2. 做缓存,只要实例化视野范围内滚动条目,往上超出视野部分,自动填补到视野的下面
目录
相关文章
|
6月前
|
SQL 关系型数据库 MySQL
MYSQL-SQL语句性能优化策略以及面试题
MYSQL-SQL语句性能优化策略以及面试题
132 1
|
6月前
|
Web App开发 缓存 前端开发
当面试官问我前端可以做的性能优化有哪些
当面试官问我前端可以做的性能优化有哪些
119 0
|
23天前
|
存储 缓存 网络协议
5个Android性能优化相关的深度面试题
本文涵盖五个Android面试题及其解答,包括优化应用启动速度、内存泄漏的检测与解决、UI渲染性能优化、减少内存抖动和内存溢出、优化网络请求性能。每个问题都提供了详细的解答和示例代码。
22 2
|
6月前
|
测试技术 Android开发
Android开发规范,性能优化,Android面试2024
Android开发规范,性能优化,Android面试2024
|
2月前
|
图形学 iOS开发 Android开发
从Unity开发到移动平台制胜攻略:全面解析iOS与Android应用发布流程,助你轻松掌握跨平台发布技巧,打造爆款手游不是梦——性能优化、广告集成与内购设置全包含
【8月更文挑战第31天】本书详细介绍了如何在Unity中设置项目以适应移动设备,涵盖性能优化、集成广告及内购功能等关键步骤。通过具体示例和代码片段,指导读者完成iOS和Android应用的打包与发布,确保应用顺利上线并获得成功。无论是性能调整还是平台特定的操作,本书均提供了全面的解决方案。
148 0
|
3月前
|
存储 Java 图形学
UNITY性能优化☀️一、GC介绍与Unity内存管理方法
UNITY性能优化☀️一、GC介绍与Unity内存管理方法
|
4月前
|
算法 Java API
Android性能优化面试题经典之ANR的分析和优化
Android ANR发生于应用无法在限定时间内响应用户输入或完成操作。主要条件包括:输入超时(5秒)、广播超时(前台10秒/后台60秒)、服务超时及ContentProvider超时。常见原因有网络、数据库、文件操作、计算任务、UI渲染、锁等待、ContentProvider和BroadcastReceiver的不当使用。分析ANR可借助logcat和traces.txt。主线程执行生命周期回调、Service、BroadcastReceiver等,避免主线程耗时操作
62 3
|
5月前
|
缓存 JSON 网络协议
Android面试题:App性能优化之电量优化和网络优化
这篇文章讨论了Android应用的电量和网络优化。电量优化涉及Doze和Standby模式,其中应用可能需要通过用户白名单或电池广播来适应限制。Battery Historian和Android Studio的Energy Profile是电量分析工具。建议减少不必要的操作,延迟非关键任务,合并网络请求。网络优化包括HTTPDNS减少DNS解析延迟,Keep-Alive复用连接,HTTP/2实现多路复用,以及使用protobuf和gzip压缩数据。其他策略如使用WebP图像格式,按网络质量提供不同分辨率的图片,以及启用HTTP缓存也是有效手段。
87 9
|
4月前
|
SQL 监控 Java
Java面试题:简述数据库性能优化的常见手段,如索引优化、SQL语句优化等。
Java面试题:简述数据库性能优化的常见手段,如索引优化、SQL语句优化等。
291 0
|
5月前
|
SQL 关系型数据库 MySQL
【面试高频 time:】关于MYsql性能优化的理解
【面试高频 time:】关于MYsql性能优化的理解
47 0