在Unity

时间:2016-07-21 06:00:14

标签: c# unityscript

我想用鼠标左键单击功能。所以基本上,我希望我的屏幕开始显示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;}

    }

在这里问这个问题是因为这个问题被标记为主题 - 游戏开发堆栈交换 - 他们建议我在这里提出问题。

1 个答案:

答案 0 :(得分:0)

当在两个以上不同的功能之间切换时,我建议使用这样的整数和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语句的编号,以便向列表中添加更多功能。