UnityAPI的学习——Object类

Object类是Unity中所有对象的基类、例如GameObject、Component、Material、Shader、Texture、Mesh、Font等都是Object的子类

Object类实例方法

在Object类中,涉及到的实例方法主要有GetInstanceID方法
GetInstanceID方法:Object对象ID
基本语法

public int GetInstanceID();

功能说明
此方法用来返回Object对象的实例化ID
1、每个Object对象的实例、Object子类的实例如GameObject、Component等以及Object子类的子类的实例例如Transform、Rigidbody等在工程中都有唯一的ID(int类型)。
并且从程序开始运行到结束,除非对象被销毁,否则每个实例对应的ID都不会改变

2、从GameObject.CreatePrimitive()或Object.Instantiate()中创建或克隆的每个名字相同的GameObject对象都有唯一的ID,即虽然名字相同,但ID却是不同的。在游戏开发中有时需要生成大量的物体,而每个物体的生命周期需要单独记录,此时这两种方法很有用

Object类静态方法

在Object类中,涉及的静态方法有Destroy方法、DontDestroyOnLoad方法、FindObjectOfType方法、FindObjectsOfType方法和Instantiate方法。

Destroy方法:销毁对象

基本语法

1public static void Destroy(Object obj);
2public static void Destroy(Object obj);
其中参数obj为待销毁的对象,参数t为销毁延迟时间,默认为0

功能说明
此方法的功能是在执行完本方法t秒后销毁obj对象。方法Destroy可以销毁一个GameObject对象,也可以销毁GameObject对象中的某个组件如Rigidbody、脚本等,但是除非销毁整个GameObject对象,否则不可单独销毁Transform组件,当销毁整个GameObject时GameObject的所有组件及子类将一并被消耗

注意DestroyImmediate可以立即销毁某个Object对象及其在Assets中的资源文件,编程中谨慎使用,建议使用Destroy方法代替

DontDestroyOnLoad方法:新场景中保留对象

基本语法

public static void DontDestroyOnLoad(Object target);
其中参数target为被保留的对象

功能说明:
此方法用于设置参数target指向的对象是否在新Scene中被保留下来。
1、如果target为根物体的GameObject对象或GameObject对象中的某个组件,则物体自身及其子物体都会被导入到新Scene中,当然它们也可以在新Scene中进行编辑操作。
2、如果target不为根物体的GameObject对象或GameObject对象中的某个组件,则此方法将失效,即target及其子物体不会被导入到Scene中。
若想把场景中某个子物体导入到新Scene中,可以用Transform.DetachChildren方法进行父子层次关系分离,然后再导入新Scene中

FindObjectsOfType方法:获取对象

基本语法

1public static T[] FindObjectsOfType<T>() where T:Object;
2public static Object[] FindObjectsOfType(Type type);
其中参数type为要获取的对象类型,可以是GameObject类型或Component类型。

功能说明:
此方法用于获取工程中所有符合参数类型的对象。不过此方法需要遍历整个工程,执行速度较慢,不适宜在每帧中调用。对于遍历的结果可以通过对象的name或InstanceID等属性进行有选择地处理。

FindObjectOfType方法与此方法功能相近,用于获取工程中符合type类型的第一个对象,多用于检测工程中是否含有某种类型的对象

Instantiate方法:实例化对象

基本语法

1public static Object Instantiate(Object original);
2public static Object Instantiate(Object original , Vector3 position , Quaternion rotation);
其中参数original为实例化对象的类型,参数position为实例化对象的位置,参数rotation为实例化对象的旋转角度

功能说明
此方法用于实例化一个Object对象。Instantiate可以实例化Object、object的子类已经Object子类的子类等。
当实例化一个对象时,会同时实例化根对象的所有子类

  • 18
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值