在 Unity 中的功能之间切换

Toggle between function in Unity

我想通过单击鼠标左键在功能之间切换。所以基本上,我希望我的屏幕开始显示 func1func1 已激活),然后当您按下鼠标左键时 func1 被停用并且 func2 被激活, 然后当您再次按下鼠标左键时 func2 被停用并且 func3 被激活 当您再次按下鼠标左键时 func3 被停用并且 func1 被激活并且这一直在循环。

bool tappedOnce = true;
    bool tappedTwice = false;
    bool tappedThrice = false;

    void func1() {print("func1");}
    void func2() {print ("func2");}
    void func3() {print ("func3");}
    void toggle()
    {
       if (Input.GetKeyDown(KeyCode.Mouse0)&& tappedOnce == false){tappedOnce = true; func1();}

       if (Input.GetKeyDown(KeyCode.Mouse0)&& tappedOnce && tappedTwice == false ){func2(); tappedTwice = true;}
       if (Input.GetKeyDown(KeyCode.Mouse0)&& tappedOnce && tappedTwice && tappedThrice == false){func3(); tappedOnce = false; tappedTwice = false;}

    }

在这里提问是因为这个问题在游戏开发堆栈交换上被标记为题外话,他们建议我在这里提问。

当在两个以上的不同功能之间切换时,我建议使用整数和 switch case 语句,如下所示:

using UnityEngine;
using System.Collections;

public class MouseTest : MonoBehaviour {

//conditional
private int clickNumber;

//run code
void Update () 
{
    toggle();
}

//methods to run
void func0() {Debug.Log ("func0");}
void func1() {Debug.Log ("func1");}
void func2() {Debug.Log ("func2");}
void func3() {Debug.Log ("func3");}

//conditional code
void toggle()
{
    if(Input.GetMouseButtonDown(0))
        clickNumber += 1;

    switch (clickNumber)
    {
    case 0:
        func0();
        break;

    case 1:
        func1();
        break;

    case 2:
        func2();
        break;

    case 3:
        func3();
        break;

    default:
        break;
    }

    //set clickNumber to 0 when greater than the number of methods
    if(clickNumber > 3)
        clickNumber = 0;
}

}

更改最后一个 if 语句的编号以将更多函数添加到列表中。