前言
2005年6月6日,在WWDC大会上,Unity 3D的第一个版本正式推出。当时的Unity 3D还只能在Mac OS X平台上运行,经过10年的发展,到如今Unity 3D已经迎来了5.0的时代。Unity 3D在这十年间继承并发扬了其一贯的优势,即拥有强大的编辑器,以及便利的跨平台能力和适合移动平台的3D开发能力。正是基于这些优势,Unity 3D无疑为开发者节省了大量的时间和精力,使得整个开发流程变得更加高效而且便捷。而它本身也早已成为了全功能游戏引擎市场不可忽视的一股力量。
正如Unity Technologies的CEO——David Helgason先生所说:“Unity是一个用来构建游戏的工具箱,它整合了图像、音频、物理引擎、人机交互以及网络等技术。”的确如此,Unity 3D因为它的快速开发以及跨平台能力而为人所知。
其中Unity 3D编辑器的构建和拓展,以及引擎本身强大的跨平台能力,都多多少少借助了Mono以及C#语言来实现,而C#语言更是Unity 3D引擎最主要的游戏脚本语言,而采用脚本语言开发游戏逻辑无疑大大提高了使用Unity 3D进行开发的效率。
但目前国内并没有太多涉及Unity 3D跨平台原理分析、Unity 3D和Mono的结合,以及在游戏脚本编程中使用C#语言的资料。作者身边的很多朋友和网上认识的很多同行,由于没有一份系统剖析Unity 3D脚本编程的资料,而对这部分的内容没有形成一个全面的了解。
因此,本书的目标便是将Unity 3D和Mono的关系,以及使用C#语言开发Unity 3D的游戏脚本的内容进行系统化地整理分析,本书不仅会分析C#语言在Unity 3D脚本编程中的知识点(例如使用定制特性来拓展Unity 3D编辑器、使用委托事件机制打造自己的消息系统,以及Unity 3D中协程的实现细节等),还会带领各位读者走进更加底层的CIL代码层,了解Unity 3D借助Mono跨平台的原理,最后还会关注Unity 3D引擎本身的资源管理、项目优化以及编译的内容。通过介绍最有代表性的两大移动平台——Android平台和iOS平台,通过介绍两个平台上的项目编译进而使广大读者了解JIT编译方式以及AOT编译方式。希望能通过这些内容使国内的广大Unity 3D从业人员对Unity 3D了解得更全面深刻,对C#语言在开发游戏脚本过程中的知识点掌握得更牢固,写出更高效的代码。
本书的作者长期关注Unity 3D、Mono以及C#语言,并且在博客园、游戏蛮牛以及InfoQ网站以“慕容小匹夫”的笔名发表过多篇博客和文章,更是在2015年获得了微软最有价值专家(MVP)的称号。我在博客园写博客的期间,很荣幸地获得了电子工业出版社计算机分社付睿编辑的认可,联系之后确定了本书的选题以及主要的内容框架。在本书的写作过程中,我也得到了很多朋友的帮助和支持,在此一并感谢。
最后,还要感谢所有在我的博客浏览、评论、支持、批评、指正的朋友们,仅以本书献给所有读者,并衷心地希望和各位读者共同进步。