700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 《Unity3d脚本编程 使用C#语言开发跨平台游戏》读书笔记1

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

时间:2023-12-23 04:16:27

相关推荐

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

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。