第1 章 Hello Unity 3D 1

1.1 Unity 3D 游戏引擎进化史 1

1.2 Unity 3D 编辑器初印象 5

1.2.1 Project 视图 5

1.2.2 Inspector 视图 8

1.2.3 Hierarchy 视图 9

1.2.4 Game 视图 10

1.2.5 Scene 视图 12

1.2.6 绘图模式 14

1.2.7 渲染模式 16

1.2.8 场景视图控制 17

1.2.9 Effects 菜单和Gizmos 菜单 18

1.3 Unity 3D 的组成 18

1.4 为何需要游戏脚本 20

1.5 本章小结 21

第2 章 Mono 所搭建的脚本核心基础 22

2.1 Mono 是什么 22

2.1.1 Mono 的组成 22

2.1.2 Mono 运行时 23

2.2 Mono 如何扮演脚本的角色 24

2.2.1 Mono 和脚本 24

2.2.2 Mono 运行时的嵌入 26

2.3 Unity 3D 为何能跨平台?聊聊CIL 38

2.3.1 Unity 3D 为何能跨平台 38

2.3.2 CIL 是什么 40

2.3.3 Unity 3D 如何使用CIL 跨平台 44

2.4 脚本的选择,C# 或 JavaScript 48

2.4.1 最熟悉的陌生人--UnityScript 48

2.4.2 UnityScript 与 JavaScript 51

2.4.3 C#与UnityScript 55

2.5 本章总结 57

第3 章 Unity 3D 脚本语言的类型系统 58

3.1 C#的类型系统 58

3.2 值类型和引用类型 65

3.3 Unity 3D 脚本语言中的引用类型 73

3.4 Unity 3D 游戏脚本中的值类型 90

3.4.1 Vector2、Vector3 以及Vector4 90

3.4.2 其他常见的值类型 94

3.5 装箱和拆箱 95

3.6 本章总结 98

第4 章 Unity 3D 中常用的数据结构 99

4.1 Array 数组 100

4.2 ArrayList 数组 101

4.3 List数组 102

4.4 C#中的链表--LinkedList 103

4.5 队列(Queue)和栈(Stack) 107

4.6 Hash Table(哈希表)和Dictionary(字典) 112

4.7 本章总结 120

第5 章 在Unity 3D 中使用泛型 121

5.1 为什么需要泛型机制 121

5.2 Unity 3D 中常见的泛型 124

5.3 泛型机制的基础 127

5.3.1 泛型类型和类型参数 128

5.3.2 泛型类型和继承 131

5.3.3 泛型接口和泛型委托 131

5.3.4 泛型方法 136

5.4 泛型中的类型约束和类型推断 139

5.4.1 泛型中的类型约束 139

5.4.2 类型推断 144

5.5 本章总结 146

第6 章 在Unity 3D 中使用委托 149

6.1 向Unity 3D 中的SendMessage 和BroadcastMessage 说拜拜 150

6.2 认识回调函数机制--委托 151

6.3 委托是如何实现的 154

6.4 委托是如何调用多个方法的 160

6.5 用事件(Event)实现消息系统 164

6.6 事件是如何工作的 169

6.7 定义事件的观察者,实现观察者模式 172

6.8 委托的简化语法 177

6.8.1 不必构造委托对象 177

6.8.2 匿名方法 178

6.8.3 Lambda 表达式 196

6.9 本章总结 201

第7 章 Unity 3D 中的定制特性 202

7.1 初识特性--Attribute 202

7.1.1 DllImport 特性 203

7.1.2 Serializable 特性 205

7.1.3 定制特性到底是谁 207

7.2 Unity 3D 中提供的常用定制特性 208

7.3 定义自己的定制特性类 213

7.4 检测定制特性 216

7.5 亲手拓展Unity 3D 的编辑器 217

7.6 本章总结 227

第8 章 Unity 3D 协程背后的迭代器 228

8.1 初识Unity 3D 中的协程 228

8.1.1 使用StartCoroutine 方法开启协程 229

8.1.2 使用StopCoroutine 方法停止一个协程 233

8.2 使用协程实现延时效果 234

8.3 Unity 3D 协程背后的秘密--迭代器 238

8.3.1 你好,迭代器 238

8.3.2 原来是状态机 242

8.3.3. 状态管理 248

8.4 WWW和协程 253

8.5 Unity 3D 协程代码实例 257

8.6 本章总结 259

第9 章 在Unity 3D 中使用可空型 260

9.1 如果没有值 260

9.2 表示空值的一些方案 261

9.2.1 使用魔值 261

9.2.2 使用标志位 261

