Unity销毁物体

销毁物体

三种方式,各有不同

使用SetActive

中文文档
使用 gameObject.SetActive(bool);设置物体的显示或者隐藏来大小销毁的效果,但它还是存在的,在Hierarchy中还是可以找到他的。
作用就像是点击Inspector中的物体名称前面的对勾。

//使用方式
 gameObject.SetActive(true);//显示
  gameObject.SetActive(false);//隐藏

他会再次执行Enable方法,不会执行Awake和Start方法。

使用Destroy()

中文文档
正经销毁物体在Hierarchy面板中找不到对应的gameobject了。
使用这种方式会在再次产生这个gameObject的时候运行Awake方法和Start方法。

使用方式
Destroy(gameObject);//销毁有一个物体                
Destroy(gameObject.GetComponent<InputField>());//不销毁物体但是会删除gameObject上的InputField的组件
 Destroy(gameObject,0.5f);//单位是秒,在0.5秒之后销毁gameObject

在内存中没有消失

使用DestroyImmediate()

中文文档
立即销毁gameObject,在内存中也会消失。
使用这种方式会在再次产生这个gameObject的时候运行Awake方法和Start方法。

//使用方式
                DestroyImmediate(gameObject);//销毁gameObject,在内存中也会消失

官方不建议使用这个的东西

销毁某个父物体下的子物体

主要是DestroyImmediate(gameObject);和Destroy(gameObject);的区别。

方式_1

使用DestroyImmediate(gameObject);

            for (int i = 0; i < father.childCount; i++)
            {
                DestroyImmediate(father.GetChild(0));
           }

方式_2

使用Destroy(gameObject);

    for (int i = 0; i < father.childCount; i++)
            {
                Destroy(father.GetChild(i));
           }

主要区别是在for中的的 Destroy(Factory.GetChild(0));的Factory.GetChild(0)参数的不同。

  • 5
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity中,销毁物体的计数可以通过以下几种方法实现。 第一种方法是使用变量进行计数。我们可以使用一个整型变量来记录销毁物体数量。当需要销毁一个物体时,将计数值加一。例如,在销毁一个物体的函数中,可以使用一个整型变量count来记录销毁物体数量,代码如下: ``` int count = 0; void DestroyObject(GameObject obj) { Destroy(obj); count++; } ``` 第二种方法是使用静态变量进行计数。静态变量是指在类中声明的变量,可以在类的所有实例之间共享。我们可以在一个类中声明一个静态整型变量来记录销毁物体数量。当需要销毁一个物体时,将静态计数值加一。例如: ``` public class ObjectManager : MonoBehaviour { public static int count = 0; public void DestroyObject(GameObject obj) { Destroy(obj); count++; } } ``` 使用上述方法,我们可以在其他地方通过访问count变量来获取销毁物体数量。 第三种方法是使用Unity的计时器来实现。我们可以使用Invoke函数在一定时间后执行一个特定的方法,通过该方法来统计销毁物体数量。例如: ``` float delay = 5.0f; // 设置一个延迟时间,例如5秒 void DestroyObject(GameObject obj) { Destroy(obj); Invoke("CountObjects", delay); } void CountObjects() { int count = GameObject.FindObjectsOfType(typeof(GameObject)).Length; Debug.Log("销毁物体数量:" + count); } ``` 以上是三种常用的计数方法,使用任何一种都可以实现统计Unity销毁物体的数量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值