大量信息渠道和快速提高的途径 - 快速驾驭Unity
本文面向Unity初学者以及参加过相关培训的朋友,旨在帮助大家深入理解并熟练运用Unity,做到知其然且知其所以然。
文章标题选用“驾驭”而非“精通”“熟练”,意在传达一种掌控感,即面对任何问题都能迅速判断状况,实现功能时能立刻想到典型的实现方式,让Unity成为您得心应手的工具。
本文遵循“授人以鱼不如授人以渔”的原则,几乎不涉及具体技术点,而是着重介绍大量信息渠道和快速提升的途径。
学习资料篇
除了像《Unity ShaderLab入门到精通》这类专项书籍,在有需要时可以购买阅读,其他书籍对于学习Unity并非必要,尤其是对于有多年编码经验的人来说,不太推荐阅读。如今,人们更多地使用手机、Pad,捧着一本厚重的书阅读容易让人感到疲惫。
市面上非Unity专项类的书籍,大多是对Unity手册的翻译,并附带一两个示例讲解。然而,Unity版本迭代迅速,书中内容很快就会过时。尽管中文书籍查找方便,但远不如使用键盘配合Google搜索高效。
若Google被墙,可尝试使用如www.gugesou.com这类反代理网站,此类网站众多,通过搜索即可找到。使用Google查询Unity相关问题非常专业,搜索结果通常前几项为官方手册,接着是Unity Wiki、Communication、Answers等专业信息,说不定在解决问题的过程中还能有意外收获(可参考文章《你与大牛之间只差Google》)。
Unity自带手册
Unity最好的学习资料是其自带的三本手册:用户手册、脚本手册、参考手册。
- 用户手册:全面介绍了Unity的所有功能,深入浅出地讲解了一些功能需求和来源,并附带了许多使用注意事项和调试优化建议。建议将用户手册通读两遍,以便在需要使用各种功能时能快速找到查询位置。由于中文版并非最新内容,推荐阅读英文版。若英文阅读有困难,可借助词典逐句研读,久而久之会发现前端编程常用词汇就那些,不仅能熟悉Unity,还能提升学习其他知识的效率。若没有掌握计算机英语的决心,后续内容可能就不太适合阅读了。
- 参考手册:在老版本中,参考手册是逐个说明Unity组件的手册,目前已并入用户手册。
- 脚本手册:这是Unity脚本的索引文档,详细介绍了各种类和枚举,包括类的成员变量和函数,并附有具体代码示例。
官网学习板块
Unity官网的Learn板块,Tutorials中的视频区有大量快速熟悉Unity的内容,非常实用。这些视频不仅演示了各种功能的使用,还从编码设计角度指导大家如何编码。相比三年前,现在的学习资料更加全面和实用。官网链接:http://unity3d.com/learn
Google搜索
Google是Unity最好的资料库索引。作为全球数百万开发者使用的工具,Unity几乎任何问题都能通过Google搜索到。您遇到的问题,其他人也可能遇到过,通过Google搜索能获得准确的参考信息。
学习参考篇
有了直接且最新的参考资料,学习基础知识和快速查询信息已足够。但如何专业快速地实现各种功能呢?若仅依靠手册上的基础知识自行思考和尝试,效率会很低。
Unity内容体系具有统一性,全球开发者使用统一的工具和类,因此有许多优秀的实现可供参考。当您想编码实现某个功能时,可先寻找相同或类似的实现。在Unity环境下进行模块开发时,可能辛苦开发几天的内容,却发现已有成熟且功能强大的模块可供直接使用或扩展。
Asset Store
Unity拥有所有引擎中最为繁荣的Asset Store,形成了独特的社区生态圈。学习完Unity基础知识后,可借助Asset Store快速成长为专业开发者。Asset Store包含全球开发者开发的各种工具和完整Demo,学习其中的内容能加速对Unity应用的了解。对于开发者来说,每天查看Asset Store就像看“每日早报”,了解有哪些新插件上架及其功能和原理。
规范Demo
Asset Store上虽有大量“完整专案”,但大部分实现不规范,难以应用于商业项目。官方的Angry Bots、Boost Camp等实现和组织也较为混乱。
而一些规范的完整Demo则非常适合用于熟悉Unity和项目组织,例如TDTK(塔防工具包)。它是一个持续更新多年的完整塔防游戏包,从中可以学到以下内容:
- 多管理器项目结构:这种结构实用,尤其适用于团队开发项目,便于成员理解和使用,许多知名大作也采用了该结构。
- 资源组织和放置:TDTK中资源命名规范,放置整齐,各类prefab位置合理,便于整体调整。
- 典型功能实现:涉及走动、动画、路径、地形等功能,均采用通用且优雅的实现方式,有助于团队成员在实现功能时保持统一。
- 优化方式:应用了如敌人和子弹缓存等优化处理,避免卡顿。
- 工具编写和应用:所有配置均通过工具完成,如路径配置、炮塔、敌人等,无需修改代码和配置文件,易于学习。
- 预设使用:TDTK中部分将prefab作为配置文件使用,但不推荐这种做法,Unity有多种形式的配置文件可供选择。
- UI使用:提供了NGUI和UGUI两种UI实现,可快速学习和熟悉。
- 自动化处理:配置塔防游戏时无需编写代码,通过菜单和工具即可完成,利用UnityEditor脚本实现自动化过程,节省开发时间。
深入学习TDTK相当于获得了一款塔防单机游戏的实际项目经验,类似优秀的完整实现还有UFPS、Dungeon Breaker Starter Kit等,学习这些内容能增加单机游戏开发经验,部分代码模块还可直接应用到自己的项目中。利用Asset Store编写Unity工具也能事半功倍。
编码工具篇
编码工具的选择对编码效率影响巨大,进而影响编码思维。
普通开发者工具:MonoDevelop
MonoDevelop具备日常编码所需的基本功能,如自动补全、代码高亮、代码块注释、工程内搜索、查找变量引用等。
高效开发者工具:UnityVS + Resharper
- UnityVS:已被微软收购,可免费下载使用,支持VS2010 - 2013等版本。使用VS作为Unity的编码工具,可支持所有VS功能,包括断点调试Unity。
- Resharper:一款著名的VS.NET开发环境插件,多次获得微软.NET各类奖项,功能比C++程序的VA更强大。它在编码方面支持的功能全面,包括快速跳转、工程内搜索、快速打开文件、变量重命名、代码块重构、查找基类和父类、代码Review、可配置编码规范、自动提示代码风险等。详细功能可查看Resharper教程。
使用Resharper能显著提升编码效率,若还在使用MonoDevelop或单纯的UnityVS,建议学习并熟练掌握Resharper。虽然记忆Resharper的功能和快捷键没有捷径,但可通过连续2 - 3天,每天查看手册并记忆快捷键的方式逐渐掌握。
代码规范篇
拥有强大的编码工具后,还需注意代码规范。编写规范的代码,尤其是关注一些编码细节,能体现出开发者的专业素养。
利用Resharper规范代码
在大家都使用Resharper后,可将代码规范配置到Resharper中,不符合规范的地方会自动提示,让团队成员都能遵循规范。
影响性能的规范
- 避免使用foreach,因为它会申请内存产生迭代器,过多使用会导致GC卡顿。
- 避免使用Linq和Lambda,原因与foreach相同。
- 避免在运行时使用GetComponent,应在初始化时将Component获取并缓存,因为该方法效率低且会申请内存,导致卡顿。
- 避免直接使用MonoBehaviour的组件成员变量,如transform、animation等,直接使用相当于调用GetComponent,需先缓存再使用。
这些影响性能的编码规范需特别注意,优化后能节省大量精力。更多编码规范可通过Google查询。
结语
Unity是一套性价比高的引擎套件,也是一种开发文化和技术社区。学习Unity性价比同样很高,它成就了全球众多开发者和公司,如国内的蓝港在线,因选择Unity而成为一线开发厂商。
在Unity开发中,应充分利用现有资源,站在巨人的肩膀上,避免重复造轮子。我们的目标是开发游戏和产品,而非科研,应在达到效果的前提下,发挥Unity的快速开发优势。
祝愿大家早日成为Unity开发高手,实现自己的梦想,改善生活。