因此,我尝试创建此脚本,该脚本在执行OnMouseDown()方法时会更改精灵的颜色。颜色更改应每2秒执行一次。在下面提供的此代码中,由于某种原因,颜色仅更改一次。
我已经尝试过协程。但是由于某些原因,它们没有起作用。
请帮助谢谢,
public bool startstop = false;
SpriteRenderer m_SpriteRenderer;
IEnumerator Changecolor() {
yield return new WaitForSeconds(3);
int random = Random.Range(1, 4);
if (random == 1) {
this.m_SpriteRenderer = this.GetComponent<SpriteRenderer>();
this.m_SpriteRenderer.color = Color.blue;
} else if (random == 2) {
this.m_SpriteRenderer = this.GetComponent<SpriteRenderer>();
this.m_SpriteRenderer.color = Color.red;
} else if (random == 3) {
this.m_SpriteRenderer = this.GetComponent<SpriteRenderer>();
this.m_SpriteRenderer.color = Color.green;
} else {
this.m_SpriteRenderer = this.GetComponent<SpriteRenderer>();
this.m_SpriteRenderer.color = Color.yellow;
}
this.StartCoroutine("Changecolor", 3f);
}
private void OnMouseDown() {
if (this.startstop) {
this.StartCoroutine("Changecolor", 3f);
this.startstop = !this.startstop;
} else {
this.StopCoroutine("Changecolor");
this.startstop = !this.startstop;
}
}
}
没有错误就是行不通。
您的代码是正确的,除了没有调用OnMouseDown()
函数外,没有任何问题,因为您没有单击任何框式触发器或任何UI元素。因此,尝试使用如下所示的更新功能:
您在对象上有Collider
吗?要触发Collider
事件,需要使用OnMouseDown
。