找回密码
 立即注册
查看: 607|回复: 9

unity做手游有哪些坑?

[复制链接]
发表于 2020-11-27 20:56 | 显示全部楼层 |阅读模式
初学,想知道unity做手游有哪些常见的坑,求老司机带
发表于 2020-11-27 21:00 | 显示全部楼层
之前见过类似的问题,请题主参考:
那些事情是用Unity开发项目应该一开始规划好的?如何避免后期酿成巨坑?我再次整理回答一下:
1. 资源管理和打包

这部分请参考链接,回答比较多集中在资源管理这块。
大部分技术开发者对资源管理不太熟悉,需要和美术交流、通过实践磨练,没有捷径。所以很多大厂会聘请专业的TA(技术美术岗位)来兼顾这方面的工作。
2. 编辑器的设计

在做一些小项目时这些可视化操作可能还蛮方便的。比如脚本中暴露字段在Inspector面板上,拖拽一下就能方便的指定引用,但是大型项目中这就是无底深坑。
如果一个项目比较复杂,一个界面上有几十个需要拖拽的字段,一不小心鼠标滑了那就悲剧了,慢慢找吧。
Unity中没办法看到这些拖拽的操作的记录,最好的办法还是在C#代码中来指定这些引用。
同理获取物体组件时也不能依赖物体本身的父子关系,万一有人动了节点顺序那又是一个灾难。
3. 脚本的初始化顺序

如果多个系统都把初始化写在Awake和Start里,你是不知道这些脚本启动的先后顺序的。这个时候如果脚本之间有依赖关系就会出问题。虽然Unity提供了Script Execution Order来解决:

但有时候并不确定初始化函数的运行时间,仍然要用异步或其他方式来处理。
知友Xylt对这个问题的描述比较好:
awake做不依赖其他组件的初始化,start做依赖其他部件的初始化,如果这之间还有初始化顺序要求,应该用中心控制器决定下属部件的初始化和调用时机。


看了下其他答主的回答问题大多集中在资源管理上,在大型项目上这的确是一个难以规避的深坑。特别是在Unity对相关API的技术细节隐藏较深的情况下。
至于其他一些做小型项目会遇到的坑,大部分都能想一些别出心裁的方式绕过去,比如无法自定义物体的轴心(Pivot),套上一个父节点调整之类的。
Unity近两年一直保持一个较高的更新频率,不断有新功能或是组件加入到新版本中。在使用过程中肯定会出现其他各种各样的细节问题,因此若是开发大型项目时还是使用一个相对稳定的版本比较靠谱,比如现在这个时间点可以考虑使用Unity 2017 LTS版本。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2020-11-27 21:03 | 显示全部楼层
我认为Unity主要的坑在于手游的性能问题。

如果说左边是玩家经常会遭遇到的表面现象,那右边则是基于Unity引擎深挖后的问题本质。

因此如何做好性能优化就成为了手游品质保证的核心。代码的优化方面可以详见我的另一个回答:Unity3d有没有什么性能测试的工具?想找一下代码里面哪些地方有问题,优化一下游戏性能 - 负荷的回答
同时也介绍一款很好用的优化工具:http://wetest.qq.com/cube
Unity手游的性能优化过程更像是一门时空转换的艺术, 持续在CPU和内存之间取得一个平衡。空间不足时则需要释放一些无用数据,以获得更优的空间使用率;时间太长时就需要降低不必要的函数开销。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2020-11-27 21:09 | 显示全部楼层
既然是初学,那么遇到问题先想办法解决,解决不了就绕开它,别以坑为借口。
真正的坑,是非得拿到 Unity 的引擎源代码才能解决的大 Bug,等你真正要面对这些问题时,你已经是大牛了。那个时候,摆在你面前的解决方法肯定不止一种。

好吧,不抖机灵了。
做手游常见的坑有:
    导出的包尺寸太大。这个可以通过压缩素材,牺牲品质来解决。但还是大,一个空包都10M 起。大场景Drawcall 过多,要手动优化。这个是无论任何引擎都会存在的问题。多人协作项目中,场景和 Prefab 的自动更新问题。这个必须团队内部制定严格的规范来规避。Unity2D 的图片特效,有相当一部分性能不佳。一方面是各种插件不靠谱,另一方面是 Unity2D对图片的实时处理性能有待提高。在这里遇到坑,往往需要具备 Shader 的编程功底才能解决。动态更新资源包,这里坑比较大。不过目前市面上已经有成熟的解决方案了,专门的插件也出了不少。渲染方面不强,无论是实时光还是烘焙。跟其他引擎相比,质量或性能都算不上优秀。
发表于 2020-11-27 21:18 | 显示全部楼层
还好,就是没有源代码,遇到坑只能等,自己没办法修复。
发表于 2020-11-27 21:23 | 显示全部楼层
14年年中到15年年中做了第一个Unity项目,两大天坑:1)assetbundle 2)ulua

现在在做第二个项目,等挂了或者成了再来展开这个项目的坑吧
发表于 2020-11-27 21:27 | 显示全部楼层
坑有很多。
但最麻烦的坑是ios的热更新支持。这是个巨坑。
当然,这个坑你完全可以不理,前提是你做的是正常游戏,而不是氪金社交软件
氪金社交软件的性质决定了:
所有不支持热更新的氪金社交软件,最终都会支持热更新或将被要求支持热更新。
此乃氪金社交软件热更新定理。
发表于 2020-11-27 21:28 | 显示全部楼层
别的不说,assetbundle就够坑你一阵子了
发表于 2020-11-27 21:32 | 显示全部楼层
正好借宝地问一句,unity没有源代码,假入你们的游戏遇到坑了,项目又有deadline,怎么办呢?一般会采取什么办法?还是说unity发的新版本很快,可以解决??
发表于 2020-11-27 21:39 | 显示全部楼层
当发现bug是unity导致的,但换哪个版本都不行的时候最坑
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 09:22 , Processed in 0.108097 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表