9.2.3 借助引用类型来表示值类型的空值 265

9.3 使用可空值类型 267

9.4 可空值类型的简化语法 272

9.5 可空值类型的装箱和拆箱 278

9.6 本章总结 280

第10 章 从序列化和反序列化看Unity 3D 的存储机制 281

10.1 初识序列化和反序列化 281

10.2 控制类型的序列化和反序列化 290

10.2.1 如何使类型可以序列化 290

10.2.2 如何选择序列化的字段和控制反序列化的流程 292

10.2.3 序列化、反序列化中流的上下文介绍及应用 296

10.3 Unity 3D 中的序列化和反序列化 299

10.3.1 Unity 3D 的序列化概览 299

10.3.2 对Unity 3D 游戏脚本进行序列化的注意事项 302

10.3.3 如何利用Unity 3D 提供的序列化器对自定义类型进行序列化 305

10.4 Prefab 和实例化之谜--序列化和反序列化的过程 309

10.4.1 认识预制体Prefab 309

10.4.2 实例化一个游戏对象 311

10.4.3 序列化和反序列化之谜 314

10.5 本章总结 317

第11 章 移动平台动态读取外部文件 318

11.1 假如我想在编辑器里动态读取文件 318

11.2 移动平台的资源路径问题 320

11.3 移动平台读取外部文件的方法 323

11.4 使用Resources 类加载资源 330

11.5 使用WWW类加载资源 332

11.5.1 利用WWW类的构造函数实现资源下载 332

11.5.2 利用 WWW.LoadFromCacheOrDownload 方法实现资源下载 333

11.5.3 利用WWWForm 类实现POST 请求 335

11.6 本章总结 335

第12 章 在Unity 3D 中使用AssetBundle 336

12.1 初识AssetBundle 336

12.2 使用AssetBundle 的工作流程 337

12.2.1 开发阶段 337

12.2.2 运行阶段 340

12.3 如何使用本地磁盘中的AssetBundle 文件 344

12.4 AssetBundle 文件的平台兼容性 345

12.5 AssetBundle 如何识别资源 345

12.6 本章总结 346

第13 章 Unity 3D 优化 347

13.1 看看Unity 3D 优化需要从哪里着手 347

13.2 CPU 方面的优化 348

13.2.1 对DrawCall 的优化 348

13.2.2 对物理组件的优化 354

13.2.3 处理内存,却让CPU 受伤的GC 355

13.2.4 对代码质量的优化 356

13.3 对GPU 的优化 357

13.3.1 减少绘制的数目 358

13.3.2 优化显存带宽 358

13.4 内存的优化 359

13.4.1 Unity 3D 的内部内存 359

13.4.2 Mono 的托管内存 360

13.5 本章总结 363

第14 章 Unity 3D 的脚本编译 365

14.1 Unity 3D 脚本编译流程概览 365

14.2 JIT 即时编译 368

14.2.1 使用编译器将游戏脚本编译为托管模块 368

14.2.2 托管模块和程序集 369

14.2.3 使用JIT 编译执行程序集的代码 370

14.2.4 使用JIT 即时编译的优势 371

14.3 AOT 提前编译 372

14.3.1 在Unity 3D 中使用AOT 编译 372

14.3.2 iOS 平台和Full-AOT 编译 373

14.3.3 AOT 编译的优势 374

14.4 谁偷了我的热更新?Mono、JIT 还是iOS 374

14.4.1 从一个常见的报错说起 375

14.4.2 美丽的JIT 377

14.4.3 模拟JIT 的过程 378

14.4.4 iOS 平台的自我保护 381

14.5 Unity 3D 项目的编译与发布 382

14.5.1 选择游戏场景和目标平台 382

14.5.2 Unity 3D 发布项目的内部过程 384

14.5.3 Unity 3D 部署到Android 平台 384

14.5.4 Unity 3D 部署到iOS 平台 386

14.6 本章总结 389

