文章目录
- 常用属性和方法
- 静态方法
- GameObject的GetInstanceID()和GetHashCode()
- 属性
- 方法
- 利用RequireComponent添加一个组件
- 静态方法
- 拓展HideFlags
常用属性和方法
静态方法
方法名 | 作用 |
Destroy( GameObject Obj,float f ) | 销毁对象,Obj是要销毁的对象,f是时间用来延时销毁,默认是0不写的时候表示立即销毁 |
DontDestroyOnLoad(GameObject Obj) | 加载到新场景时该物体 (Obj) 不会被销毁,但是要小心,要避免在场景切换回来时又执行一次, 最好加一个判断 |
FindObjectOfType() | 按类型查找游戏对象 T 是要查找的类型,比如Transform |
FindObjectsOfType() | 按类型查找多个游戏对象 T 是要查找的类型,比如Transform |
Instantiate(Object original); | original:用来做复制操作的对像物体,源对象 |
Instantiate(Object original, Transform parent); | parent:实例化对象的父对象,在完成实例化函数处理后,实例化对象将在父对象下,是父对象的子对象 |
Instantiate(Object original, Transform parent, bool instantiateInWorldSpace); | instantiateInWorldSpace:个值为TRUE,表示实例化对象相对于世界坐标系的位置不变,相对于父对象的坐标值变了。为false,表示实例化对象相对于父对象的坐标值不变,但在世界坐标系中的位置变了。 |
Instantiate(Object original, Vector3 position, Quaternion rotation); | position:实例化的对象的位置坐标,rotation:实例化的对象的旋转坐标(旋转四元数) |
Instantiate(Object original, Vector3 position, Quaternion rotation, Transform parent); | 实例化的对象的时候传入坐标值、角度值并设置父对象 |
GameObject的GetInstanceID()和GetHashCode()
这两个方法都是获取游戏对象的唯一ID标识。在做对象缓存池时,可以用到。
同一个Prefab,不管是Inspector挂上去的还是用Resource.Load()动态加载的,这个ID都是一样的。只有当Instantiate成对象之后,每个对象间的ID才会有区别。
不同的Prefab,ID是不一样的
两个方法获取到的值是一样的
属性
名称 | 作用 |
activeInHierarchy | 表示gameobject在场景中的是否显示,也就是说要使这个值为true,这个物体及其所有父物体(及祖先物体)的activeself状态都为true,若有一个父物体为false则为false。 |
activeSelf | 物体本身的active状态,对应于其在inspector中的checkbox是否被勾选。 |
isStatic | 这个是用于遮挡剔除,看是否一个对象能被看做一个静态的遮挡。 |
layer | 游戏对象的层 |
scene | 游戏对象的场景 |
tag | 游戏对象的标签 |
transform | 游戏对象的transform组件 |
Layer的概念:
一方面相机中可以设置是否渲染某layer
另一方面可以再raycast中设置是否忽略检测某layer。
layermask参数设置的一些总结:
1 << 10 打开第10的层。
~(1 << 10) 打开除了第10之外的层。
~(1 << 0) 打开所有的层。
(1 << 10) | (1 << 8) 打开第10和第8的层。
方法
名称 | 作用 |
AddComponent() | 添加组件,T 是要添加的组件类型 |
BroadcastMessage() | 将消息传递给对象和其所有子对象的所有脚本 |
SendMessage() | 将消息传递给对象的所有脚本 |
SendMessageUpwards() | 将消息传递给对象和其所有父对象的所有脚本 |
SetActive(bool b) | 改变的是物体自身的activeSelf状态,所以,对一个物体SetActive时,其在场景中可能不会被激活,因为其祖先物体可能存在未被激活的。 |
CompareTag(string s) | 判断标签是否和 s 相同 |
GetComponent() | 获得 T 组件的信息 |
GetComponentst() | 获得多个 T 组件的信息 |
GetComponentsInChildren(bool b); | T是组件类型 b为true,游戏对象下的子物体激活的没激活的都会被拿到,包括游戏对象本身 b为false 没激活的不会被拿到 |
GetComponentsInParent(bool b); | 同上,但是获取的是父对象 |
”SendMessage“、”SendMessageUpwards“、”BroadcastMessage“他们都有同样的参数
名称 | 作用 |
methodName | 用来接收的方法名 |
value | 是object类型,若是多个参数则可以通过传入object数组来进行 |
options | 可以不加,用来抛出错误 |
利用RequireComponent添加一个组件
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(Transform))]
[RequireComponent(typeof(PlayerController))]
RequireComponent作用是这个类一定需要哪些组件,如果目前这些组件没有被加上,就自动加上。
静态方法
名称 | 作用 |
CreatePrimitive() | 创建基本物体(比如正方体) 例如: |
Find(String s) | 通过对象Name来查找一个游戏对象,但是不能找到非激活的对象 |
FindWithTag(String s) | 通过标签来查找一个游戏对象,但是不能找到非激活的对象 |
FindGameObjectsWithTag(String s) | 通过标签来查找多个游戏对象,但是不能找到非激活的对象 |
拓展HideFlags
名称 | 作用 |
None | 默认情况,正常可见对象 |
HideInHierarchy | 在Hierarchy视图中隐藏,并且如果它保存在一个资源中,不会显示在Project视图中 |
HideInInspector | 在Inspector视图中隐藏,无法查看其相关的组件 |
DontSaveInEditor | |
NotEditable | 对象可以显示在Inspector视图中,但是不能被编辑 |
DontSaveInBuild | |
DontUnloadUnusedAsset | |
DontSave | 对象不会保存到场景中,当一个新的场景创建的时候也不会被销毁 |
HideAndDontSave | 是HideInHierarchy和DontSave的组合 |