作品简介

本书以Unity 3D的跨平台基础Mono,以及其游戏脚本语言C#为基础进行讲解。全面系统地剖析了Unity 3D的跨平台原理以及游戏脚本开发的特点。

第1章主要介绍了Unity 3D引擎的历史以及编辑器的基本知识;第2章主要介绍了Mono,以及Unity 3D利用Mono实现跨平台的原理,并且分析了C#语言为什么更适合Unity 3D游戏开发的原因;第3章到第10章主要介绍了Unity 3D游戏脚本语言C#在使用Unity 3D开发过程中的知识点,包括Unity 3D脚本的类型基础、数据结构,在Unity 3D脚本中使用泛型、使用委托和事件打造自己的消息系统、利用定制特性来拓展Unity 3D的编辑器、Unity 3D协程背后的秘密——迭代器,以及可空类型和序列化在Unity 3D中使用的相关知识;第11章到第14章主要介绍了Unity 3D的资源管理,以及优化和编译的内容。

无论是初次接触Unity 3D脚本编程的新人,还是有一定经验的老手,相信都可以借本书来提高自己在Unity 3D方面的水平。

陈嘉栋,毕业于大连海事大学,目前任光宇在线客户端高级开发工程师。博客园推荐博客作者,微软2015年度Visual Studio and Development Technologies有价值专家(Most Valuable Professional)。认为编程首先是爱好,其次才是职业。专注前沿技术,热爱开源。深信代码改变世界。

作品目录

  • 推荐序
  • 前言
  • 第1章 Hello Unity 3D
  • 1.1 Unity 3D游戏引擎进化史
  • 1.2 Unity 3D编辑器初印象
  • 1.3 Unity 3D的组成
  • 1.4 为何需要游戏脚本
  • 1.5 本章总结
  • 第2章 Mono所搭建的脚本核心基础
  • 2.1 Mono是什么
  • 2.2 Mono如何扮演脚本的角色
  • 2.3 Unity 3D为何能跨平台?聊聊CIL
  • 2.4 脚本的选择,C#或JavaScript
  • 2.5 本章总结
  • 第3章 Unity 3D脚本语言的类型系统
  • 3.1 C#的类型系统
  • 3.2 值类型和引用类型
  • 3.3 Unity 3D脚本语言中的引用类型
  • 3.4 Unity 3D游戏脚本中的值类型
  • 3.5 装箱和拆箱
  • 3.6 本章总结
  • 第4章 Unity 3D中常用的数据结构
  • 4.1 Array数组
  • 4.2 ArrayList数组
  • 4.3 List<T>数组
  • 4.4 C#中的链表——LinkedList<T>
  • 4.5 队列(Queue<T>)和栈(Stack<T>)
  • 4.6 Hash Table(哈希表)和Dictionary<K,T>(字典)
  • 4.7 本章总结
  • 第5章 在Unity 3D中使用泛型
  • 5.1 为什么需要泛型机制
  • 5.2 Unity 3D中常见的泛型
  • 5.3 泛型机制的基础
  • 5.4 泛型中的类型约束和类型推断
  • 5.5 本章总结
  • 第6章 在Unity 3D中使用委托
  • 6.1 向Unity 3D中的SendMessage和BroadcastMessage说拜拜
  • 6.2 认识回调函数机制——委托
  • 6.3 委托是如何实现的
  • 6.4 委托是如何调用多个方法的
  • 6.5 用事件(Event)实现消息系统
  • 6.6 事件是如何工作的
  • 6.7 定义事件的观察者,实现观察者模式
  • 6.8 委托的简化语法
  • 6.9 本章总结
  • 第7章 Unity 3D中的定制特性
  • 7.1 初识特性——Attribute
  • 7.2 Unity 3D中提供的常用定制特性
  • 7.3 定义自己的定制特性类
  • 7.4 检测定制特性
  • 7.5 亲手拓展Unity 3D的编辑器
  • 7.6 本章总结
  • 第8章 Unity 3D协程背后的迭代器
  • 8.1 初识Unity 3D中的协程
  • 8.2 使用协程实现延时效果
  • 8.3 Unity 3D协程背后的秘密——迭代器
  • 8.4 WWW和协程
  • 8.5 Unity 3D协程代码实例
  • 8.6 本章总结
  • 第9章 在Unity 3D中使用可空型
  • 9.1 如果没有值
  • 9.2 表示空值的一些方案
  • 9.3 使用可空值类型
  • 9.4 可空值类型的简化语法
  • 9.5 可空值类型的装箱和拆箱
  • 9.6 本章总结
  • 第10章 从序列化和反序列化看Unity 3D的存储机制
  • 10.1 初识序列化和反序列化
  • 10.2 控制类型的序列化和反序列化
  • 10.3 Unity 3D中的序列化和反序列化
  • 10.4 Prefab和实例化之谜——序列化和反序列化的过程
  • 10.5 本章总结
  • 第11章 移动平台动态读取外部文件
  • 11.1 假如我想在编辑器里动态读取文件
  • 11.2 移动平台的资源路径问题
  • 11.3 移动平台读取外部文件的方法
  • 11.4 使用Resources类加载资源
  • 11.5 使用WWW类加载资源
  • 11.6 本章总结
  • 第12章 在Unity 3D中使用AssetBundle
  • 12.1 初识AssetBundle
  • 12.2 使用AssetBundle的工作流程
  • 12.3 如何使用本地磁盘中的AssetBundle文件
  • 12.4 AssetBundle文件的平台兼容性
  • 12.5 AssetBundle如何识别资源
  • 12.6 本章总结
  • 第13章 Unity 3D优化
  • 13.1 看看Unity 3D优化需要从哪里着手
  • 13.2 CPU方面的优化
  • 13.3 对GPU的优化
  • 13.4 内存的优化
  • 13.5 本章总结
  • 第14章 Unity 3D的脚本编译
  • 14.1 Unity 3D脚本编译流程概览
  • 14.2 JIT即时编译
  • 14.3 AOT提前编译
  • 14.4 谁偷了我的热更新?Mono、JIT还是iOS
  • 14.5 Unity 3D项目的编译与发布
  • 14.6 本章总结
展开全部