当前位置:   article > 正文

UnityAPI的学习——Object类_unity object

unity object

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

Object类实例方法

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

public int GetInstanceID();
  • 1

功能说明
此方法用来返回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
  • 1
  • 2
  • 3

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

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

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

基本语法

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

功能说明:
此方法用于设置参数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类型。
  • 1
  • 2
  • 3

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

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

Instantiate方法:实例化对象

基本语法

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/395974
推荐阅读
相关标签
  

闽ICP备14008679号