Unity API详解——Object类

Object类是Unity中所有对象的基类,例如GameObject、Component、Material、Shader、Texture、Mesh、Font等都是Object的子类。本博客介绍Object类的一些实例方法和静态方法。

一、Object类实例方法

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

1、基本语法

public int GetInstanceID();

2、功能说明

此方法用来返回Object对象的实例化ID
每个Object对象的实例、Object子类的实例如GameObject、Component等以及Object子类的子类的实例如Transform、Rigidbody等工程中都有唯一的ID(intl类型)。并且从程序开始运行到结束,除非对象被销毁,否则每个实例对应的ID都不会改变。
从GameObject.CReatePrimitive()或Object.Instantiate()中创建或克隆的每个名字相同的GameObject对象都有唯一的ID,即虽然名字相同,但ID却是不同的。在游戏开发中有时需要克隆大量的物体,而每个物体的声明周期需要单独记录,此时这两种方法很有用

3、代码实现

using System;
using System.Collections;
using System.Collections.Generic;
using System.Numerics;
using UnityEngine;

public class GetInstanceID_test : MonoBehaviour
{
    void Start()
    {
        Debug.Log("gameObject的ID:" + gameObject.GetInstanceID());
        Debug.Log("tranform的ID:" + transform.GetInstanceID());

        GameObject g1, g2;
        //从GameObject创建一个对象
        g1 = GameObject.CreatePrimitive(PrimitiveType.Cube);
        //克隆对象
        g2 = Instantiate(g1, UnityEngine.Vector3.zero, UnityEngine.Quaternion.identity) as GameObject;

        Debug.Log("GameObject g1的ID:" + g1.GetInstanceID());
        Debug.Log("Tranform g1的ID:" + g1.transform.GetInstanceID());

        Debug.Log("GameObject g2的ID:" + g2.GetInstanceID());
        Debug.Log("tranform g2的ID:" + g2.transform.GetInstanceID());
    }

}

在这里插入图片描述

二、Object类静态方法

在Object类中,设计的静态方法有Destroy方法、DontDestroyOnLoad方法、FindObjectOfType方法、FindObjectsOfType方法和Instantiate方法,FindObjectOfType方法和FindObjectsOfType方法功能相似

1、基本语法

(1)public static void Destroy(Object obj);
(2)public static void Destroy(Object obj,float t);

其中参数obj为待销毁的对象,参数t为销毁延迟时间,默认为0

2、功能说明

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

notes:与此方法功能相似的方法有DestroyIMMediate和DestroyObject。其中方法DestroyImmediate可以立即销毁某个Object对象及其在Assets中的资源文件,编程中慎用,推荐使用Destroy方法代替。

3、代码实现

using System;
using System.Collections;
using UnityEngine;

public class Destroy_test : MonoBehaviour
{
	public GameObject GO,Cube;
    void Start()
    {
        //5秒后销毁GO对象的Rigidbody组件
        Destroy(GO.rigidbody,5.0f);
        //7秒后销毁GO对象的Destroy_ts脚本
        Destroy(GO.GetCompoent<Destroy_ts>(),7.0f);
        //10秒后销毁Cube对象,同时Cube对象的所有组件及其子类将一并销毁
        Destroy(Cube,10.0f);
    }

}

在这段代码中,首先声明了两个变量GO和Cube,然后再Start方法中一次销毁了GO独享的RIgidbody组件、GO对象的脚本组件和Cube对象。运行程序可以发小,销毁对象的某个组件时,对象自身不会被销毁,但销毁某个对象时,其所包含的组件将一并销毁。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客范儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值