Unity 删除物体组件(Destroy用法)
文章目录1. 前言2. 解决办法2.1 Destroy()用法:2.2 代码1. 前言针对于使用Instantiate直接生成的GameObject,其中包含了前物体的碰撞体(MeshCollider) ,而这个组件与当前生成的新物体是不搭的,故需要重新生成。2. 解决办法2.1 Destroy()用法:直接用Destroy函数//直接删除物体Destroy(Object);//定时删除物体 De
文章共668字 · 阅读需要大约3分钟
一键AI生成摘要,助你高效阅读
问答
·
1. 前言
- 针对于使用
Instantiate
直接生成的GameObject,其中包含了前物体的碰撞体(MeshCollider) ,而这个组件与当前生成的新物体是不搭的,故需要重新生成。
2. 解决办法
2.1 Destroy()用法:
- 直接用Destroy函数
//直接删除物体 Destroy(Object); //定时删除物体 Destroy(待删除物体, 执行等待时间); Destroy(Object, 2); //删除物体上挂载的脚本 即当前脚本 Destroy(this); //删除某一个组件(不局限于脚本 因脚本也是一种组件) Destroy(transform.GetComponent<createprim>()); //立马删除物体 DestroyImmediate(Object); //跳转场景时不删除某物体 DontDestroyOnLoad(Object);
注意 Destroy()并非立即执行,如需要立即对销毁操作执行,应采用DestroyImmediate()
2.2 代码
- 采用 Destroy() 方法进行删除,再重新根据具体Mesh创建MeshCollider组件
//重新生成MeshCollider
Destroy(part.GetComponent<MeshCollider>());
part.AddComponent<MeshCollider>();
3. 补充
- 除了销毁物体,还可以将物体设置为不显示,这样做的好处在于,可以随时将物体重新“召唤”回到场景中。
gameobject.SetActive(false);//设置不显示
gameobject.SetActive(true);//设置显示
更多推荐
已为社区贡献1条内容
所有评论(0)