c# - 如何一次销毁多个游戏对象?
问题描述
我试图弄清楚我如何能够基本上站在压力板上并让阻碍的东西消失。我正在努力销毁您与之交互的对象,但没有找到任何解决方案来销毁另一个对象。
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.gameObject.CompareTag("PressurePlate"))
{
Destroy(collision.gameObject.CompareTag("tree"));
}
}
解决方案
Destroy(Object)
接受一个对象,更具体地说,一个组件或一个游戏对象;
(尽管如果您尝试破坏布尔值,就像您在这种情况下所做的那样,但不会发生任何事情;尽管有人可以纠正我。)
如果你想摧毁它所碰撞的游戏对象,Destroy(collision.gameObject)
那就去做吧。
如果你想销毁所有带有特定标签的游戏对象,你可以这样做GameObject.FindGameObjectsWithTag(tag)
,像这样:
foreach (var gameObj in GameObject.FindGameObjectsWithTag("Your target tag")){
Destroy(gameObj);
}
还有一些其他方法Object.FindObjectsOfType(Type)
,您可以使用它们来获取具有特定类型的所有游戏对象。
但是由于它们通常很慢,因此除非您需要,否则我不强烈建议您使用它们;
您可以考虑先在某处缓存相应的游戏对象,然后再销毁它们。
推荐阅读
- c# - 以更简单的方式使用枚举扩展
- php - 查询在 wp_get_recent_posts() 中不起作用
- javascript - 请 onkeyup ajax 两次发布到 sql
- java - 具有多种类型的泛型类会生成错误
- c++ - 在 C++ 中使用 snprintf 函数仍然安全吗?
- java - 流 API 分组
- google-people-api - 我们可以更改谷歌服务帐户的电子邮件地址吗?
- soapui - 使用 API 在 PC 上安装应用程序 - 我们如何识别端点以从 Internet 访问 API
- mysql - MySQL 是否支持“error_on_nondeterministic_update”之类的参数?
- reactjs - 在反应中实现自定义无限滚动