值类型 --- 在栈区中开辟内存空间并直接存储在栈区中,引用类型 --- 在栈区中开辟内存空间存引用,在堆区中开辟内存空间存数据(有可能堆区中还要开辟引用),然后将堆区中存储数据的内存空间的地址传给引用接收
什么是脚本?
写一个脚本(编程文本文件),挂载到对象上,游戏运行的时候会自动读取对象上挂载的代码并将其运行,使得对象能够根据代码做出对应的反应。
1.为什么要引入其它的命名空间?
当我们想要使用其它命名空间中的东西的时候,我们就需要引入这个命名空间
(using 命名空间名)
(不引入命名空间也可以,此时使用其它命名空间中的东西就不像引入了命名空间后直接用那么简单了,此时使用前我们需要通过命名空间名 + 点操作符来访问我们需要想使用的对象)
2.命名空间的作用
它最大的一个作用就是避免类重名导致的错误 --- 不同命名空间中的类可以重名,同一命名空间中的类不可以重名
1.Unity开发时,很多的类都需要继承MonoBehaviour类,但并不是所有的类都需要继承它。只有要挂载到游戏物体上的脚本中的类需要继承,如果不需要挂载到游戏物体上的话可以不继承这个类
2.只要需要用到Unity提供的功能,需要挂载到游戏物体上,就需要继承MonoBehaviour类,反之则不需要继承
3.写好的脚本必须挂载到游戏物体上才会被执行
1.当我们创建了脚本文件后,编译器就会自动为我们在脚本文件中生成一些基本代码(其中就包括类名),其中需要注意的是编译器自动生成的类的类名和脚本文件名相同,并且最重要的是如果我们在创建完脚本文件后又更改文件的文件名的话,文件中的类名是不会跟着更改的,它依然和最开始的文件名相同(此时如果要改的话需要我们手动去修改)
2.脚本的本质就是一个类,当我们把一个脚本挂载到游戏物体上的时候,实际发生的过程是通过脚本中的类实例化了一个对象挂载到游戏物体上,然后我们就是通过这个对象调用方法来控制游戏物体的
3.其实每一个挂载到游戏物体上的组件都是一个通过对应类实例化的对象,通过这些对象调用方法来控制游戏物体
1.创建一个游戏物体的本质其实就是实例化一个对象,这个游戏对象对应的类是GameObject类
在这个对象中有一个引用数组
2.每当我们给游戏物体挂载一个组件(对象) / 脚本的时候,实际上发生的是一个组件 / 脚本对象通过对应的类实例化出来,然后一个引用被创建并指向组件对象,接着在游戏物体数组中存储这个引用
编译器自动生成的代码中有一些细节部分需要进行修改:
1.每一个方法前面都加上对应的访问级别(默认是private) --- 补充:在C#中,类中的成员方法可以没有访问级别,此时编译器会默认这个方法的访问级别是private(不推荐使用这个功能,因为代码可读性较差)
2.在脚本中,如果这两个自动生成的方法不会被使用的话,一定要将其删除
之所以要删除是为了优化程序的执行速度,例如Update方法就是一个循环调用的方法,每一帧(0.02s)就会调用一次,如果不用这个方法的最好删除它,提高程序的执行速度
(其实最好的方法就是直接删掉这两个自动生成的方法,等要用的时候再写上)
3.上面所有的操作都是对Unity根据脚本模板自动生成的程序代码进行的修改,如果每一次创建脚本文件后都要修改脚本的话岂不是太麻烦了?
所以Unity允许我们直接修改脚本模板来一劳永逸,以下是修改脚本模板的方法:
一.找到Unity图标,右键选择属性,点开属性后点击打开文件位置
二.在打开的文件中找到Data文件夹,点击后选择Resources文件夹,点进去后选择ScriptsTemplates(脚本模板)文件
三.进去后选择81号文本文件,并用vs方式打开