Unity3D高级编程:主程手记
上QQ阅读APP看书,第一时间看更新

前言

为什么要写这本书

编写本书的来龙去脉要从很多年前说起。2009年毕业的我自视甚高,错过了很多好的学习机会,待我清醒过来时已经是2011年,周围的人已经走了很远。一天晚上,我幡然醒悟,告诉自己不能再浑浑噩噩下去,我得学些可以傍身的技能。非常幸运的是,我赶上了Unity3D引擎的大潮,它让我有机会入门游戏开发领域,跨过前人需要数年甚至数十年才能跨过的技术难关。那时,Unity3D刚发布2.4版本,我边学理论边实践,从此与其结下了不解之缘。

2013年,我开始担任Unity3D主程一职,虽然现在回头来看,那时的我仍是个“菜鸟”,但当时的我可并不这么认为,我认为自己的技术已经强大到可以驾驭整个客户端,并且能扎实地完成游戏项目从开发到上线的整个过程,年轻人敢闯敢拼的劲头在那时的我的身上体现得淋漓尽致。虽然当时是第一次当主程,却敢承诺老板3个月内开发出对方想要的游戏。事实上,到最后,3个月又3个月,半年之后该游戏才完成开发。

2014年手机游戏开始火遍全球,游戏主程突然成了一个热门职业,我也陆续在各公司里担任主程,曾为日企交接过畅销项目,也为动视暴雪Activision开发过“使命召唤”系列手游,还在历史悠久的盛大游戏里工作了一段时间。就这样跌跌撞撞地,6年过去了,2020年,我到了一家新公司,这里的技术让我大开眼界,也让我对技术有了更高层次的理解,我如饥似渴地学习着,学习的不只是技术,还有生活。

回过头来看,我比较幸运,搭上了Unity3D的便车,搭上了手机游戏的便车,但不可否认的是,我的学习热情与拼命三郎般的努力,是让自己在浪潮中牢牢抓住机会的主因。说到努力,古今中外,不少先贤和前辈都是长期努力拼搏的典范,远如孔孟与管仲、唐太宗与成吉思汗、富兰克林与林肯等,近到游戏业界的UWA张鑫、云风(吴云洋的笔名)、吴军等,他们为自己的事业倾注了大量的心血和汗水。前面的路还很长,我告诉自己要学习他们十年如一日的自律精神,并保持饱满的精力不断前进。

2016年,我有了写一本关于自己是如何理解Unity3D和游戏开发的书的想法,但一直未付诸行动,直到2018年年初才着手写了些草稿。行动是最好的开始,也是自信的良药,我试着把所写的文章发到网上,虽然当时的文字功底不足,文句时有不通,结构也存在不合理的情况,但许多网友看了之后仍给我点赞和鼓励,实在让我感激不尽、感动不已。从此之后,我喜欢上了写作的感觉,一发不可收拾,一篇又一篇,一章又一章。在写作过程中,我发现自己的知识面存在诸多不足,甚至对有些知识点的理解是错误的,于是我拼命查看各类技术书籍和资料,以完善自己的知识体系。

可是,知识的吸收是一个渐进的过程,不可能一下子就融会贯通,虽然短期内我写文章的进步不大,但最大的安慰是,在我的努力下,书有了比较明确的框架,我对技术面的理解也到了一个新的高度。

为了弥补我的短板,在写书期间我除了阅读各类技术书以外,还开始阅读一些人文类的图书,并尝试在博客上写一些故事,训练自己的写作能力。渐渐地,我的博客上有了很多非技术类的文章,我把它们称为我的学习之路,这些文章包括我对人和事的理解、自我反省和一些阅读感想。让我惊喜的是,这些非技术性的内容竟然让我对技术的理解达到了更高的层次,我突然发现生活和工作是可以融合在一起的,这是多么奇妙的一件事!

在努力加强自己的文字功底,完善自己的知识体系的同时,我也在项目中不断地实践所学的知识,日积月累,我的写作素材越来越丰富,最终完成了本书的创作。

在写作过程中,我对本书进行了3次重构,为的就是能更好地表达技术原理,更全面和准确地讲解技术要点。本书包括架构、C#技术知识、数据表与程序、UI、3D模型与动画、网络通信、人工智能、地图与寻路、渲染管线与图形学等,覆盖了Unity3D游戏项目几乎所有的技术要点,确保读者能看到Unity3D游戏项目的技术全貌,进而对各项技术与知识点有更深层次的理解。书中不仅关注了项目中比较大的解决方案,还讲解了具体的技术细节,让读者不仅有更宏观的视野去审视自己的项目,还能在书中找到最接地气的技术细节,从而更深入地理解技术原理。

感谢读者阅读前言,本人在阅览图书时最爱看前言,前言是最能体现作者心境的地方,它可以让你了解创作的起因和过程,以及其间发生的故事和感悟,让你对所读之书有更深的了解。

读者对象

从行业用户角度来看,本书适合以下读者阅读:

·Unity3D程序员和爱好者

·游戏开发者和游戏前端主程

·虚拟现实项目的开发者

·技术美术工程师和爱好者

·致力于图形图像和引擎架构的程序员

·开设相关课程的院校

如何阅读本书

本书共10章,每章都是一个独立的知识领域,读者可以按照章节顺序阅读本书,也可以根据喜好挑选自己感兴趣的章节学习。如果你是一名经验丰富的程序员,能够理解游戏编程的相关基础知识,那么你可以直接阅读你感兴趣的章节。如果你是一名初学者,建议尽量从第1章开始学习。

第1章讲了架构的意义、架构的原理以及如何实现架构。第2章对C#技术的基础知识做了详细的讲解。第3章主要针对客户端中的表格数据、程序的协作与应用进行讲解。第4章介绍的是用户界面(UI)的工作原理与优化手段。第5章针对3D模型的原理、动画的原理以及两者的优化做了详细的讲解。第6章介绍的是网络层的业务与底层原理。第7章针对各种AI类型进行了解析。第8章主要介绍场景构建与优化、地图构建以及寻路算法优化的相关知识。第9章则给出了图形数学、图形学常用算法、渲染管线的相关知识。最后一章(第10章)针对客户端各类渲染技术的渲染原理进行了详细的解析。

勘误和支持

由于笔者的水平有限,写书的时间也很紧张,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。我在Github上开了个仓库做问题集记录:https://github.com/luzexi/Unity3dToBeLeader/issues,如果你发现书中的错误,可以将其发布到这个网页地址的问题列表中,我将会及时反馈。本书内容基于我的个人博客(http://www.luzexi.com)整理而成,此系列后续还会更新,本书涉及的参考资料也会发布到此博客上。如果你有更多的宝贵意见,也欢迎发送邮件至邮箱jesse_luzexi@163.com,很期待听到你们的真挚反馈。

致谢

感谢同事以及网友的支持和点赞,感谢《Unity3D网络游戏实战》的作者罗培羽给予的帮助,感谢机械工业出版社杨绣国老师细致缜密的审阅。特别要感谢我的妻子余胜男,为了支持我安心地写书和工作,她不仅承担了所有家务,辛苦万分,还不忘开导我,当我的心理医生,为我排忧,这本书实在是应该作为礼物献给她。感谢我的两个女儿陆秀恩(Sharon)与陆安妮(Anne),她们是世界上最好的女儿,知道该如何说出自己的诉求,并懂得遵守规则的重要性,时常还能“曲线救国”,她们经常鼓励我“爸爸加油!”,很感激孩子们能和我一起努力,学习的路上又多了两个知己,真开心!

陆泽西

中国,深圳