Unity脚本 --- 常用API(类)--- GameObject类 和

第一部分 --- GameObject类

1.在Hierarchy 层级面板中添加游戏物体其实就相当于在场景中添加游戏物体

2.每一个场景都有一个自己的Hierarchy层级面板,用来管理场景中的所有游戏物体

3.是的,我们可以创建多个场景

1.首先上面这两个变量都是布尔变量,activeSelf指的是局部激活状态, 这个状态的具现化方式:

S一.在Hirarchy层级点击游戏对象,然后inspector层级出现游戏对象对应的面板,此时在游戏对象名旁边会有一个小框,框中勾上的时候activeSelf为true,反之为false

 2.上面这两个变量之间的区别就是第一个变量是可读可写,另一个变量是只读不写

但是在平时我们如果想要激活或者关闭一个游戏物体的话,我们使用到的属性是:

3.禁用一个游戏物体有两种可能性:一种是将游戏物体的inspector界面处的游戏物体名旁边的钩给取消掉,还有一种是将该游戏物体的父物体的钩取消掉(如果有父物体的话) 

4.第一种禁用方式和第二种禁用方式是有区别的,这个区别就引出了 activeHirarchy 和 activeSelf的区别:一个游戏物体的激活状态有两种,一种是其在场景中的实际激活状态,一种是其一开始设定的局部激活状态(通过游戏对象名旁有没有钩来表现)

当一个游戏物体没有父物体的时候,其实际激活状态与局部激活状态同步(即有钩,且在场景中为激活,反之就是未激活)

但是当有游戏物体时就不一定了,当游戏物体的局部激活状态为有钩,且其父物体处于激活状态时,游戏物体的实际激活状态才为true,除此之外都为false

一个反应的是物体在场景中的实际激活状态(可读可写,一般不写只读)

一个反应的是物体在inspector面板中的激活状态(钩是否钩上?) 

在括号里写 true 或者 false上面这段代码的是在给游戏物体挂载一个组件 --- 在尖尖括号里的就是组件的名字

这段代码在添加完组件之后会返回一个指向已添加组件的引用

1.创建游戏物体,并用引用指向它

2.给游戏物体添加光组件,并用引用接收返回过来的指向光组件的引用

3.有了指向组件的引用之后,我们就可以通过这个引用去调节组件中的属性和调用其中的方法(组件就是一个对象,对象是通过类实例化的) 

 这个方法的功能很直接,就是在场景中的所有游戏物体中找到那个与输入名称相同的游戏对象名,但为什么不建议使用呢?

就是因为它太强大了,每一次查找游戏物体都需要逐个遍历,非常的消耗时间和性能

简单描述一下就是大海捞针

注意一下 --- Transform类中的Find方法和GameObject类中的Find方法之间是有区别的,第一个只能够查找子物体中的transform组件并返回引用,而第二个则是任意一个游戏物体都能查找到并返回引用

除此之外,这个方法还是挺好用的 --- 通过标签来查找物体 

找到后返回的是一个引用数组 -- 数组的类型是GameObject 

 

加载新场景的时候旧场景中的游戏对象会被清除,但使用上面这个方法能使我们指定的对象在这个过程中不被清除 

 

上面这个方法最大的特点就是根据类型来查找对象 --- 比如你是通过MeshRendderer类实例化的对象(就是MeshRendderer组件),那么这个方法就能够找到你,并返回一个指向你的引用

(PS:第二个方法返回的是一个引用数组) 

注意Destroy不仅仅可以销毁对象,还可以销毁脚本,游戏物体,资源...等等,基本就是传什么就消什么

(PS:当一个组件 / 脚本挂载到游戏对象上之后,这个脚本 / 组件就完成了从实例化到对象的过程) 

猜你喜欢

转载自blog.csdn.net/qq_51947882/article/details/128725035