Unity 手游项目优化建议(杂文)
2017-12-11 18:46
274 查看
1.加载预制体时,何时使用异步加载。
当预制体复杂度很高,高达几百ms,这个时候同步加载可能会造成中低端机型的卡顿。通过拆分预制体进行异步加载可以避免卡顿,但可能所需的时间会更长。异步所需的总时间比同步要长几倍,但是异步分别发散到几帧内后每帧的时间会很短因此卡顿就没那么严重了。(顺便一说,在实例化一个预制体时才会加载预制体上相关资源,Resourse.Load加载预制体的速度还是相当快的)。因此我们可以把各个逻辑脚本都放在子预制体上当它们实例结束就可以执行脚本否则将导致预制体实例和脚本执行之间有一段太长的空白期,将所有代码放在主预制体上必须得等到所有子预制体也加载完成之后在回调。
2.养成良好习惯,为每一个游戏物体赋予不同的名字,真的很重要。如果工程做到很大,当要去改UI时(改脚本又是另一回事)你的每一个UI都叫Image Text 的时候,怕是真的想哭。(分类不同游戏物体的名称方便批量管理),同理,细分预制体也有助于批量管理。
3.每一个行为都应该写在一个方法中,在复杂的工程中方法最好是多一些比较好,这样在处理 “我们中出了一个叛徒”的情况下重写就显得游刃有余了。当你把主要逻辑都写在一个Preshow()中的时候,你只能去重写这整个Preshow()来达到目的。
4.封装常用的系统函数,方便管理。举个例子,将gameobject.setactive(false)封装,假设我们以后要给这个对象隐藏前加一段动画,那么我们可以去修改封装方法,而不需要去每一处去修改。
5.当文本中的文字内容长度需要变动时,使用bitfit或者content size fit来自适应,在搭UI的时候就应该考虑清楚每一个文本是否需要特殊化。
6.之前误解了meta文件的作用,以为meta文件里存放的是该资源的引用,其实meta里存放的是对这个资源的唯一ID(用于识别资源),当prefab中出现资源miss时,是你上传了prefab的meta,prefab的meta里存放着引用资源的ID,然后去找引用ID,然后找不到,因为你资源的meta不存在,所以就miss了。
7.在做UI的时候,就应该本地化做好,不然最后再来改每一处的中文可就不是这么容易了
8.相机的正交和透视模式下 物体位于相机同一平面时均不显示。
9.高内聚低耦合。举个例子,在游戏开发中,当我们去开发界面时,应考虑到该界面是否可以独立创建还是必须依赖于某个界面开启,一般来说,当别人去调用我们的接口时应保证容错率要高。想想如果打开那个目标界面之前要创建N个界面那游戏体验简直了
当预制体复杂度很高,高达几百ms,这个时候同步加载可能会造成中低端机型的卡顿。通过拆分预制体进行异步加载可以避免卡顿,但可能所需的时间会更长。异步所需的总时间比同步要长几倍,但是异步分别发散到几帧内后每帧的时间会很短因此卡顿就没那么严重了。(顺便一说,在实例化一个预制体时才会加载预制体上相关资源,Resourse.Load加载预制体的速度还是相当快的)。因此我们可以把各个逻辑脚本都放在子预制体上当它们实例结束就可以执行脚本否则将导致预制体实例和脚本执行之间有一段太长的空白期,将所有代码放在主预制体上必须得等到所有子预制体也加载完成之后在回调。
2.养成良好习惯,为每一个游戏物体赋予不同的名字,真的很重要。如果工程做到很大,当要去改UI时(改脚本又是另一回事)你的每一个UI都叫Image Text 的时候,怕是真的想哭。(分类不同游戏物体的名称方便批量管理),同理,细分预制体也有助于批量管理。
3.每一个行为都应该写在一个方法中,在复杂的工程中方法最好是多一些比较好,这样在处理 “我们中出了一个叛徒”的情况下重写就显得游刃有余了。当你把主要逻辑都写在一个Preshow()中的时候,你只能去重写这整个Preshow()来达到目的。
4.封装常用的系统函数,方便管理。举个例子,将gameobject.setactive(false)封装,假设我们以后要给这个对象隐藏前加一段动画,那么我们可以去修改封装方法,而不需要去每一处去修改。
5.当文本中的文字内容长度需要变动时,使用bitfit或者content size fit来自适应,在搭UI的时候就应该考虑清楚每一个文本是否需要特殊化。
6.之前误解了meta文件的作用,以为meta文件里存放的是该资源的引用,其实meta里存放的是对这个资源的唯一ID(用于识别资源),当prefab中出现资源miss时,是你上传了prefab的meta,prefab的meta里存放着引用资源的ID,然后去找引用ID,然后找不到,因为你资源的meta不存在,所以就miss了。
7.在做UI的时候,就应该本地化做好,不然最后再来改每一处的中文可就不是这么容易了
8.相机的正交和透视模式下 物体位于相机同一平面时均不显示。
9.高内聚低耦合。举个例子,在游戏开发中,当我们去开发界面时,应考虑到该界面是否可以独立创建还是必须依赖于某个界面开启,一般来说,当别人去调用我们的接口时应保证容错率要高。想想如果打开那个目标界面之前要创建N个界面那游戏体验简直了
相关文章推荐
- Unity开发IOS游戏的优化建议
- unity几种优化建议
- 腾讯大咖说:腾讯是如何做Unity手游性能优化的
- unity项目优化-- 常规性能优化技巧
- Unity开发IOS游戏的优化建议
- Unity开发-你必须知道的优化建议
- 【小松教你手游开发】【unity实用技能】foreach为什么在unity不建议用
- Unity手游优化总概
- (部分原创)unity项目开发中VR工程的优化(下)
- 项目开发中遇到的一些问题--代码优化的一些小建议
- Unity项目优化--开发项目的小经验
- unity几种优化建议
- Unity项目优化--开发项目的一点经验
- Unity项目优化--开发项目的一点经验
- unity优化的一些建议(代码+文字)
- 干货!Unity 几种优化建议
- 一些Unity 优化建议 整理(为自己)
- unity手游优化经验(记录)
- 项目优化之部署建议一
- Unity项目优化