栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > 其他

Unity销毁物体

其他 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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());//不销毁物体但是会删除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)参数的不同。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/905818.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号