c# - 停止执行方法
问题描述
所以我有这种换色方法可以不断改变我的精灵的颜色。我的问题是我想在执行 OnMouseDown() 方法时暂停它。
我已经尝试过使用 if 和 return 语句。我也用布尔值尝试过,但它不起作用。
public class colorchange : MonoBehaviour
{
public int color;
private SpriteRenderer _mySpriteRenderer;
private float _timeBetweenChanges = 1f;
void Start()
{
_mySpriteRenderer = GetComponent<SpriteRenderer>();
InvokeRepeating("ChangeColor", 0F, _timeBetweenChanges);
}
void Update()
{
// not executed
}
void ChangeColor()
{
color = Random.Range(1, 5);
if (color == 2)
{
_mySpriteRenderer.color = Color.blue;
}
if (color == 3)
{
_mySpriteRenderer.color = Color.red;
}
if (color == 4)
{
_mySpriteRenderer.color = Color.yellow;
}
}
private void OnMouseDown()
{
// the Changecolor method should be paused in this one
}
}
解决方案
CancelInvoke
评论中提到的另一种替代方法是使用布尔值。
public class colorchange : MonoBehaviour {
private bool canChangeColor;
//...
private void ChangeColor() {
if (!canChangeColor) {
// You can even do something here if you like.
return;
}
// ...
}
private void OnMouseDown(){
canChangeColor = false;
}
}
虽然我强烈建议使用CancelInvoke
它,除非你需要它来做一些事情,如果它不能改变颜色。