首页 > 代码库 > Unity API 解析(7)—— Object 类
Unity API 解析(7)—— Object 类
Object 类是Unity中所有对象的基类
GetInstanceID —— Object 对象ID
每个对象在工程中都有唯一的ID,并且从程序开始运行到结束,除非对象被销毁,否则每个实例对应的ID都不会改变
从GameObject.CreatePrimitive() 或 Object.Instantiate() 中创建或克隆的每个名字相同的GameObject对象都有唯一的ID
using UnityEngine;using System.Collections;public class GetInstanceID_ts : MonoBehaviour { void Start () { Debug.Log("gameObject 的ID"+gameObject.GetInstanceID()); Debug.Log("transform 的ID"+transform.GetInstanceID()); GameObject g1, g2; // 从GameObject 创建一个对象 g1=GameObject.CreatePrimitive(PrimitiveType.Cube); // 克隆对象 g2=Instantiate(g1,Vector3.zero,Quaternion.identity)as GameObject; Debug.Log("GameObject g1 的ID"+g1.GetInstanceID()); Debug.Log("Transform g1 的ID"+g1.transform.GetInstanceID()); Debug.Log("GameObject g2 的ID" + g2.GetInstanceID()); Debug.Log("Transform g2 的ID" + g2.transform.GetInstanceID()); }}
Destroy 方法 —— 销毁对象
public static void Destroy (Object obj, float t)
执行完本方法后t秒销毁对象(可以是对象也可以是组件)
DontDestroyOnLoad 方法 —— 新场景中保留对象
如果target为根物体的GameObject 对象或GameObject 对象中的某个组件,则物体自身及其子物体都会被导入到新的scene中
若想吧场景中某个子物体导入到新的scene中,可以用Transform.DetachChildren 方法进行父子层级关系分离,然后再导入新Scene中
FindObjectOfType 方法 —— 获取对象
获取工程中所有符合参数类型的对象,此方法需要遍历整个工程,执行速度慢,不适于在每帧中调用,对于遍历的结果可以通过对象的name或InstanceID进行选择处理
FindObjectOfType —— 获取工程中符合type类型的第一个对象,多用于检测工程中是否含有某种类型的对象
using UnityEngine;using System.Collections;public class FindObjectOfType_ts : MonoBehaviour { void Start () { GameObject[] gos = FindObjectsOfType(typeof(GameObject)) as GameObject[]; foreach(GameObject go in gos){ //1.5 秒后销毁除摄像机外的所有GameObject if (go.name != "Main Camera") { Destroy(go, 1.5f); } } Rigidbody[] rbs = FindObjectsOfType(typeof(Rigidbody))as Rigidbody[]; foreach(Rigidbody rb in rbs){ // 启用除球体外的所有刚体的重力感应 if(rb.name!="Sphere"){ rb.useGravity = true; } } }}
Instantiate —— 实例化对象
当实例化一个对象时,会同时实例化根对象的所有子类
Unity API 解析(7)—— Object 类