|
之前见过类似的问题,请题主参考:
那些事情是用Unity开发项目应该一开始规划好的?如何避免后期酿成巨坑?我再次整理回答一下:
1. 资源管理和打包
这部分请参考链接,回答比较多集中在资源管理这块。
大部分技术开发者对资源管理不太熟悉,需要和美术交流、通过实践磨练,没有捷径。所以很多大厂会聘请专业的TA(技术美术岗位)来兼顾这方面的工作。
2. 编辑器的设计
在做一些小项目时这些可视化操作可能还蛮方便的。比如脚本中暴露字段在Inspector面板上,拖拽一下就能方便的指定引用,但是大型项目中这就是无底深坑。
如果一个项目比较复杂,一个界面上有几十个需要拖拽的字段,一不小心鼠标滑了那就悲剧了,慢慢找吧。
Unity中没办法看到这些拖拽的操作的记录,最好的办法还是在C#代码中来指定这些引用。
同理获取物体组件时也不能依赖物体本身的父子关系,万一有人动了节点顺序那又是一个灾难。
3. 脚本的初始化顺序
如果多个系统都把初始化写在Awake和Start里,你是不知道这些脚本启动的先后顺序的。这个时候如果脚本之间有依赖关系就会出问题。虽然Unity提供了Script Execution Order来解决:
但有时候并不确定初始化函数的运行时间,仍然要用异步或其他方式来处理。
知友Xylt对这个问题的描述比较好:
awake做不依赖其他组件的初始化,start做依赖其他部件的初始化,如果这之间还有初始化顺序要求,应该用中心控制器决定下属部件的初始化和调用时机。
看了下其他答主的回答问题大多集中在资源管理上,在大型项目上这的确是一个难以规避的深坑。特别是在Unity对相关API的技术细节隐藏较深的情况下。
至于其他一些做小型项目会遇到的坑,大部分都能想一些别出心裁的方式绕过去,比如无法自定义物体的轴心(Pivot),套上一个父节点调整之类的。
Unity近两年一直保持一个较高的更新频率,不断有新功能或是组件加入到新版本中。在使用过程中肯定会出现其他各种各样的细节问题,因此若是开发大型项目时还是使用一个相对稳定的版本比较靠谱,比如现在这个时间点可以考虑使用Unity 2017 LTS版本。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|