产生这种原因是这个对象上有多个碰撞器,可能会多个碰撞器同时触发,以至于触发函数运行多次,解决这个问题,我们可以将触发函的运行内容设置为给一个布尔类型赋值,这样不论返回几次,返回ture便能进行之后的运算,最后再置为false:

  例如:

 修改前:

private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.tag == "Collection1")
{
Destroy(collision.gameObject);
Cherry += 1;

CherryNum.text = Cherry.ToString();
}

 修改后:

 bool istouch = false

private void OnTriggerEnter2D(Collider2D collision)
{
  istouch = true
}

if(istouch = true)

  Destroy(collision.gameObject);
  Cherry += 1;

  CherryNum.text = Cherry.ToString();

  istouch= false

 posted on 2021-04-08 21:01  雨落江州  阅读(3624)  评论(0编辑  收藏  举报