《Unity3d脚本编程 使用C#语言开发跨平台游戏》读书笔记1
来源:互联网 发布:仿生 知乎 编辑:程序博客网 时间:2024/06/03 11:03
1.4脚本编程的优势
·易于学习,代码维护方便,适合快速开发
·开发成本低(因易于学习,所以可以启用新人,同时开发速度快,这些都是降低成本的方法)
2.2.1以速度作为衡量语言级别的标准,那么语言从低级到高级的大概排名如下
·汇编语言
·C/C++,编译型静态不安全语言
·C#/JAVA,编译型静态安全语言
·Python、Perl、JavaScript,解释型动态安全语言
2.2.2将Mono运行时嵌入应用,可以分为3个步骤
·编译C++程序和链接Mono运行时
·初始化Mono运行时
·C/C++和C#/CIL的交互
2.3
·CIL(Common Intermediate Language,通用中间语言)是CLI(Common Language Infrastructure,通用语言基础架构)标准定义的
一种可读性较低的语言。
·以.net或Mono等实现CLI标准的运行环境为目标的语言要先编译成CIL,然后CIL会被编译,并且以位元码的形式存在(源代码到中间
语言的过程)
·这种位元码运行在虚拟机中(.net Mono的运行时)
·这种位元码可以被进一步编译成不同平台的原生代码(中间语言到原生代码的过程)
·JIT编译,Mono会有一部分代码通过AOT静态编译,以解决在程序运行时JIT动态编译在效率上的问题
·AOT编译,同样使用了JIT编译器在运行前编译
过程:
收集要被编译的方法
使用JIT编译器进行编译
发射(Emitting)经JIT编译过的代码和其它信息
直接生成文件,或者调用本地汇编器或连接器进行处理后生成文件
Android使用JIT,iOS使用全AOT
·面向对象
·基于堆栈
2.4Unity Script
·静态语言且需要编译
·基于Boo语言
·和JavaScript除了名字以外没有关系
2.4.2Unityscript和JS的区别
3.1C#的类型系统
·静态类型(C#4中引入了动态类型,不影响Unity)
·大多数时候是显式类型的
由于动态类型并不限制变量使用特定的类型,因而区分显式/隐式类型的不同,仅仅对使用静态类型系统的语言有意义
var关键字表示编译器在编译时需要对该变量进行类型推断,并不是动态语言的标志
·类型安全
C#允许将对象转换为它的实际类型或它的任何基类
不允许的类型转换会触发编译错误,Mono运行时会在程序运行的时候检查类型转换的操作,会抛出异常
3.2值类型和引用类型
·存储引用类型对象的内存空间要从托管堆上分配
·每一个对象都有一些额外的成员为Mono运行时提供操作该对象的信息,因而堆上分配空间时也要考虑到这些成员的空间,同时这些成
员必须被初始化
·对象中的其他字段的字节总是0
·为新对象分配空间时可能会触发GC
·引用类型包括类,接口,委托,Dynamic(U3D中没有),Object,string
·引用类型的实际值只有一个实例,修改后会影响所有引用它的变量
·值类型实例一般分配在线程栈,并且不受GC影响
·值类型的优势在于提升简单类型的性能,缓解托管堆的压力,减少GC次数
·值类型包括简单结构,结构体,枚举
·对结构体使用new并不意味着要从堆上分配内存P71
·总结P72
·内存空间分配位置P67
·易于学习,代码维护方便,适合快速开发
·开发成本低(因易于学习,所以可以启用新人,同时开发速度快,这些都是降低成本的方法)
2.2.1以速度作为衡量语言级别的标准,那么语言从低级到高级的大概排名如下
·汇编语言
·C/C++,编译型静态不安全语言
·C#/JAVA,编译型静态安全语言
·Python、Perl、JavaScript,解释型动态安全语言
2.2.2将Mono运行时嵌入应用,可以分为3个步骤
·编译C++程序和链接Mono运行时
·初始化Mono运行时
·C/C++和C#/CIL的交互
2.3
·CIL(Common Intermediate Language,通用中间语言)是CLI(Common Language Infrastructure,通用语言基础架构)标准定义的
一种可读性较低的语言。
·以.net或Mono等实现CLI标准的运行环境为目标的语言要先编译成CIL,然后CIL会被编译,并且以位元码的形式存在(源代码到中间
语言的过程)
·这种位元码运行在虚拟机中(.net Mono的运行时)
·这种位元码可以被进一步编译成不同平台的原生代码(中间语言到原生代码的过程)
·JIT编译,Mono会有一部分代码通过AOT静态编译,以解决在程序运行时JIT动态编译在效率上的问题
·AOT编译,同样使用了JIT编译器在运行前编译
过程:
收集要被编译的方法
使用JIT编译器进行编译
发射(Emitting)经JIT编译过的代码和其它信息
直接生成文件,或者调用本地汇编器或连接器进行处理后生成文件
Android使用JIT,iOS使用全AOT
·面向对象
·基于堆栈
2.4Unity Script
·静态语言且需要编译
·基于Boo语言
·和JavaScript除了名字以外没有关系
2.4.2Unityscript和JS的区别
3.1C#的类型系统
·静态类型(C#4中引入了动态类型,不影响Unity)
·大多数时候是显式类型的
由于动态类型并不限制变量使用特定的类型,因而区分显式/隐式类型的不同,仅仅对使用静态类型系统的语言有意义
var关键字表示编译器在编译时需要对该变量进行类型推断,并不是动态语言的标志
·类型安全
C#允许将对象转换为它的实际类型或它的任何基类
不允许的类型转换会触发编译错误,Mono运行时会在程序运行的时候检查类型转换的操作,会抛出异常
3.2值类型和引用类型
·存储引用类型对象的内存空间要从托管堆上分配
·每一个对象都有一些额外的成员为Mono运行时提供操作该对象的信息,因而堆上分配空间时也要考虑到这些成员的空间,同时这些成
员必须被初始化
·对象中的其他字段的字节总是0
·为新对象分配空间时可能会触发GC
·引用类型包括类,接口,委托,Dynamic(U3D中没有),Object,string
·引用类型的实际值只有一个实例,修改后会影响所有引用它的变量
·值类型实例一般分配在线程栈,并且不受GC影响
·值类型的优势在于提升简单类型的性能,缓解托管堆的压力,减少GC次数
·值类型包括简单结构,结构体,枚举
·对结构体使用new并不意味着要从堆上分配内存P71
·总结P72
·内存空间分配位置P67
5 0
- 《Unity3d脚本编程 使用C#语言开发跨平台游戏》读书笔记1
- 《Unity3d脚本编程 使用C#语言开发跨平台游戏》读书笔记2
- 看书笔记——《Unity3d脚本编程使用C#语言开发跨平台游戏》——U3d游戏脚本中的值类型
- 看书笔记——《Unity3d脚本编程使用C#语言开发跨平台游戏》——值类型和引用类型
- 《Unity 3D脚本编程:使用C#语言开发跨平台游戏》序言
- 【Unity3D入门教程】使用C#脚本控制游戏对象
- Unity3D游戏开发 脚本入门
- 使用C#语言跨平台开发iOS 应用程序
- [unity3d]通过C#脚本操作游戏对象
- Unity3D游戏开发(1)
- 零基础Unity3D游戏开发系列 第三章:Unity脚本编程(十八)代码执行顺序
- C#开发Unity游戏教程之使用脚本变量
- Unity3D研究院之使用初始化游戏脚本
- DevExtreme 移动跨平台开发 C#语言
- Unity3D游戏开发与c#基础
- Unity3D游戏开发中的C#事件
- 3D游戏精灵-兔子脚本 (lua语言开发,xfun平台)
- 3D游戏精灵-蝴蝶脚本 (lua语言开发,xfun平台)
- Spring boot 多表关联查询
- RecyclerView 超简单item点击实现
- 京东一面
- 高效程序员的七个习惯
- Shell工具之sed
- 《Unity3d脚本编程 使用C#语言开发跨平台游戏》读书笔记1
- 记一次synchronized锁字符串引发的坑兼再谈Java字符串
- Android系统开发调整单个菜单按钮字体大小
- swift 有类似 Go Playground 的在线编译执行的网站么
- curator实现zookeeper的分布式锁
- idea部署tomcat启动成功后访问提示404
- 在webstorm中配置sass环境
- c语言实现扫雷
- curl get and post sample(转)