首页 > 代码库 > 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 类