如何在 while 循环中无限循环数字? (Unity3D-unityscript)

How to infinite loop numbers in while loops? (Unity3D- unityscript)

function OnMouseDown () {
    rotationNumber +=1;
}

function Update () {
    while (rotationNumber == 1) {
        gameObject.GetComponent(SpriteRenderer).sprite = leftArrow;
        return;
    } 
    while (rotationNumber == 2) {
        gameObject.GetComponent(SpriteRenderer).sprite = upArrow;
        return;
    }
    while (rotationNumber == 3) {
        gameObject.GetComponent(SpriteRenderer).sprite = rightArrow;
        return;
    }
    while (rotationNumber == 4) {
        gameObject.GetComponent(SpriteRenderer).sprite = upArrow;
        rotationNumber = 1;
        return;
    }
}

我想循环播放,但是当我第四次单击它时,它直接转到第一张图片。我试过 yield WaitForSeconds 但它没有用。

我不太确定为什么要在更新循环中使用 while 循环,但请在下面尝试。每次单击时,旋转次数都会增加并且精灵会发生变化,直到 rotationNumber 变量 > 4 在这种情况下,它 会将变量重置回 1 .

function Update()
{
    if(rotationNumber == 1)
    {
         gameObject.GetComponent(SpriteRenderer).sprite = leftArrow;
    }else if(rotationNumber ==2)
    {
         gameObject.GetComponent(SpriteRenderer).sprite = upArrow;  
    }else if(rotationNumber ==3)
    {
         gameObject.GetComponent(SpriteRenderer).sprite = rightArrow;
    }else if(rotationNumber == 4)
    {
        gameObject.GetComponent(SpriteRenderer).sprite = upArrow;  
    }else if(rotationNumber > 4)
    {
        rotationNumber = 1;
    }
}

问题是您在 while 循环内将 rotationNumber 设置为 1。这样做:

function OnMouseDown () {
    rotationNumber += 1;
    if ( rotationNumber > 4 ) rotationNumber = 1;
}

function Update () {
    while (rotationNumber == 1) {
        gameObject.GetComponent(SpriteRenderer).sprite = leftArrow;
        return;
    } 
    while (rotationNumber == 2) {
        gameObject.GetComponent(SpriteRenderer).sprite = upArrow;
        return;
    }
    while (rotationNumber == 3) {
        gameObject.GetComponent(SpriteRenderer).sprite = rightArrow;
        return;
    }
    while (rotationNumber == 4) {
        gameObject.GetComponent(SpriteRenderer).sprite = upArrow;
        return;
    }
}