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 —— 实例化对象

当实例化一个对象时,会同时实例化根对象的所有子类

时间: 2024-10-25 19:28:48

Unity API 解析(7)—— Object 类的相关文章

Unity API 解析 学习

1 Application类 2 Camera类 3 GameObject类 4 HideFlags类 5 Mathf类 6 Matrix4x4类 7 Object类 8 Quaternion类 9 Random类 10 Rigidbody类 11 Time类 12 Transform类 13 Vector2类 14 Vector3类 1 Application类 1 using UnityEngine; 2 using System.Collections; 3 4 public class

Unity API 解析(4)—— HideFlags 类

HideFlags 为枚举类,用于控制object对象的销毁方法以其在监视面板中的可视性   DontSave 保留对象到新场景 如果GameObject 对象被HideFlags.DontSave标识,则在新Scene中GameObject的所有组件将被保留下来,但其子类GameObject对象不会被保留到新scene中 不可对GameObject对象的某个组件如Transform进行HideFlags.DontSave标识,否则无效 即使程序已经退出,被HIdeFlags.DontSave

Unity API 解析(3)—— GameObject 类

GameObject 类是Unity场景中所有实体的积累.一个GameObject对象通常由多个组件component组成,且至少含有一个transform组件.   activeSelf 属性 -- GameObject的Active标识 activeInHierarchy 属性的功能是返回GameObject实例在程序运行时的激活状态,它只有当GameObect实例的状态被激活时才会返回true.而且它会受父类对象激活状态的影响.如果其父类至最顶层的对象中有一个对象未被激活,activeIn

Unity API 解析(9)—— Rigidbody 类

模拟 GameObject 对象在现实世界中的物理特性(重力,阻力,质量,速度) 对Rigidbody 对象属性的赋值代码通常放在脚本的OnFixedUpdate 方法中   collisonDetectionMode 属性 -- 碰撞检测模式 刚体的碰撞检测模式有3种 Discrete -- 静态离散检测模式 Continuous -- 静态连续监测模式 ,一般用在高速运动刚体的目标碰撞体上 ContinousDynamic -- 最强的连续动态检测模式 drag 属性 -- 刚体阻力 dra

Unity API 解析(10)—— Time 类

realtimeSinceStartup 属性 -- 程序运行实时时间   smoothDeltaTime 属性 -- 平滑时间间隔 主要用在 FixedUpdate 方法中需要平滑过渡的计算   time 属性 -- 程序运行时间 从游戏启动到现在

Unity API 解析(5)—— Mathf 类

此类属于结构体类型,只有静态属性和静态方法,不可实例化 Deg2Rad 属性 -- 从角度到弧度常量 (2*PI)/360 Rad2Deg 属性 -- 从弧度到角度常量 Infinity 属性 -- 正无穷大   Clamp 方法 -- 返回有限范围值 返回有范围限制的value值 ClosestPowerOfTwo -- 返回2的某次幂 用于返回最接近参数值value的2的某次幂的值 DeltaAngle -- 最小增量角度 (-180,180] InverseLerp -- 计算比例值 (v

Unity API 解析(6)—— Matrix4x4 类

通常用在如摄像机的非标准投影变换等   MultiplyPoint 方法 -- 投影矩阵变换 对点v进行投影矩阵变换 主要用于Camera的投影变换,对于一般物体的矩阵变换用MultiplyPoint3x4方法,不涉及投影变换,计算速度更快 MultiplyPoint3x4 -- 矩阵变换 MultiplyVector 方法 -- 矩阵变换 对方向向量v进行矩阵变换 using UnityEngine; using System.Collections; public class Multipl

Unity API 解析(2)—— Camera 类属性

aspect属性 -- 摄像机视口比例 public float aspect {get ; set ;} 用于获取或设置camera适口的宽高比例值 aspect 只处理摄像机可以看到的试图的宽高比例,而硬件显示屏的作用只是把摄像机的内容显示出来,当硬件显示屏的宽高比例与aspect的比例值不同时,视图将发生变形 using UnityEngine; using System.Collections; public class Aspect_ts : MonoBehaviour { void

Unity API 解析(9)—— Random 类

不可实例化,只有静态属性和静态方法 insideUnitCircle -- 园内随机点 返回半径为1的园内的随机点坐标,Vector2类型 insideUnitSphere -- 半径为1的球内的随机点坐标 onUnitShper  -- 半径为1的球表面的随机点的坐标 using UnityEngine; using System.Collections; public class insideUnitCircle_ts : MonoBehaviour { public GameObject