使用c#语言进行游戏开发,Unity 3D脚本编程——使用C#语言开发跨平台游戏相关推荐

  1. 聊聊在博客园写博客的这两年《Unity 3D脚本编程:使用C#语言开发跨平台游戏》正式出版...

    版本状态: 2016.9 第一次印刷 (2016.11 输出到台湾) 2017.1 第二次印刷 2017.5 第三次印刷 2017.5 电子书上线:Unity 3D脚本编程--使用C#语言开发跨平台游 ...

  2. 《Unity 3D脚本编程:使用C#语言开发跨平台游戏》序言

    本文是7月受陈嘉栋的委托为他的新书<Unity 3D脚本编程:使用C#语言开发跨平台游戏>所写的序言,借助序言告诉大家.NET平台有着一个广阔的使用场景. 序言 Unity3D 是由两个具 ...

  3. 【读书笔记】Unity 3D脚本编程--使用c#语言开发跨平台游戏(韦佳栋)

    第一章:Hello Unity3D 1.Shader即着色器,是一个能够针对3D对象进行操作,并被GPU所执行的程序.通过这些程序,程序员就能获得绝大部分想要的3D图形效果. 2.子对象将继承父对象的 ...

  4. 【2G模组Air202开发】Lua脚本编程实现MQTT协议连接Tlink平台(三)

    [2G模组Air202开发]Lua脚本编程实现MQTT协议连接Tlink平台(三) 整体思路: 在TLINK平台上创建一个MQTT协议的设备 对Air202模组进行lua编程并烧录 使用串口向Air2 ...

  5. 【2G模组Air202开发】Lua脚本编程实现MQTT协议连接Tlink平台(五)

    [2G模组Air202开发]Lua脚本编程实现MQTT协议连接Tlink平台(五) 整体思路: 在TLINK平台上创建一个MQTT协议的设备 对Air202模组进行lua编程并烧录 使用串口向Air2 ...

  6. 跨平台次世代游戏引擎Unity 3D

    1.Unity简介 Unity是一款标准的商业游戏引擎,而商业引擎的主要特点有收费.封闭源码和功能强大. 关于收费情况,Unity的使用费用非常昂贵,最便宜的普通版许可证也需要400美元,加强版本为1 ...

  7. 《Unity3d脚本编程 使用C#语言开发跨平台游戏》读书笔记1

    1.4脚本编程的优势 ·易于学习,代码维护方便,适合快速开发 ·开发成本低(因易于学习,所以可以启用新人,同时开发速度快,这些都是降低成本的方法) 2.2.1以速度作为衡量语言级别的标准,那么语言从低 ...

  8. Unity 3D 脚本参考

    第一章  概述  Unity中的脚本(Script)由附加到游戏对象(GameObject)的自定义脚本对象(Custom  Script  Object)组成,它们又被称为行为.脚本对象中各种函数被 ...

  9. Unity 3d脚本加密方案

    原文:http://www.cppcourse.com/u3d-encryption.html 1.1   加密方案 Unity 3D项目游戏逻辑采用C#脚本,我们知道C#编译生成的DLL或EXE是I ...

  10. Unity 3D脚本

    一. 1.1 脚本:script ,用于驱动游戏逻辑. 添加脚本方法: 在assert 里面创建script脚本文件,编写脚本,将脚本拖到(挂载)物体中. viod Start(){Debug.Log ...

最新文章

  1. html点击播放生日快乐歌曲大全,播放生日快乐歌曲.doc
  2. python django报错 no such column:
  3. How to add and configure jetty server in maven pom.xml
  4. 生成树的计数 Matrix-Tree(矩阵树)定理
  5. php显示动态通告信息方式,Joomla PHP通知,警告和错误指南
  6. oracle em配置报错,oracle em 启动报错OC4J Configuration issue
  7. PHP百度收录量查询接口源码,PHP百度收录量查询接口源码
  8. C++中使用模板,new创建2维动态数组
  9. 初踩阿里云效代码管理
  10. 数字电视机顶盒ATSC制式详细介绍
  11. 58赶集基于 Docker 的自动化部署实践
  12. 第十一届“蓝狐网络杯”湖南省大学生计算机程序设计竞赛
  13. 携程帐号变更函(对私)
  14. DWC的1000M的MAC自环和PHY自环测试寄存器修改方式
  15. HTTP Status code(状态码)和 Status text(状态文本)
  16. 编程江湖,门派众多,谁才是巅峰?
  17. Linux更改root用户名以提高安全性
  18. html css语义化
  19. 衡量两个向量相似度的方法:余弦相似度
  20. Nutch学习——读源码 Crawl.java

热门文章

  1. 国税计算机基础知识,国税系统计算机基础知识培训课件精要.ppt
  2. 最新Latex安装详细教程
  3. 搬运视频抖音封号md5视频修改工具
  4. VB2010的串口能正常接收数据,但无法发送数值大于127的数据
  5. OneNote 使用汇总
  6. 系统蓝屏日志DMP文件分析工具WinDbg及教程
  7. 可曾听闻【大话】二字
  8. opencv3 与opencv2不同之处
  9. JVM之类的加载与类加载器
  10. RK3288关于LVDS信号配置和1080p视频信号的详解