我想通过单击鼠标左键在功能之间切换。所以基本上,我希望我的屏幕开始显示
func1
(func1
被激活),然后当您按下鼠标左键时 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 语句的编号以向列表中添加更多函数。